各位大哥,简单的问题,小弟急等(100分)

xiaomin1300 2003-11-10 07:40:52
public class temp
{
public static void main(String args[])
{
String str1=new String("hello");
String str2=new String("hello");
System.out.println(str1==str2);
System.out.println(str1!=str2);

str1="hello";
str2="hello";
System.out.println(str1==str2);
System.out.println(str1!=str2);

}
}

运行结果为什么是
false
true
true
false
上面到底比较的是什么?
还有==和equals()方法有什么不同,他们比较的分别是什么?
先谢过各位了
...全文
39 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
nerrymeeting 2003-11-11
  • 打赏
  • 举报
回复
==是比较对象的地址(存储空间),equals才是比较对象的值。
所以up fft123(专杀各类日本畜生) 。
String str1=new String("hello");
String str2=new String("hello");
System.out.println(str1==str2);
System.out.println(str1!=str2);
//new是用来生成新的对象的,所以str1和str2不是同一个对象,而java里==运算比较的是地址,所以第一个输出为false,第二个为true
str1="hello";
str2="hello";
//不用new的话,如果系统里已经有 "hello"这个字符串,则str1直接指向这个字符串;否则生成一个新的String,值为"hello"(这时同new的用法)。因此这里,str1和str2所指的是同一个地址,输出比较结果的时候,第一个是true,第二个是false
xiaomin1300 2003-11-11
  • 打赏
  • 举报
回复
谢谢楼上各位大哥了!
fft123 2003-11-10
  • 打赏
  • 举报
回复
String str1=new String("hello");
String str2=new String("hello");
System.out.println(str1==str2);
System.out.println(str1!=str2);
//new是用来生成新的对象的,所以str1和str2不是同一个对象,而java里==运算比较的是地址,所以第一个输出为false,第二个为true
str1="hello";
str2="hello";
//不用new的话,如果系统里已经有 "hello"这个字符串,则str1直接指向这个字符串;否则生成一个新的String,值为"hello"(这时同new的用法)。因此这里,str1和str2所指的是同一个地址,输出比较结果的时候,第一个是true,第二个是false

==是比较对象地址;equals是比较对象的值
如果这里所有的==全换成equals,则输出都应该是true
li_haizhou 2003-11-10
  • 打赏
  • 举报
回复
xwOnlyU(诸神的黄昏) 说的对
"hello"是一个静态常量,在系统初始化时已经在静态空间内分配好内存了,所以你不管赋值给多少个对象,都是相同的内存地址,因此 == 比较的结果为真。
zealVampire 2003-11-10
  • 打赏
  • 举报
回复
new 就是分分配了地址空间 所以不相同的
后面的Str1和Str2是指向同一个空间?应该是的吧“hello"当做句柄一样用的
xwOnlyU 2003-11-10
  • 打赏
  • 举报
回复
== 判定的是两个string 是否为同一实例,即内存中的地址是否相同
equals() 比较串的值

String str1=new String("hello");
String str2=new String("hello");
String 关键字在内存中开辟了2个不同的空间,二者地址不同

str1="hello";
str2="hello";
str1 和 str2 指向同一个地址

好像是这样的。
呵呵,也在学习中。
wjzustjava 2003-11-10
  • 打赏
  • 举报
回复
String str1=new String("hello");
String str2=new String("hello");
这是两个字符串,用==的作用是判断是不是两个不一样的字符串(这里有两个声名语句显然是两个不同的字符串);
而~~~~~~~~
str1="hello";
str2="hello";
都是一个字符串赋值的,所以是一个字符串。

loveyousomuch 2003-11-10
  • 打赏
  • 举报
回复
安我个人理解
String str1=new String("hello");
String str2=new String("hello");
表示生成了2个字符串对象,虽然他们的值相同,但内存地址不同!
str1="hello";
str2="hello";
给两个字符串对象赋了相同的值

62,614

社区成员

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

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