社区
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了一个新的字符串?还是什么?
望达人指点!
...全文
1831
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)
掰开揉碎『看漫画学Python』中
本课程采用了漫画+动手实操+练习讲授Python编程技能。课程简介:第6章 容器类型数据6.1 序列6.1.1 序列的索引操作6.1.2 加与乘操作6.1.3 切片操作6.1.4 成员测试6.2 列表6.2.1 创建列表6.2.2 追加元素6.2.3 插入元素6.2.4 替换元素6.2.5 删除元素6.3 元组6.3.1 创建元组6.3.2 元组拆包6.4 集合6.4.1 创建集合6.4.2 修改集合6.5 字典6.5.1 创建字典6.5.2 修改字典6.5.3 访问字典视图6.6 动动手 —— 遍历字典6.7 练一练第7章
字符串
7.1
字符串
的表示方式7.1.1 普通
字符串
7.1.2 原始
字符串
7.1.3 长
字符串
7.2
字符串
与数字的相互转换7.2.1 将
字符串
转换为数字7.2.2 将数字转换为
字符串
7.3 格式化
字符串
7.3.1 使用占位符7.3.2 格式化控制符7.4 操作
字符串
7.4.1
字符串
查找7.4.2
字符串
替换7.4.3
字符串
分割7.5 动动手 —— 统计英文文章中单词出现的频率7.6 练一练第8章 函数8.1
定义
函数8.2 调用函数8.2.1 使用位置参数调用函数8.2.2 使用关键字参数调用函数8.3 参数的默认值8.4 可变参数8.4.1 基于元组的可变参数( *可变参数)8.4.2 基于字典的可变参数( **可变参数)8.5 函数中变量的作用域8.6 函数类型8.6.1 理解函数类型8.6.2 过滤函数filter()8.6.3 映射函数map()8.7 lambda()函数8.8 动动手 —— 使用更多的lambda()函数8.9 练一练第9章 类与对象9.1 面向对象9.2
定义
类9.3 创建对象9.4 类的成员9.4.1 实例变量9.4.2 构造方法9.4.3 实例方法9.4.4 类变量19.5 封装9.5.1 私有变量9.5.2 私有方法9.5.3 使用属性9.6 继承性9.6.1 Python中的继承9.6.2 多继承9.6.3 重写方法9.7 多态性9.7.1 继承与多态9.7.2 鸭子类型测试与多态9.8 练一练第10章 异常处理9.8 练一练10.1 第
一个
异常 —— 除零异常10.2 捕获异常110.2.1 try-except语句10.2.2 多个except代码块10.2.3 多重异常捕获10.2.4 try-except语句嵌套10.3 使用finally代码块释放资源10.4 自
定义
异常类10.5 动动手 —— 手动引发异常10.6 练一练
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中,我们可以通过三种不同的方式来
定义
字符串
,分别是:单引号、双引号、三引号,接下来是具体的内容介绍。此代码段将生成
一个
无限数量的
字符串
,它可以跨越多行,就像使用三引号
定义
的其他多行
字符串
一样。双引号的作用与单引号相同,但是由于双引号本身在
字符串
中没有任何特殊意义,所以双引号不需要转义任何字符。此代码段将输出带有换行符的
字符串
。请注意,由于
字符串
中有换行符,因此在声明
字符串
时,应使用单引号。与其他
字符串
定义
方式不同,三引号可以用于
定义
跨越多行的
字符串
,无需使用换行符或反斜杠转义特殊字符。
Java SE
62,615
社区成员
307,307
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章