每天三道面试题2019-09-18

1、使用"“和new String(”")创建String对象的区别

1、使用"“创建的String对象时,jvm会先判断在字符串常量池中是否存在相同值得字符串,如果存在,则返回该字符串在字符串常量池中的地址,否则在常量池中创建字符然后返回地址;
2、使用new String(”")创建字符串时,也会先去字符串常量池中判断有无相同值得字符串,如果没有,则先在常量池中创建一个这样的字符串,然后再在堆中创建一个对象,返回对象在堆中的地址;如果常量池中有,则直接在堆中创建对象,返回堆中的地址。

2、使用+操作符和StringBuilder中的append()方法拼接字符,哪个性能好?

使用+操作符拼接字符串,经过反编译后显示使用的是StringBuilder的append()方法对字符串进行拼接,如:

String s = “a” + "b";

最后会变成

String s = new StringBuilder("a").append("b").toString();

此时在性能上两者没有差别。

但是如果使用循环赋值,如:

String s = "";
for(int i = 10; i < 10; i++){
	s += i;
}

最后会变成

String s = "";
for(int i = 10; i < 10; i++){
	s = new StringBuilder(s).append(i).toString();
}

由此可见,没经过一次遍历都会产生一个新的StringBuilder对象,这样会浪费更多的资源和消耗更多的性能。

所以在性能上,使用StringBuilder的append方法会好些(不可和+混用,否则没有意义),但是对于代码的可读性而言,使用+操作符更加妥当。

3、java中的基本类型数据有哪些,各占几个字节?

1个字节:byte、boolean
2个字节:short、char
4个字节:int、float
8个字节:long、double

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值