Java基础部分常见面试题Part3

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(...)则按指定参数调用父类构造器。父类实例初始化完成后,才执行子类初始化逻辑。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值