java中String类与变量相加解释一旦创建了String对象,那它的值就无法改变了
来源:互联网 发布:淘宝手机删除差评步骤 编辑:程序博客网 时间:2024/05/19 12:28
public class str {public static void main(String args[]){int value=1;String str1="ABC"+value;String str2="ABC"+1;String str3=str1;String str4="ABC1";String str5="ABC"+value;boolean a=(str1==str2);boolean b=(str1==str3);boolean c=(str1==str4);boolean d=(str1==str5);System.out.println(a);System.out.println(b);System.out.println(c);System.out.println(d);}}结果为什么是false,true,false,false
==是用作比较地址。“那么str1+value的地址就变了吗”:是的,String字符串每进行操作(比如像你进行的拼接“ABC”+ value)都会new一个新对象去保存之前这两对象的内容,新对象肯定会有一个新地址,所以当str1=str1+value时,str1已经指向了别的地址(多说一句原来的“ABC”由于没有了变量指向,这个时候已经是垃圾,等待自动回收)。至于“3和1 却相等”因为String str3=str1,实际上是将str1的地址付给了str3,所以它们指向同一个地址。当要进行很多次字符串拼接时不要用String,应该使用Stringbuffer或Stringbuild(分别是线程安全和非线程安全)。string st = "ABC"; 和 String st = new String("ABC");虽然两者结果一样,但后者多创建了一次实例。
解释:
第一种,st直接指向“ABC”常量实例中。
当使用String st="ABC",这种方式时,先去内存的Heap中找是否存在"ABC"这个字符串,若存在,则将地址引用。若不存在则创建。
第二种,新建一个String实例化,st指向String实例化(new String("ABC"))
当使用String st=new String("ABC");时,不管事先是否存在"ABC",每次都会创建其新的对象。
0 0
- java中String类与变量相加解释一旦创建了String对象,那它的值就无法改变了
- String类是不可改变的,所以你一旦创建了String对象,那它的值就无法改变了。
- String的特点--一旦被创建就不能被改变
- java的string类关于字符串一旦被初始化,就不可以被改变的
- String的特点一旦被赋值就不能改变图解
- java学习日记_59:String的特点一旦被赋值就不能改变的理解
- 《java入门》第一季之类(String类字符串一旦被赋值就没法改变)
- java中String到底创建了几个对象
- JAVA解惑---String创建了几个对象
- JAVA解惑---String创建了几个对象
- String对象与java字符串池——到底创建了几个String对象
- 对象引用与对象的区别 ,String s = new String("abc");创建了几个对象?
- 真的创建了两个String对象?
- String 创建了几个对象
- String - 创建了几个对象
- java中String s = new String("abc")创建了几个对象
- java中字符串基本知识 String s=new String("abc")创建了几个对象?
- Java中String str = new String("abc")创建了几个对象
- Android学习(3)TextView和EditView
- C++ primary 第四版3.8习题解答
- 关于苹果的证书问题
- Ubuntu中利用Doxygen生成开源程序包的API文档
- 博主应Autodesk邀请,以2D到3D的跨越为主题做网络讲座(4.23号下午)
- java中String类与变量相加解释一旦创建了String对象,那它的值就无法改变了
- 在MyEclipse中安装SWT/Swing设计器
- C++设计模式之原型模式
- Spark故障排除
- Project Euler Solutions(Problem 1~7)
- 根据经纬度获取两点之间的距离(php&mysql)
- android:软件的安装和卸载源代码
- Android-RecylerView初识
- ssh框架(struts+spring+hibernate)