永发信息网

java关于String问题

答案:2  悬赏:0  手机版
解决时间 2021-04-02 20:44
java关于String问题
最佳答案
final String s1 = "a";
String s2 = s1 + "b";
String s3 = "a" + "b";
System.out.println(s2 == "ab");
System.out.println(s3 == "ab");稍微一改两个都是true,这是什么原因,这是编译器优化的原因。



在编译期能确定的值,会被编译器优化,例如两个确定的字符串相加。
String s1 = "a"+"b";
编译器会优化成 String s1 = "ab";
追问我想问的是s2不也是“ab”吗
为什么是false追答你不知道字符串常量池吗?
String s1 = "ab";
String s2 = new String("ab");
System.out.println(s1 == s2);//false
System.out.println(s1.equals(s2));//true

==比较是否为同一个对象。
equals比较对象是否相等。追问为什么加上final 就是true呢?追答加上final说明s1不能再变化了,那么编译器会把s1优化成"a"。追问提交追问非常感谢
追答不客气
全部回答
第一句打印false是因为s1为引用类型的值 需要在运行时才能确定具体的值是多少
第二句打印true是因为“a”和“b”都是确定值的常量,在编译阶段会进行优化 也就是说在编译期就已经确定了s3的值为“ab”了
等与不等就是看能不能在编译器就确定各个变量的值
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
要一组lol五人开黑id 最好带英文,够霸气,后
中国第二大广场?
农村土地征用费每亩多少钱
含油轴承铰刀绞内孔会有什么影响
昨晚得航班取消了,但我领可登机牌,登机牌不
生化危机4ADA模式的打字机
平安车险送保养敢用吗
测量力的大小的工具叫做________.弹簧受到的
zg锥螺纹怎么计算大小头尺寸
会沿着线走的挖掘机的名字叫什么
下列能体现中华民族自强不息精神的名言有①常
说一个人厚黑是什么意思
一个老头去4s店,买车,被店员羞辱,结果5太
some用于英语中哪些地方
WhatdoIshouhimaround
推荐资讯
微舞app网络无法连接,前几天用的好好的现在
大学的数学专业本科与物理专业本科,哪个课
葱白香菜煮给孩子喝水煮多长时间
黑冠鹃隼的介绍
关于bat和reg
男的送帽子给我,什么意思?
说一则自我保护或别人自我保护的故事。
手机上怎样查通话详单
增值税税率将有四档调为三档?
上了六年级之后,我就觉得不安,压力越来越的
我的朋友一一小猫咪作文310字
如图,在菱形ABCD中,∠BAD=2∠B,试求出∠B
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?