(面试题)
1代码块(1)执行顺序
静态代码块-->构造代码块-->构造方法
(2)注意事项
静态代码块只执行一次
2.final是一个关键字,可以用于修饰类,成员变量,成员方法。
它修饰的类不能被继承
它修饰的成员变量是一个常量
它修饰的成员方法是不能被子类重写的
值得注意的是:final修饰的变量的引用不能改变,而引用所对应的值可以改变
3.==和equals()的区别?
==:
可以比较基本类型,也可以比较引用类型
比较基本类型,比较的是值是否相同
比较引用类型,比较的是地址值是否相同
equals:
只能比较引用类型
默认情况下,比较的是地址值是否相同
如果想比较内容,请自己重写Object类的equals()方法
一句话概括:
java中的String是final类,final类是共享数据的,而java中==比较的是内存地址,而final类的String相同字符串,指向的是同一个地址!
详细:
“==”在任何时候都是比较地址,这种比较永远不会被覆盖。
java中的String类是final类,final修饰类,被final修饰的类将不能被继承。final类中的方法也都是final的。
对象一旦创建属性就不会改变,不变模式可以实现对象的共享(可以用一个对象实例赋值给多个对象变量)。
4.浅谈字符与字符串
'A'~'z'都是字符,而''为字符串(中间什么都没有),而' '为字符(因为中间有一个空格,也算字符)
5.String和StringBuffer的区别?
String的长度固定
StringBuffer的长度可变
StringBuffer和StringBuilder的区别?
StringBuffer的线程安全,效率低
StringBuilder的线程不安全,效率高