其他分享
首页 > 其他分享> > String类中关于"=="号和equals区别的问题(五)

String类中关于"=="号和equals区别的问题(五)

作者:互联网

String s1="ab";
String s2="abc";
String s3=a1+"c";
System.out.println(s3==s2);
判断输出的是true还是false

答案是false
这是原理图

这是API原话
一旦出现+ 就会调用底层的StringBuffer或者StringBulider类中的apand方法实现连接,然后用toString方法显示出来,所以他是堆区的;
但是排除常量优先机制(就是多个常量用+号连接,例如String s4="a"+"b"+"c",它在编译的时候就是abc了,然后再把abc赋值给s4)那么这样如果输出
System.out.print(s4==s2)显示的是ture

标签:abc,String,s2,equals,s4,字符串,连接,类中
来源: https://www.cnblogs.com/1930110419lx/p/15212663.html