这两个实现之间有什么区别:
String s1 = "java";
和
String s2 = new String("java");
是s1能够执行s2会做的所有功能吗?喜欢大写,追加等等。
答案 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
。