1.String s = “123”;这个语句有几个对象产生?
1 个或 0 个。若字符串常量池(JDK7 + 在堆中)中已存在 “123”,则直接引用,不产生新对象;若不存在,则在常量池创建 “123” 对象,引用赋值给s,产生 1 个对象。
2.面向对象的三大特性是什么?
封装:将数据和方法封装在类中,隐藏内部实现细节,仅通过公共接口访问,提高安全性和复用性。继承:子类继承父类的属性和方法,实现代码复用,同时子类可扩展或重写父类功能。多态:父类引用指向子类对象,提高代码灵活性和扩展性。
3.位运算有哪几种? 分别是什么意思
&(按位与):两个二进制位都为 1 则结果为 1,否则为 0。
|(按位或):两个二进制位有一个为 1 则结果为 1,否则为 0。^(按位异或):两个二进制位不同则结果为 1,相同则为 0。
~(按位非):对二进制位取反(0 变 1,1 变 0)。
<<(左移):将二进制位向左移动指定位数,右边补 0。
>>(右移):将二进制位向右移动指定位数,左边补符号位(正数补 0,负数补 1)。
4.String和StringBuffer,StringBuilder的区别有哪些?
可变性:String:不可变(底层 char 数组被final修饰),修改会创建新对象。StringBuffer 和 StringBuilder:可变(底层 char 数组无final,可扩容修改)。
线程安全:StringBuffer:线程安全。StringBuilder:线程不安全。
效率:StringBuilder > StringBuffer > String。
5.String字符串的不可变是指哪里不可变?
指字符串底层的字符数组不可被修改。当对String进行拼接、替换等操作时,不会修改原数组,而是创建新的字符数组和String对象。
6.子类实例初始化是否会触发父类实例初始化?
会。子类构造器的第一行默认隐含super()(调用父类无参构造),若显式调用super(...)则按指定参数调用父类构造器。父类实例初始化完成后,才执行子类初始化逻辑。
4万+

被折叠的 条评论
为什么被折叠?



