操作符“+”的定义,他是否是new了一个新的字符串?

caocongteng 2008-04-15 12:34:26
final String str1 = "length: 10";
final String str2 = "length: "+pig.length();

我现在可以确定str1==str2为false;
我知道String池的特性
但想知道连接操作符“+”的定义,他是否是new了一个新的字符串?还是什么?
望达人指点!
...全文
1826 72 打赏 收藏 转发到动态 举报
写回复
用AI写文章
72 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhch152 2012-06-25
  • 打赏
  • 举报
回复
[Quote=引用 42 楼 的回复:]
为了加深理解,我们可以来做几个小实验。

javac Test 编译文件
javap -c Test 查看虚拟机指令

实验一:纯字符串

Java code
public class Test {
public static void main(String args[]) {
String str = "a";
}
}


//……
[/Quote]

//b 不是在常数池里面吗,这里的栈是指常数池了的栈吗? 还有复制出来,指的是复制到哪里??
codeshuo 2010-09-16
  • 打赏
  • 举报
回复
火龙果真可以啊。。。讲的这么本质!解了我心中的一个迷啊,谢谢了!!
lichao20073877 2010-07-17
  • 打赏
  • 举报
回复
mark
timeriver_wang 2010-03-09
  • 打赏
  • 举报
回复
受益匪浅啊,mark
cdsn09 2010-01-06
  • 打赏
  • 举报
回复
火龙果果然很强大
wifewifewife 2009-11-02
  • 打赏
  • 举报
回复
mark..
monsterfairy 2009-10-14
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 caocongteng 的回复:]
我理解错了
String str1 = "haha";
String str2 = "ha"+"ha";
System.out.println(str1==str2);
返回true;
说明 + 操作符并没有生成新的对象,问题在str1.length()这里

大家都说说吧!
[/Quote]

String str1 = "haha"; //这里在编译期时就放到了池子里
String str2 = "ha"+"ha"; // 这里会先拼成"haha" 然后去池子里找,如果找到了,就用,如果找不到,就new(分配内存)个新的,放入池中。
这里能找到,所以下面这句为True
System.out.println(str1==str2); //true 除了名字不一样外,其他都一样(内存地址)所以返回true
String s1 = "ha" //这里同理也会到池里找,没有new一个新的放到池里,这里会放一个ha到池里。
String s2 = "ha" //这里找,有,用池里的,同时s1,s2引用相同地址,除了名字不一样外,其他都一样

final String str1 = "length: 10"; // 没有,放到池里。
以上都在编译期做的事情,常量,会放到池子里。
final String str2 = "length: "+str1.length(); //这里不是在编译期做的事情,是存在Heap中的。
str1 和 str2 引用不同的地址,new一个"length: "+str1.length()放到Heap中,并用str2指向新地址。
monsterfairy 2009-10-14
  • 打赏
  • 举报
回复
String str1 = "haha";
String str2 = "ha"+"ha";
System.out.println(str1==str2);
leafin 2009-03-06
  • 打赏
  • 举报
回复
marked by leafin
luojihaidao 2009-02-05
  • 打赏
  • 举报
回复
不错!
lyx_0010 2009-02-04
  • 打赏
  • 举报
回复
学习
bigbro001 2009-01-13
  • 打赏
  • 举报
回复
记号。。。
sjbtwo 2008-12-24
  • 打赏
  • 举报
回复
太强大了。。。学习。。。。感觉收益很大。。
FranklinKing 2008-12-23
  • 打赏
  • 举报
回复
还是有些迷糊
jlabel 2008-12-22
  • 打赏
  • 举报
回复
已阅
Neves_pa 2008-12-22
  • 打赏
  • 举报
回复
好帖子,该顶
hl_ghost 2008-11-22
  • 打赏
  • 举报
回复
mark
clwahaha 2008-11-01
  • 打赏
  • 举报
回复
[Quote=引用 53 楼 lwyx2000 的回复:]
火龙果很强大也很好吃~~~
[/Quote]
呼呼
「已注销」 2008-10-15
  • 打赏
  • 举报
回复
mark
lwyx2000 2008-10-07
  • 打赏
  • 举报
回复
火龙果很强大也很好吃~~~
加载更多回复(51)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧