Java-005 字符串比较
字符串比较常见的操作,包括比较相等,比较大小,比较前缀和后缀串等。在Java中,比较字符串的常用方法有3个:equals()方法,equalsIgnoreCase()方法,compareTo()方法。
equals()方法
equals()方法将着歌地比较两个字符串的每个字符是否相同。如果像个字符串相同的字符和长度,它返回true,否则发你false。对于字符的大小写,也在检查的范围之内。equals()方法的语法格式如下:
str1.equals(str2);
str1和str2可以是字符串变量,也可以是字符串字面量。例如,下列表达是是合法的:
"hello".equals(greeting)
下面的代码说明了equals()方法的使用:
String str1 = "abc";
String str2 = new String("abc");
String str3 = "ABC";
System.out.println(str1.equals(str2));//输出true
System.out.println(str1.queals(str3));//输出false
综合例子:
String sys = "学生信息管理";
System.out.println("欢迎进入《" + sys + "》系统");
System.out.println("请设置一个管理员密码:");
Scanner input = new Scanner(System.in);
String pass = input.next(); // 设置密码
System.out.println("重复管理员密码:");
input = new Scanner(System.in);
String pass1 = input.next(); // 确认密码
if (pass.equals(pass1)) { // 比较两个密码
System.out.println("已生效,请牢记密码:" + pass);
} else {
System.out.println("两次密码不一致,请重新设置。");
}
equalsIgnoreCase()方法
equalsIgnoreCase()方法的作用和语法于equals()犯法完全相同,唯一不同的是qualsIgnore()比较是不区分大小写。当比较字符串时,它会认为A-Z和a-z是一样的。
下面的代码说明了equalsIgnoreCase()的使用:
String str1 = "abc"; String str2 = "ABC";
System.out.println(str1.equalsIgnoreCase(str2));//输出true
综合例子:
String sys = "学生信息管理";
System.out.println("欢迎进入《" + sys + "》系统");
System.out.println("请输入管理员名称:");
Scanner input = new Scanner(System.in);
String name = input.next(); // 获取用户输入的名称
System.out.println("请输入管理员密码:");
input = new Scanner(System.in);
String pass = input.next(); // 获取用户输入的密码
// 比较用户名与密码,注意此处忽略大小写
if (name.equalsIgnoreCase("admin") && pass.equalsIgnoreCase("somboy")) { // 验证
System.out.println("登录成功。");
} else {
System.out.println("登录失败。");
}
equals() 与==的比较
理解equals()方法和==运算符执行的是两个不同的操作是重要的。如同刚才解释的那样,equals()方法比较字符串对象种的字符。而==运算符比较连个对象引用看它们是否引用相同的实例
String s1 = "Hello"; String s2 = new String(s1); System.out.println(s1.equals(s2)); // 输出true System.out.println(s1 == s2); // 输出false
compareTo()方法
通常,仅仅知道两个字符串是否相同是不够的。对于排序引用来说,必须知道一个字符串是大于等于还是小于另一个。一个字符串小于另一个指的是它在字典中先出现。而一个字符串大与另一个指的是它在字典中后出现。字符串(String)的compareTo()方法实现了这种功能。
compareTo()方法用于按字典顺序边角连个字符串的大小,该比较是基于字符串各个字符的Unicode值。compareTo()方法的语法格式如下:
str.compareTo(String otherstr);
它会按字典顺序将str表示的字符序列与otehrstr参数表示的字符序列进行比较如果字典顺序str位于oterster参数之前,比较结果为一个负证书;如果str位于otherstr之后,比较结果为一个正整数;如果连个字符串相等,则结果为0。
提示如果连个字符串调用equals()方法返回true,那么调用compareTo()方法会返回0。
String str = "A";
String str1 = "a";
System.out.println("str=" + str);
System.out.println("str1=" + str1);
System.out.println("str.compareTo(str1)的结果是:" + str.compareTo(str1));
System.out.println("str1.compareTo(str)的结果是:" + str1.compareTo(str));
System.out.println("str1.compareTo('a')的结果是:" + str1.compareTo("a"));
上述代码定义了两个字符串“A”和“a”,然后调用compareTo()方法进行相互比较。最后一行代码拿“a”与“a”进行比较,由于两个字符串相同比较为0。运行后输出的结果如下:
str = A
str1 = a
str.compareTo(str1)的结果是:-32
str1.compareTo(str)的结果是:32
str1.compareTo('a')的结果是:0

浙公网安备 33010602011771号