JAVA 字符串内容的比较方法

字符串内容的比较方法:

如果是使用==比较,那么是进行地址值的相同判断;
如果就是希望进行字符串内容比较,则需要使用String当中的成员方法:

  • public boolean(Object obj):进行字符串的内容比较,严格区分大小写,obj是另一个对象。
    Object也是一种类型,可以接收任何类型的数据。

  • public boolean equalsIgnoreCase(String str):进行字符串的内容比较,忽略大小写

注意事项:

1.想要进行字符串内容的比较,一定要使用equals方法,不要使用==比较。

2.equals方法具有对称性,a.equals(b)和b.equals(a)效果一样。

3.小技巧:如果equals方法需要比较的两个字符串中,有一个是常量,那么尽量将常量写在前面。
调用方法时,对象名当中如果存储的是null值,那么将会发生空指针异常
java.lang.NullPointerException

4.直接写上双引号就是字符串对象,所以用双引号直接点儿也能调用方法

public class Demo01StringEquals {
	public static void main(String[] args) {
		char[] array = { 'a', 'b', 'c' };
		String str1 = new String(array);

		String str2 = "abc";
		System.out.println(str1 == str2); // false

		// 进行字符串内容比较。用equals方法
		// 拿着str1跟str2进行内容比较
		boolean same = str1.equals(str2);
		System.out.println(same); // true
		System.out.println(str2.equals(str1)); // true

		// 跟任意常量比较,推荐常量在前
		String str3 = null;
		System.out.println("abc".equals(str3)); // false,推荐
//		System.out.println(str3.equals("abc"));  //错误写法,空指针异常
		
		String str4 = "Hello";
		String str5 = "hello";
		System.out.println(str4.equals(str5));  //false
		System.out.println("Hello".equalsIgnoreCase(str5));//true
		System.out.println(str4.equalsIgnoreCase(str5));  //true
	}
}

使用String当中的equals和equalsIgnoreCase两个方法,来模拟一个简单的登录场景。

分析:
1.登录名需要用户名和密码两个信息,也就是两个字符串。
2.用户名和密码应该使用键盘输入,获取两个字符串。(使用scanner)
3.怎样才算是登录成功?注册的时候提前写好正确的用户名、密码
4.判断输入的用户名和密码,与正确的用户名、密码必须完全一样
A用户名必须正确
B.密码必须正确
A和B是“并且”关系,逻辑运算符&&
5.判断一下登录是否成功:if
6.如果登录成功,显示欢迎信息,如果登录失败就退出系统

public class Demo02Login {
	public static void main(String[] args) {
		// 注册用户名和密码
		String registname = "admin";
		String registpassword = "123456";

		// 键盘输入两个字符串
		Scanner sc = new Scanner(System.in);
		System.out.println("输入用户名:");
		String inputname = sc.next();
		System.out.println("请输入密码:");
		String inputpassword = sc.next();

		// 判断条件
		// A.输入的用户名和注册时候的正确用户名必须一样(用户名不区分大小写)
		// equalsIgnoreCase
		// B.输入的密码和注册时候密码判断用:equals

		if (inputname.equalsIgnoreCase(registname) && inputpassword.equals(registpassword)) {
			System.out.println("欢迎登陆");
		} else {
			System.out.println("登陆失败,退出");
		}
	}
}

在刚才登陆的代码当中,加入重试三次的功能。

分析:重复三次的逻辑,应该使用循环,次数确定用for循环,不确定用while。

需要在错误的时候,显示剩余多少次的提示
如果成功了,那么显示欢迎信息,并且退出系统


public class Demo03LoginRetry {
	public static void main(String[] args) {
		// 注册用户名和密码
		String registname = "admin";
		String registpassword = "123456";

		// 键盘输入两个字符串
		Scanner sc = new Scanner(System.in);

		for (int i = 1; i <= 3; i++) {
			System.out.println("输入用户名:");
			String inputname = sc.next();
			System.out.println("请输入密码:");
			String inputpassword = sc.next();

			if (inputname.equalsIgnoreCase(registname) && inputpassword.equals(registpassword)) {
				System.out.println("欢迎登陆");
				break; // 成功,不再循环,应该退出循环
			} else {
				if (i == 3) {//如果是最后一次
					System.out.println("次数用尽。系统退出。");
					break;
				}else {//如果不是最后一次
					System.out.println("登陆失败,剩余次数:" + (3 - i) + "次。请重试。");
				}
			}
		}

	}
}
发布了52 篇原创文章 · 获赞 6 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_43472877/article/details/104103650