1、为什么子类的所有构造方法的第一行都有一个super()默认访问父类的空参构造,而不是带参构造?
2、 == 和 equals()的区别是什么?
区别:
==号:是比较运算符,既可以比较基本类型,也可以比较引用类型。
比较基本类型,比较的值。比较引用类型,比较的是地址值。
equals(): 是一个方法,只能比较引用类型。(Object类中的equals()方法默认比较的是地址值,没有意义,子类一般都会重写这个方法)
他们的相同点是:返回值都是boolean类型。
3、地址值的组成是什么?
全类名 , @符号, 该对象的哈希值(该对象的哈希码的无符号的十六进制形式)。
4、字符串初始化完毕后其值不能发生改变,这句话对吗?
对。这里的不能改变,指的是常量池中的值不能发生改变,而不是String类型的引用不能发生改变。
String str = "abc";
str = "bcd";
5、如下代码,执行结果是什么?
String str = "abc";
String str2 = new String("abc");
System.out.println(str == str2); //false
System.out.println(str.equals(str2)); //true
6、String str2 = new String("abc");这行代码创建了几个对象?
7、"" 和 null 的区别是什么?
""是字符串类型的对象,只不过值为空。
null是空常量,并没有创建对象。
8、字符串,数组,集合分别如何获取长度?
9、 StringBuffer 和 StringBuilder 的默认初始容量是多少?
16
10、String,StringBuffer,StringBuilder三者的区别是什么?
String和其他两个类型的区别:
String是长度固定的字符串,而其他两个是长度可变的字符串。
StringBuffer,StringBuilder 的区别是:
StringBuffer: JDK1.0以后出现的,线程安全(同步)的,效率低。
StringBuilder: JDK1.5以后出现的,线程不安全(不同步),效率高。 |
|