1."==" 比的是什么
基本数据类型:具体的数据值
引用数据类型:地址值
所以用"=="判断引用数据类型是不可取的,可能存在地址值不同但是具体值是相等的情况
package day6.StringCompare;
public class Demo1 {
public static void main(String[] args) {
String str1=new String("abc");
String str2=new String("abc");
String str3=str1;
System.out.println(str1==str2);//false
System.out.println(str1==str3);//true
}
}
像上述代码,str1、str2、str3三个字符串值都相等,但是str1==str2的结果是false,str1==str3的结果就是true
2.字符串的比较
① boolean equals(比较的字符串) 完全一样的结果才是true,否则是false
② boolean equalsgnoreCase(比较的字符串) 忽略大小写的比较(可用于比较验证码)
package day6.StringCompare;
public class Demo2 {
public static void main(String[] args) {
//创建两个字符串对象
String str1=new String("abc");
String str2="Abc";
//== 比较
//基本数据类型:比较的是数据值
//引用数据类型:比较的是地址值
System.out.println(str1==str2);//false
//比较字符串对象的内容是否相等
boolean result1=str1.equals(str2);
System.out.println(result1);//false
//比较字符串对象的内容是否相等,但是忽略大小写
boolean result2=str1.equalsIgnoreCase(str2);
System.out.println(result2);//true
}
}
例子 用户登录
package day6.StringCompare;
import java.util.Scanner;
//需求:已知正确的用户名和密码,请用程序实现模拟用户登录。
// 总共给三次机会,登录之后,给出相应的提示
public class Test1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String name = "33233de";
String password = "123456";
//三次机会
for (int i = 0; i < 3; i++) {
System.out.println("请输入用户名");
String userName = sc.next();
System.out.println("请输入密码");
String userPassword = sc.next();
//判断用户名和密码是否正确
if (userName.equals(name) && userPassword.equals(password)) {
//相等,给出提示
System.out.println("登录成功");
return;
} else {
//不相等,提示用户名错误
if (i != 2) {
System.out.println("用户名或者密码错误,你还有" + (2 - i) + "次机会");
} else {
System.out.println("账户" + userName + "已被锁定");
}
}
}
}
}