问一个关于字符串的问题
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类型的一系列方法.