怎么样在jsp中比较两个字符串是否相等?(菜鸟发问)

xiaocainiao128 2004-12-23 01:21:19
怎么样在jsp中比较两个字符串是否相等?我用
String str1,str2;
str1="test";
str2="test";
System.out.print(str1==str2);

相比较的时候为什么会返回false?
如果
str1="test";
str2=str1;
System.out.print(str1==str2);
就返回的是true呢?

请解释一下原理,并给出适合的方法
...全文
1277 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaocainiao128 2004-12-23
  • 打赏
  • 举报
回复
谢谢,各位了
kaymo 2004-12-23
  • 打赏
  • 举报
回复
When the intern method is invoked, if the pool already contains a string equal to this String object as determined by the equals(Object) method, then the string from the pool is returned. Otherwise, this String object is added to the pool and a reference to this String object is returned.

It follows that for any two strings s and t, s.intern() == t.intern() is true if and only if s.equals(t) is true.

xiaocainiao128 2004-12-23
  • 打赏
  • 举报
回复
str1.intern()
intern()这个函数是什么意思?把str1指向地址中的内容取出来吗?
kaymo 2004-12-23
  • 打赏
  • 举报
回复
用这个也可以System.out.print( str1.intern() == str2.intern() );
classjava 2004-12-23
  • 打赏
  • 举报
回复
怎么样在jsp中比较两个字符串是否相等?我用
String str1,str2;
str1="test";
str2="test";
System.out.print(str1==str2);//比较是否同个对象

相比较的时候为什么会返回false?
如果
str1="test";
str2=str1;//这里str2指向str1,当然是同个对象
System.out.print(str1==str2);//
就返回的是true呢?

请解释一下原理,并给出适合的方法//用equals比较内容
simon810610 2004-12-23
  • 打赏
  • 举报
回复
System.out.println(str1.equals(str2));
alpha15 2004-12-23
  • 打赏
  • 举报
回复
在java中字符串是不能用==来比较的
应使用楼上说的那两个方法
fashchina 2004-12-23
  • 打赏
  • 举报
回复
up
jFresH_MaN 2004-12-23
  • 打赏
  • 举报
回复
equals
kiss0931 2004-12-23
  • 打赏
  • 举报
回复
str1==str2 比较的是两个对象指向的地址是否相同,而不是string的内容,所以当你第一次比较的时侯它会返回false,第二次你是用str1指向的地址赋值给str2,它们两个指的是同一个地址,所以返true.

建议用:
1.
equals() 比较的是字符串内容,那就是比较的是对象
str1.equals(str2) 注意,当str1为空的时候会产生异常

2.
compareTo()
用:String对象.compareTo(待比较String对象) 来返回一个Int类型值,共有三种情况:

String对象>待比较String对象 返回值大于零
String对象=待比较String对象 返回值等于零
String对象<待比较String对象 返回值小于零
kaymo 2004-12-23
  • 打赏
  • 举报
回复
用equals比较的使两个String的内容,所以当你str1.equals(str2)的时候会返回true
kaymo 2004-12-23
  • 打赏
  • 举报
回复
System.out.print(str1==str2);你比较的是内存地址,两个不同对象,当然是返回false拉
而下面的str2=str1;使str2这个引用指向str1引用所指的对象,所以会返回true拉
IceCraft 2004-12-23
  • 打赏
  • 举报
回复
使用str1.equals(str2)比较
==比较的是两个引用是否指向同一个对象,第一种方式你是分别给这两个引用赋值的,当然不是一个对象了。
第二种方式两个引用其实都指向同一个对象,==就是true了。
比较制是否相等要用equals方法。

81,122

社区成员

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

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