问个非常简单的问题! String类对象的内容一但被初始化就不可以被改变。那么:String s = "test";s = "uses";这不是就被改变了吗?我的想法有问题求高手帮我解答! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 "test"这个对象本身并没有被改变,只是s这个引用指向了另一个对象! String的不可变性是指:在String对象池中具体的String对象一经new出后就不能改变了,但是指向该串的引用仍然可以指向池中其它地方,也就是说值为final的,但引用还是活的. String的问题真是好多啊 哎String s = "test";String s1 = s;s = "uses"; System.out.println(s1); 那这么说int a = 5;int b = a;a = 6;那么int也是一但初始化也不可以改变喽? 有String的地方就有猴子.... 引用和对象楼主还没区分开哦String s = "test";s是引用 "test"是对象"test"被初始化后是不能被改变了但是s是个引用变量,指向同类型的对象都可以而int那个是改变变量的内容 String s = "test"; 申明一个引用类型变量s,同时将"test"这个对象赋值给ss = "uses"; 将"uses"这个对象赋值给sstring的对象是不可变的比如:"uses"和"test"这两个对象是不可变的,它们储存在池中!s只是一个string类型的引用型变量! test在常量池中还是存在的并且不会改变 只不过s这个引用没有指向它 知道程序结束才释放所在内存空间 对,“test”所占的内存空间里的值不能不能被改变,但是引用是活的。 int 是基本类型 String 是引用类型所以不同... 好象懂了.大家看我理解的对不...String 是引用类型指向对象,而int是基本类型,没有什么引用."test"和"use"是2个String类型的对象..s只是指向他堆内存中的引用..在堆中test和use是没有改变的只是s改变了指向。。而int类型没有所谓的引用,只是改变了值而已.. s指向变了,String s = "test"; S指向的test s = "uses"; S指向的uses 刚画了个图看懂了,s一开始指向test。后来s1也指向了test,当s指向uses的时候,s1还是指向test的.对吗? 楼上的解释都对。在内存中基本类型和引用存放在栈区,对象存放在堆区。要牢记。String s = "test"; s = "uses";s是引用,test和uses是对象。所以s放栈区,test和uses放堆区。int是基本类型,存放在栈区,值不能改变。为了给你解释清楚,我花了心思哦,楼主可要有良心哦!呵呵 请教高手,JTree节点改名时如何检查新名字是否合法,不合法如何取消? 如何在xml中获取一个元素节点的所有内容 麻烦哪位高手帮忙指点小弟一下~~~ 容器的选择: 好奇:能否用java写出能打印自身源代码的程序?谢谢! 使用java编程,去连接华为的SYNLOCK V3设备,然后读取设备上的数据,该用什么方法? 有哪位大侠能提供用递归写的一个快速排序的方法。急!!!! winrar解压的java电子书为什么是“***.pdb”,pdb是什么格式? 一本不错的书 请问各位大神:为什么这段代码运行后我的电脑超级慢?几乎就不懂了。。。 java时间接听器 Java问题
在String对象池中具体的String对象一经new出后就不能改变了,但是指向该串的引用仍然可以指向池中其它地方,也就是说值为final的,但引用还是活的.
String s1 = s;
s = "uses"; System.out.println(s1);
int b = a;
a = 6;
那么int也是一但初始化也不可以改变喽?
有String的地方就有猴子....
String s = "test";
s是引用 "test"是对象
"test"被初始化后是不能被改变了
但是s是个引用变量,指向同类型的对象都可以而int那个是改变变量的内容
s = "uses"; 将"uses"这个对象赋值给s
string的对象是不可变的比如:"uses"和"test"这两个对象是不可变的,它们储存在池中!
s只是一个string类型的引用型变量!
所以不同...
String 是引用类型指向对象,而int是基本类型,没有什么引用.
"test"和"use"是2个String类型的对象..s只是指向他堆内存中的引用..在堆中test和use是没有改变的只是s改变了指向。。
而int类型没有所谓的引用,只是改变了值而已..
s = "uses"; S指向的uses
刚画了个图看懂了,s一开始指向test。后来s1也指向了test,当s指向uses的时候,s1还是指向test的.对吗?
在内存中基本类型和引用存放在栈区,对象存放在堆区。要牢记。
String s = "test";
s = "uses";
s是引用,test和uses是对象。
所以s放栈区,test和uses放堆区。
int是基本类型,存放在栈区,值不能改变。为了给你解释清楚,我花了心思哦,楼主可要有良心哦!呵呵