java 关于 string 相等的问题

importjava.io.*;publicclassTestIo3{TestIo3(){}publicvoidwriteOut(){Strings;try{Buffer... import java.io.*;
public class TestIo3{
TestIo3(){}

public void writeOut(){
String s;

try{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new FileWriter("E:\\learn\\java\\wenjian\\TestIo3.txt",true));
while((s=br.readLine())!=null ){
System.out.println(s);
if(s=="exit"||s=="EXIT")break;//标记行
bw.write(s);
bw.newLine();
bw.flush();
}
br.close();
bw.close();
} catch(IOException e){e.printStackTrace();}
}

public static void main(String args[]){
TestIo3 tt = new TestIo3();
tt. writeOut();
}
}
程序功能 在屏幕输入字符并保存 在输入“exit”或 “EXIT”时退出
问题:输入exit 或EXIT时不退出;而将标记行括号内 换为s.equalsIgnoreCase("exit")即可 为什么??
展开
 我来答
死后是好人
2011-09-21 · TA获得超过2638个赞
知道小有建树答主
回答量:628
采纳率:0%
帮助的人:965万
展开全部
String s1="abc";
String s2="abd";
用这个来判断if(s1.equal(s2))
String是否相等,equal(String s)返回一个boolean类型数据,true表示相等,false表示不相等
String类型是类类型的变量,用==比较的是内存地址
比如
public class Student{
int age;
Student(int i){age=i;}
equal(Student s){
return this.age==s.age;}
}
你使用
Student s1=new Student(1);
Student s2=new Student(1);
如果你用if(s1==s2)判断,比较的是2个对象变量的内存地址
如果说是
Student s1=new Student(1);
Student s2=s1;
这时候s1==s2才成立,因为他们用的是同一个内存地址,但是如果你想比较他们的成员变量的值得话,你就要调用方法进行比较
s1.equal(s2);这里比较的才是这两个Student类型变量的age属性
equalsIgnoreCase(String s)方法就是String类里比较属性值的一个方法,比较时忽略比较字符串的大小写
所以用s.equalsIgnoreCase("exit")而不用s=="exit"||s=="EXIT"
qjfcu2
2011-09-21 · TA获得超过591个赞
知道小有建树答主
回答量:554
采纳率:0%
帮助的人:395万
展开全部
可以用equals方法
"XXX".equals("XXX")
字符串比较是不能用==比较的.用==比较的我记的应该是它们是内存
还是什么我忘了.总之别用==比较字符串
equalsIgnoreCase 和equals的功能差不多,但是equalsIgnoreCase是忽略大小写的
也就是说equalsIgnoreCase判断只看字母,不看大小写
即"a".equalsIgnoreCase("a")和a.equalsIgnoreCase("A");的结果都是ture
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Oo海之蓝歌oO
2011-09-21 · 喜欢计算机有关的东东
Oo海之蓝歌oO
采纳数:244 获赞数:876

向TA提问 私信TA
展开全部
字符串比较:
==:调用Object的equals方法,比较字符串的内存地址。
equals:String类重写了此方法,比较字符串的值。
equalsIgnoreCase:忽略大小写比较字符串的值。
在JAVA中,== 操作符未对非数字型的比较进行操作符重载。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
b_likj
2011-09-21 · 超过11用户采纳过TA的回答
知道答主
回答量:33
采纳率:0%
帮助的人:22.2万
展开全部
if(s=="exit"||s=="EXIT")
换成:
if("exit".equals(s) || "EXIT".equals(s))
试试!
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Nodic_Myth
2011-09-21
知道答主
回答量:21
采纳率:0%
帮助的人:17.1万
展开全部
s是保存在栈中的变量,而equals方法比较的是该变量指向的值。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式