String中的区别:
==是判断左右两端的数据是否一致
equals:object类提供的一个方法,用来判断两个对象是否相等
equals:可以自己重写
字符串的判断一定要用equals来判断。
- 直接String一个变量:
package equals;
public class test {
public static void main(String[] args) {
String a="love";
String b="love";
System.out.println(a==b);
System.out.println(a.equals(b));
}
}
虽然String也是一个类,按理说两个对象的地址应该不一样。但是由于内部字符串很多,java设计的时候把String的值作为==的判断条件,重复利用了字符串单元。(String类特殊)
- String new对象:
package equals;
public class test {
public static void main(String[] args) {
String a=new String("love");
String b=new String("love");
System.out.println(a==b);
System.out.println(a.equals(b));
}
}
首先String(“love”)造了一个对象,然后又分别new了两个对象去引用love,并把new的对象分别赋值给a b。
两个new出来的对象的内存地址肯定不一样。所以==报false。
登陆小测试:
package equals;
import java.util.Scanner;
public class test {
public static void main(String[] args) {
String admin="Betsy";
String password="2021";
Scanner sc=new Scanner(System.in);
System.out.println("请输入用户名:");
String user=sc.nextLine();
System.out.println("请输入密码:");
String pass=sc.nextLine();
if(user.equals(admin)&&pass.equals(password))
System.out.println("登陆成功");
else
System.out.println("登陆失败");
}
}
注意这里要用equals。