两个java String赋值类型之间的区别

时间:2014-04-09 10:26:36

标签: java

这两个实现之间有什么区别:

String s1 = "java";

String s2 = new String("java");

是s1能够执行s2会做的所有功能吗?喜欢大写,追加等等。

4 个答案:

答案 0 :(得分:1)

唯一的区别是String s1 = "java"将创建一个字符串文字,它将存储在一个字符串池中。对于String s2 = new Sting("java"),将创建一个实例对象以及字符串池中的字符串文字。

对于第二部分Yes,您可以,因为它的变量和变量可以使用点运算符访问库函数。所以s1.toUpperCase()s2.toUpperCase()

实施例

class Ideone
{
public static void main (String[] args) throws java.lang.Exception
{
    String s1 = new String("java");
    System.out.println(s1.toUpperCase());

    String s2 = "java";
    System.out.println(s2.toUpperCase());
}
 }

结果:JAVA JAVA

答案 1 :(得分:0)

对于问题的第一部分,已多次询问并多次回答here,我认为我们不需要更好的答案

对于问题的第二部分,

  

是s1能够执行s2会做的所有功能吗?喜欢   大写,追加等。

绝对是的!试试"hello".toUpperCase()

答案 2 :(得分:0)

String s =“abc”; //创建一个String对象和一个引用变量 在这个简单的情况下,“abc”将进入池中,s将引用它。

String s = new String(“abc”); //创建两个对象和一个引用变量 在这种情况下,因为我们使用了new关键字,Java将创建一个新的String对象 在普通(非池)内存中,s将引用它。另外,字面意思是“abc” 放在便便中

答案 3 :(得分:0)

String s1="java"   // will store in string pool
String s2=new String("java");  //will store in heap

因此s1==s2会产生false

如果您还希望s2在游泳池中,则必须致电s2.intern()。之后s1==s2会产生true