当前位置: 代码迷 >> Java相关 >> String类好特殊
  详细解决方案

String类好特殊

热度:301   发布时间:2007-03-15 12:22:23.0
String类好特殊

各位大哥:
String类很特殊。那下面二个语句是不是等价的:
String Str=new Str("abc");
String Str="abc";

搜索更多相关的解决方案: String  

----------------解决方案--------------------------------------------------------

你用什么判断的???
QEUAL?


----------------解决方案--------------------------------------------------------
没有修改的默认比的是地址
----------------解决方案--------------------------------------------------------

堆和栈的区别


----------------解决方案--------------------------------------------------------
Lz,声明的是俩个不同的对象引用,并给他们一段地址
而单纯的比较只比较这个引用的内容
而引用的内容是地址
所以如果比较对象引用的内容是否相等
建议改一下equals
如果是基本类型
单纯的==便可以比较
因为基本类型在堆栈,没有引用
他的内容就是他的值

[此贴子已经被作者于2007-3-15 14:33:17编辑过]


----------------解决方案--------------------------------------------------------

java中的String确实设计的特殊一点.
但那有什么关系呢,你把它当作普通类来使用就得了.
比如String str ="abc";究竟它是在堆里面还是在栈里面对你使用它有什么影响呢?
只要记得比较两个字符串是否一样用要用equals方法而不要用==就可以了.

当然,如果你能够了解String特殊性也是好的,只是作为刚入门的JAVA学习者没必要困扰在这一点上.
要知道高级语言之所以高级,就是能够掩藏那些底层的实现细节.你只要会用那些API就OK了,至于它具体如何实现的,当你的水平再高一点的时候,可以看更高阶一点的书,比如<深入Java虚拟机>之类的,这种问题就很容易从根本上解决了.


----------------解决方案--------------------------------------------------------
支持楼上的说法.
----------------解决方案--------------------------------------------------------

LZ说的等价指的是什么啊?
String str=new String("abc"); 我的理解是以一个字符串对象"abc"为模版 在内存中new出一个相同的"abc"对象 然后在把这个对象的哈嘻值存到str中
String str="abc"; 就是直接把内存中"abc"的哈嘻值直接存到str中

就是3个对象和2个对象的问题
高手指点下!不知道我说的对不对!

不好意思哈嘻值的英文怎么写来着 初学者没记住呢


----------------解决方案--------------------------------------------------------

我认为这样会对理解程序的运行有好处的


----------------解决方案--------------------------------------------------------
以下是引用song4在2007-3-15 14:32:16的发言:
Lz,声明的是俩个不同的对象引用,并给他们一段地址
而单纯的比较只比较这个引用的内容
而引用的内容是地址
所以如果比较对象引用的内容是否相等
建议改一下equals
如果是基本类型
单纯的==便可以比较
因为基本类型在堆栈,没有引用
他的内容就是他的值
不是堆栈 就是栈!!
----------------解决方案--------------------------------------------------------
  相关解决方案