import java.util.*;
public class While2{
public static void main(String[] args){
String answer;//回答结果
Scanner input = new Scanner(System.in);
System.out.println("表演的怎么样?(y/n)");
answer = input.next();//获取用户输入
while(! answer.equals("y")){//输入的不是y则继续执行
System.out.println("早上5点开始练声!");
System.out.println("上午练习钢琴!");
System.out.println("下午到声乐老师家练习唱歌!!");
System.out.println("晚上练习舞蹈基本功!");
System.out.println("表演的怎么样(y/n)!");
answer = input.next();
}
System.out.println("圆满完成");
}
}
为什么我吧while循环条件改成while(answer!="y")这样无论我输入y或者x他都是吧循环体的东西打出来
但是我觉得那句话和这话意思一样while(! answer.equals("y"))
他们之间的区别是什么?
刚学几天的新人碰到的问题 请谅解!
public class While2{
public static void main(String[] args){
String answer;//回答结果
Scanner input = new Scanner(System.in);
System.out.println("表演的怎么样?(y/n)");
answer = input.next();//获取用户输入
while(! answer.equals("y")){//输入的不是y则继续执行
System.out.println("早上5点开始练声!");
System.out.println("上午练习钢琴!");
System.out.println("下午到声乐老师家练习唱歌!!");
System.out.println("晚上练习舞蹈基本功!");
System.out.println("表演的怎么样(y/n)!");
answer = input.next();
}
System.out.println("圆满完成");
}
}
为什么我吧while循环条件改成while(answer!="y")这样无论我输入y或者x他都是吧循环体的东西打出来
但是我觉得那句话和这话意思一样while(! answer.equals("y"))
他们之间的区别是什么?
刚学几天的新人碰到的问题 请谅解!
解决方案 »
- ConcurrentModificationException如何解决
- 反编译遇到break MISSING_BLOCK_LABEL_369问题
- java 如何设置MDI窗体?
- jsp页面的界面开发
- 无法获取元数据
- 正确添加文字的位置问题
- 怎樣將存放于數據庫PDF文件顯示在瀏覽器中?
- java有像c++一样提供内联的宏返回当前的代码所在的行数吗?
- 请问java的开发环境在win2000和sun上的配置都需要那些软件?另外请推荐win2000以及sun上的开发工具,谢谢
- 关于Process中的getOutputStream
- spring(2.5)和struts2(2.0.14)集成问题!跪求高手指教!
- 如何去掉swing界面的外框,就好像QQ的聊天界面一样
对于equals方法,在Object里是这样定义的public boolean equals(Object obj) {
return (this == obj);
}可以看的出来,还是比较对象在内存中的地址
但是对于String,它重写了父类Object的equals方法(具体可自己看下String的源码)
重写后就是比较字符串的内容了
所以出现answer和"y"的地址永远不一样
所以无论你输出什么他都是true
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;
}
可以看出就是将字符串转成char[] 然后挨个比较
String 的 == 比较的是两个String类型的地址的比较,而 equals比较的则是两个String内容的,以下是String类equals方法的底层实现