小白求教
java中String str1=123+"";
和
String str1="123";
的区别
这两个输出结果都是123,所以只是写法的不同吗? 是不是,用个判断==试试看不就知道吗 建议看下堆和栈的概念,然后了解一下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-11 16:43
建议看下堆和栈的概念,然后了解一下String类型在JVM中存储规则,你就懂了!
String str1 = 123+“”;这 ...
谢谢大佬,听明白了{:5_92:}
页:
[1]