-
Integer 与 int 有什么区别?
答:Integer是引用数据类型,默认值是null。int是基本数据类型,默认值是0。Integer是int的封装类,提供了一些操作数据的方法。 -
作用域 public,private,protected,以及default有什么区别?
作用域 | 当前类 | 同一package | 子类 | 其他package |
---|---|---|---|---|
public | √ | √ | √ | √ |
protected | √ | √ | √ | × |
default | √ | √ | × | × |
private | √ | × | × | × |
- String,StringBuffer和 StringBuilder使用equals()方法比较对象有什么区别?
直接上代码测试:
public class TestMain {
public static void main(String[] args) throws Exception {
String a = new String("TEST");
String b = new String("TEST");
System.out.println(a.equals(b));
StringBuffer stringBuffer = new StringBuffer("TEST");
StringBuffer stringBuffer1 = new StringBuffer("TEST");
System.out.println(stringBuffer.equals(stringBuffer1));
StringBuilder stringBuilder = new StringBuilder("TEST");
StringBuilder stringBuilder1 = new StringBuilder("TEST");
System.out.println(stringBuilder.equals(stringBuilder1));
}
}
运行结果如下:
得出结论,String类重写了equals()方法,所以结果是相等的,而StringBuffer类和StringBuilder类没有重写equals()方法,所以结果是false。
-
如何把一段逗号分割的字符串转换成一个数组?
答:通过String类的split()方法。 -
数组有没有 length()这个方法? String 有没有 length()这个方法?
答:数组没有这个方法,但是有这个属性。String有这个方法。 -
String var="aa"和String var=new String(“aa”)一样么?
答:不一样,他们内存的分配方式不同。String var="aa"这个方式的var变量的引用对象"aa"会被虚拟机直接分配到常量池里,String var=new String(“aa”)这个方式用new关键字创建了对象,所以会被虚拟机分配到堆内存中。 -
抽象类必须要有抽象方法么?
答:不需要。抽象类没有抽象方法,一样能正常运行。 -
普通类和抽象类有什么不同的?
答:普通类不能有抽象方法,可以实例化。抽象类可以有抽象方法,但是不能实例化。 -
接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可以继承具体类(concrete class)?抽象类中是否可以有静态的main 方法?
答:接口可以继承接口。抽象类可以实现接口。抽象类可以继承具体类。抽象类中可以有静态的main 方法。除了不能实例化和可以有抽象方法外,抽象类其他的行为都和普通类一样。 -
写 clone()方法时,通常都有一行代码,是什么?
答:super.clone(),如下图:
要这样的的原因是子类要先把父类中的成员复制到位,才能复制自己的成员。