您的位置:首页 > 其它

String类中类型的区分

2016-07-27 15:06 204 查看
String a; 表示创建了一个变量a,并未开辟内存空间

String a = null ; 表示创建了一个null 对象 ,是未分配堆内存空间

String a = “s” ; 表示在字符串池中写入了一个字符s,并用a指向他

==与equals()区别

==比较的是地址,equals比较的是值

public class TestString {

public static void main(String[] args) {

String s1 = "Monday";

String s2 = "Monday";

if (s1 == s2)

System.out.println("s1 == s2");

else

System.out.println("s1 != s2");

}

}


执行结果为:s1 == s2

程序在运行时会创建一个字符串池,当使用 s2 = “Monday” 这样的表达时创建字符串的时候,程序首先会在这个String缓冲池中寻找相同值的对象,在第一个程序中,s1先被放到了池中,所以在s2被创建的时候,程序找到了具有相同值的 s1。

public class TestString {

public static void main(String[] args) {

String s1 = "Monday";

String s2 = new String("Monday");

if (s1 == s2)

System.out.println("s1 == s2");

else

System.out.println("s1 != s2");

if (s1.equals(s2)) System.out.println("s1 equals s2");

else

System.out.println("s1 not equals s2");

}

}


执行结果为:s1 equals s2

使用了 new 操作符,他明白的告诉程序:”我要一个新的!不要旧的!”于是一个新的”Monday”Sting对象被创建在内存中。他们的值相同,但是位置不同。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  string