站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2SE 专题字符串相等的问题

字符串相等的问题

摘要: 字符串相等的问题


import java.io.*;
public class x {
public static void main(String[] args) {
try{
BufferedReader in = new BufferedReader(
new InputStreamReader(System.in));
String x = "1";

System.out.println("Input:");
String y = in.readLine();
if(x == y)
System.out.println("Yes");
else
System.out.println("No");
}
catch(IOException e){}
}
}
当变量x,y为int型时,输入1结果为Yes,当x,y为string型时输入1,结果是No,请问读入String时是还同时读入了回车吗?我用System.out.println(y + "!")输入y,结果是1!,如果真的把回车也读入了,那结果不是应该是
1

才对的吗?迷惑中,请大家给点支持。


字符串的比较要用equals,因为String是对象,如果用==,比较的是对象的句柄。


同意楼上的
字符串的比较要用equals,比较内容
==是比较引用是否相同


所有数值的比较都是用==,他所比较的是数据是否相同
String是java类,原始类Object的equals比较也是用==号

==对于基本类型比较的是值是否相等,对对象比较的是引用,你上面的两个不同的对象,他们的引用所指向的地址当然是不同的

equals在Object中也是直接使用==去比较,
public boolean equals(Object obj) {
return (this == obj);
}
但在各个继承中可以自已重写equals方法,
如String类中
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = count;
if (n == anotherString.count) {
char v1[] = value;
char v2[] = anotherString.value;
int i = offset;
int j = anotherString.offset;
while (n-- != 0) {
if (v1[i++] != v2[j++])
return false;
}
return true;
}
}
return false;
}
这样String类使用equals比较的就是两个字符串的值是否相同,



字符串的比较要用equals方法,因为String是对象,如果用==,比较的是对象的引用!


这个书上都写的很清楚的,lz,再好好看看书!


谢谢大家


↑返回目录
前一篇: 请高手们赐教-老师布置的一道有点难的java题
后一篇: SUN的网站上有没有视频资源啊