public class TestStringEquals {
public static void main(String[] args) {
String a="wang";
String b="wang";
System.out.println(a==b);
System.out.println(a.equals( b ));
System.out.println("---------------------");
String c=new String("wang");
System.out.println(a==c);
System.out.println(a.equals( c ));
}
}
结果为
true
true
---------------------
false
true
https://www.cnblogs.com/dolphin0520/p/3592500.html
虽然里面说了==与equals的区别,但没有说清楚这种a为什么等于b。
似乎直接赋值时是作为基本数据类型来看待(具体方法待查),而再new的时候则是创建的一个对象(?)。
再举一例:
public class TestUpperLower {
public static void main(String[] args) {
Scanner input =new Scanner( System.in );
String uname,pwd;
System.out.println("请输入用户名:");
uname=input.next();
System.out.println("请输入密码:");
pwd=input.next();
/*if(uname=="TOM"&&pwd=="1234567"){
System.out.println("登陆成功");
}else{
System.out.println("用户名或密码不正确");
}*/
if(uname.equals( "TOM" )&&pwd.equals( "1234567" )){
System.out.println("登陆成功");
}else{
System.out.println("用户名或密码不正确");
}
}
}
使用==号时,显示用户或者密码不正确。
使用equals时,登陆成功。
在判断String是否相等时最好还是用equals。
———————————————————————
注意
equals比的是值
==比的是地址