当前位置: 代码迷 >> J2SE >> 问一个关于字符串的有关问题
  详细解决方案

问一个关于字符串的有关问题

热度:199   发布时间:2016-04-24 15:41:53.0
问一个关于字符串的问题
1。String   s1   =   "a ";   和   String   s1   =   new   String( "a ");   有区别吗?
2。.valueOf()方法和   toString()方法的区别?

------解决方案--------------------
建议你看这本书:
SCJP Sun Certified Programmer for Java 5 Study Guide (Exam 310-055)
------解决方案--------------------
1,Study String Constant Pool, Heap and Stack;
2, Study Wrapper classes.
------解决方案--------------------
一点区别,第一个建立一个String对象给了s1,第二个建立一个 "a "对象并防入驻留池中,并且再建立一个String对象给s1 第二中基本上没有人用,除了多占空间每别的
------解决方案--------------------
这个问题我也是今天刚知道,最好是写两个来看,
String s1 = "a ";
String s2 = "a ";
String s3 = new String ( "a ");
String s4 = new String ( "a ");
一开始,字符串池中没有a,就在池中建立一个a,当定义s2 时,系统会发现在池中有一个a了,就不会再定义,而是s2 直接指向a,也就是指向a 的地址。
而定义s3时,会在内存中开开辟一个单元,用来存储 a,当再定义s4 的时候,又在内存中开了一个单元,这样就会浪费内存空间。
一般,都是采用第一种方法。
------解决方案--------------------
第一个是在栈空间,第二个是在堆空间。栈空间是有限的,堆空间要大的多。关于值的分配方面xxh0534说的不错。
valueof()和toString()的区别方面,tostring()是OBJECT里的方法,许多类提供了默认的实现,我们自己也可以重写这些实现,以实现我们自己的要求。而VALUEOF()则是String类提供的将其它类型值转为STRING类型的一系列方法.
  相关解决方案