道友请留步. 发表于 2020-12-10 20:41:59

小白求教

java中
String str1=123+"";

String str1="123";
的区别
这两个输出结果都是123,所以只是写法的不同吗?

不能懒 发表于 2020-12-10 21:54:38

是不是,用个判断==试试看不就知道吗

连帅帅 发表于 2020-12-11 16:43:27

建议看下堆和栈的概念,然后了解一下String类型在JVM中存储规则,你就懂了!
String str1 = 123+“”;这是一个int类型的数和一个空字符串拼接,这种情况java会把int类型的123转换为String类型的“123”,然后和“”(进行拼接),所以结果是String类型的123;
String Str2 = “123”,这是直接生成一个字符串就是“123”。
两者结果虽然一样,但是其底层实现完全不一样:
第一种的实现过程:先在栈中生成一个int类型的123,然后和你空字符串“”进行拼接,即int转换为String,拼接之后的结果放在堆中,其引用还是放在栈中的;
第二种的实现过程:直接在堆中生成一个String类型的“123”。
如有不足,欢迎指正!

道友请留步. 发表于 2020-12-12 17:32:53

连帅帅 发表于 2020-12-11 16:43
建议看下堆和栈的概念,然后了解一下String类型在JVM中存储规则,你就懂了!
String str1 = 123+“”;这 ...

谢谢大佬,听明白了{:5_92:}
页: [1]
查看完整版本: 小白求教