社区
Java SE
帖子详情
操作符“+”的定义,他是否是new了一个新的字符串?
caocongteng
2008-04-15 12:34:26
final String str1 = "length: 10";
final String str2 = "length: "+pig.length();
我现在可以确定str1==str2为false;
我知道String池的特性
但想知道连接操作符“+”的定义,他是否是new了一个新的字符串?还是什么?
望达人指点!
...全文
1991
72
打赏
收藏
操作符“+”的定义,他是否是new了一个新的字符串?
final String str1 = "length: 10"; final String str2 = "length: "+pig.length(); 我现在可以确定str1==str2为false; 我知道String池的特性 但想知道连接操作符“+”的定义,他是否是new了一个新的字符串?还是什么? 望达人指点!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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)
java六大必须理解的问题 文档
java六大必须理解的问题、内容比较详细、写的比较具体
【Java学习】
字符串
操作符
+ 和 +=:5个关键点,你真的掌握了Java中的
字符串
拼接魔法吗?
定义
:
字符串
操作符
和+=用于将两个或多个
字符串
连接成
一个
新
的
字符串
。常见
操作符
字符串
连接
字符串
追加+=
字符串
连接
操作符
“+”
操作符
“+” 能够连接
字符串
,并生成
新
的
字符串
。 如果 “+”
操作符
中有
一个
操作元为 String 类型,则另
一个
操作元可以是任意类型(包括基本类型和引用类型),不过该操作元将被转换成
字符串
。当
一个
操作元为String 类型时,如果另
一个
操作元为引用类型,就调用所引用对象的 toString() 方法。来获得
字符串
。 String s1 = "Age: " + 1 + 2;
Java如何
定义
字符串
?变长
字符串
、定长
字符串
这些方法都可以用来
定义
字符串
,并且在实际使用中根据具体的需求选择合适的方式。但是需要注意的是,
字符串
在Java中是不可变的,即一旦被创建,它的值就不能被更改。如果对
字符串
进行操作(如拼接、替换等),实际上是创建了
一个
新
的
字符串
对象。因此,如果需要频繁地修改
字符串
,应该考虑使用。需要注意的是,定长
字符串
的长度是固定的,无法改变。如果需要对定长
字符串
进行修改,可以先将其转换为变长
字符串
类型(如。对于定长
字符串
,可以直接通过赋值来
定义
,或者使用。),进行操作后再转换回定长
字符串
。类来
定义
,并指定固定长度。
python
定义
一个
字符串
_Python基础之
字符串
初识
字符串
字符串
的认识首先,我们先认识下什么是
字符串
:#
定义
字符串
t_str1 = "Hello World"t_str2 = "asdfghh"print(t_str1) # Hello Worldprint(t_str2) # asdfghh
字符串
的介绍
字符串
就是一串字符,是编程语言汇总表示文本的数据类型;在Python中可以使用一对双引号或者一对单引号
定义
一个
字符串
;
字符串
内部如果需要...
Java SE
62,635
社区成员
307,269
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章