社区
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了一个新的字符串?还是什么?
望达人指点!
...全文
1830
72
打赏
收藏
操作符“+”的定义,他是否是new了一个新的字符串?
final String str1 = "length: 10"; final String str2 = "length: "+pig.length(); 我现在可以确定str1==str2为false; 我知道String池的特性 但想知道连接操作符“+”的定义,他是否是new了一个新的字符串?还是什么? 望达人指点!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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中是不可变的,即一旦被创建,它的值就不能被更改。如果对
字符串
进行操作(如拼接、替换等),实际上是创建了
一个
新
的
字符串
对象。因此,如果需要频繁地修改
字符串
,应该考虑使用。需要注意的是,定长
字符串
的长度是固定的,无法改变。如果需要对定长
字符串
进行修改,可以先将其转换为变长
字符串
类型(如。对于定长
字符串
,可以直接通过赋值来
定义
,或者使用。),进行操作后再转换回定长
字符串
。类来
定义
,并指定固定长度。
python
定义
一个
字符串
_Python基础之
字符串
初识
字符串
字符串
的认识首先,我们先认识下什么是
字符串
:#
定义
字符串
t_str1 = "Hello World"t_str2 = "asdfghh"print(t_str1) # Hello Worldprint(t_str2) # asdfghh
字符串
的介绍
字符串
就是一串字符,是编程语言汇总表示文本的数据类型;在Python中可以使用一对双引号或者一对单引号
定义
一个
字符串
;
字符串
内部如果需要...
字符串
连接
操作符
“+”
操作符
“+” 能够连接
字符串
,并生成
新
的
字符串
。 如果 “+”
操作符
中有
一个
操作元为 String 类型,则另
一个
操作元可以是任意类型(包括基本类型和引用类型),不过该操作元将被转换成
字符串
。当
一个
操作元为String 类型时,如果另
一个
操作元为引用类型,就调用所引用对象的 toString() 方法。来获得
字符串
。 String s1 = "Age: " + 1 + 2;
Python中如何进行
字符串
定义
?
在Python中,我们可以通过三种不同的方式来
定义
字符串
,分别是:单引号、双引号、三引号,接下来是具体的内容介绍。此代码段将生成
一个
无限数量的
字符串
,它可以跨越多行,就像使用三引号
定义
的其他多行
字符串
一样。双引号的作用与单引号相同,但是由于双引号本身在
字符串
中没有任何特殊意义,所以双引号不需要转义任何字符。此代码段将输出带有换行符的
字符串
。请注意,由于
字符串
中有换行符,因此在声明
字符串
时,应使用单引号。与其他
字符串
定义
方式不同,三引号可以用于
定义
跨越多行的
字符串
,无需使用换行符或反斜杠转义特殊字符。
Scala中
字符串
的操作
在 Scala 中,
字符串
的类型实际上是 Java String,它本身没有 String 类。 在 Scala 中,String 是
一个
不可变的对象,所以该对象不可被修改。这就意味着你如果修改
字符串
就会产生
一个
新
的
字符串
对象。 但其他对象,如数组就是可变的对象 1.
定义
: 字符可以用单引号:var character1 = 'a'
字符串
用 双引号:var greeting = "Hello World!" 2.
字符串
声明后是不可改变的,每次改变都会创建
新
对象,如果想要改变可以设置为Stri
Java SE
62,615
社区成员
307,307
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章