字符串的比较

字符串的比较

在比较具体的值的时候比较的是正常的

int a=10;

int b=10;

System.out.println(a==b);//c比较的数据值,结果为true

若是比较的是应用类型的数据的时候

String s1=new String("abc");

String s2=new String("abc");

System.out.println(s1==s2);//此时比较的是两个对象的地址空间

//若是直接赋值的话
String s1="abc";

String s2="abc";

System.out.println(s1==s2);//s1和s2是直接在串池内的,s2会直接复用s1的空间地址,得出来的结果一定是true,s1和s2的空间地址是相同的。
//对象的地址值和串池内的地址值相互比较
String s1=new String("abc");//在堆内开辟除的小空间,记录的是对内的地址值

String s2="abc";//记录串池内的地址值

System.out.println(s1==s2);//false
方法 作用
boolean equals方法(要比较的字符串) 完全一样才是true,否则为false
boolean equalsIgnoreCase(要比较的字符串) 忽略大小写(验证码)
 public static void main(String[] args) {
        //1、创建两个字符串对象
        String s1 = new String("abc");
        String s2 = "abc";
        //2、比较
        boolean result = s1.equals(s2);
        System.out.println(result);
        //3、比较字符串的内容是否相等忽略大小写,只能是英文状态下
        String s3 = new String("Abc");
        String s4 = "abc";
        boolean result1 = s3.equalsIgnoreCase(s4);
        System.out.println(result1);
    }
public static void main(String[] args) {
        //1、键盘录入的abc
        Scanner s1=new Scanner(System.in);
        System.out.println("输入字符串:");
        String result1=s1.next();
        //2、代码中直接定义的abc
        String s2="abc";
        boolean result2=s1.equals(s2);
        System.out.println(result2);
    }
键盘录入的是new过的,是在堆内的小空间内的,而直接赋值是在串池的

结论:以后要是向比较难字符串的内容,就必须用String里面的方法

案例:实现用户登录
 public static void main(String[] args) {
        //已知正确的用户名和密码,请用程序实现模拟用户登录。总共给三次机会,登录之后,给出相应的提示
        // 1、用户名和密码,两个变量
        String rightUserName = "zhangsan";
        String rightPassWord = "123456";
        //2、用程序实现模拟用户登录,ctrl+alt+t可以实现多代码的包裹
        Scanner sc = new Scanner(System.in);
        for (int i = 0; i < 3; i++) { 
            System.out.println("请输入用户名:");
            String userName = sc.next();
            System.out.println("请输入密码:");
            String passWord = sc.next();
            //3、比较
            if (userName.equals(rightUserName) && passWord.equals(rightPassWord)) {
                System.out.println("登录成功!!!");
            } else {
                System.out.println("用户登录失败,用户名或密码错误,你还剩下" + (2 - i) + "次机会");
            }
        }
    }