高分求教关于String的问题!

santld 2003-04-01 04:35:16
我写了两段程序:

第一个程序:

public class app{

public static void main( String[] args ){

String a = "santld";
String b = "santld";

if( a == b )
System.out.println("a==b");
else
System.out.println("a!=b");
}
}

输出结果是a==b

第二个程序:

public class app{

public static void main( String[] args ){

String a = new String("santld");
String b = new String("santld");

if( a == b )
System.out.println("a==b");
else
System.out.println("a!=b");
}
}

结果是:a!=b

请问这是为什么,这些情况下String内部是怎么实现的,谢谢!
...全文
12 点赞 收藏 10
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
jqzw 2003-04-01
String a = "santld";
String b = "santld";
开辟同一个内存空间为a b,而==比较的是地址,所以相等
另外的是两个对象,只是二者内容相同,用==比较,当然就不想等了。
回复
zpwly 2003-04-01
同意!
字符型之间比较用equals!
回复
geyf 2003-04-01
是地址的问题
回复
geyf 2003-04-01
第一个程序
String a = "santld";
String b = "santld";
中a、b是对同一个字符串对象的引用;而String a = new String("santld");
String b = new String("santld");
中a、b是对两个不同字符串对象的引用,且a==b是对象的比较,当然输出结果不同;若用a.equals(b)两个程序输出结果就相同
回复
qxjavajava 2003-04-01
Equality for String objects means same
character string e.g.
String m1 = "Hello"
String m2 = "Hello"
m1.equals(m2) is true

Result of applying "==" operator to any two objects of
any type:
String s1 = "hi";
String s2 = "hi";
System.out.println(s1==s2);//true string literals

Equality for Boolean objects means
same primitive value e.g.
Boolean b1 = new Boolean(true);
Boolean b2 = new Boolean(true);
then b1.equals(b2) is true
String s1 = new String("hi");
String s2 = new String("hi");
System.out.println(s1 == s2);//false different references
System.out.println(b1 == b2);//false different references
a.equals(null) //NullPointerException at
runtime
回复
bluesmile979 2003-04-01
equals如果内容相等则为true

==如果用同一块内存则为trye


String a = "santld";
String b = "santld";

上面这样写一样的内容他不会另外开辟内存空间的,两个指的是一个内存空间

相应的对应看看你的测试结果也就明白了吧]
回复
santld 2003-04-01
上边说的我都知道,我是想知道用第一种方法应该也是创建了对象,但是为什么比较的时候却比较了它们的值,而第二种却比较的是它们的reference
回复
xmpp 2003-04-01
一个是对象之比,一个是值之比。
回复
vcvj 2003-04-01
a与b都是String类,所以永远不可能相等
比较是符=字符串要用String.equals("your string");

结贴给分
回复
vcvj 2003-04-01
if( a.equals(b) )
System.out.println("a==b");
else
System.out.println("a!=b");

回复
相关推荐
发帖
Java SE
创建于2007-09-28

6.1w+

社区成员

Java 2 Standard Edition
申请成为版主
帖子事件
创建了帖子
2003-04-01 04:35
社区公告
暂无公告