高分求教关于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内部是怎么实现的,谢谢!
...全文
58 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
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");

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧