📅  最后修改于: 2020-03-27 07:43:29             🧑  作者: Mango
字符串是字符序列。在Java中,String对象是不可变的,这意味着它们是恒定的,一旦创建就不能更改。
下面是比较Java中两个字符串的5种方法:
该值计算为(int)str1.charAt(i)–(int)str2.charAt(i)
例子:
输入 1: GeeksforGeeks
输入 2: Practice
输出: -9
输入 1: Geeks
输入 2: Geeks
输出: 0
输入 1: GeeksforGeeks
输入 2: Geeks
输出: 8
程序:
// Java按照字典方法比较两个字符串strings
public class GFG {
// 比较两个字符串,每调用库
public static int stringCompare(String str1, String str2)
{
int l1 = str1.length();
int l2 = str2.length();
int lmin = Math.min(l1, l2);
for (int i = 0; i < lmin; i++) {
int str1_ch = (int)str1.charAt(i);
int str2_ch = (int)str2.charAt(i);
if (str1_ch != str2_ch) {
return str1_ch - str2_ch;
}
}
// 边界情况
// String 1="Geeks" and String 2="GeeksforGeeks"
if (l1 != l2) {
return l1 - l2;
}
// If none of the above conditions is true,
// it implies both the strings are equal
else {
return 0;
}
}
// 测试代码
public static void main(String args[])
{
String string1 = new String("GeeksforGeeks");
String string2 = new String("Practice");
String string3 = new String("Geeks");
String string4 = new String("Geeks");
// Comparing for String 1 < String 2
System.out.println("比较 " + string1 + " 和 " + string2
+ " : " + stringCompare(string1, string2));
// 比较String 3 = String 4
System.out.println("比较 " + string3 + " 和 " + string4
+ " : " + stringCompare(string3, string4));
// 比较String 1 > String 4
System.out.println("比较 " + string1 + " 和 " + string4
+ " : " + stringCompare(string1, string4));
}
}
输出:
比较 GeeksforGeeks 和 Practice : -9
比较 Geeks 和 Geeks : 0
比较 GeeksforGeeks 和 Geeks : 8
str1.equals(str2);
这里str1和str2都是要比较的字符串。
例子:
输入 1: GeeksforGeeks
输入 2: Practice
输出: false
输入 1: Geeks
输入 2: Geeks
输出: true
输入 1: geeks
输入 2: Geeks
输出: false
程序:
// Java比较连个字符串
public class GFG {
public static void main(String args[])
{
String string1 = new String("GeeksforGeeks");
String string2 = new String("Practice");
String string3 = new String("Geeks");
String string4 = new String("Geeks");
String string5 = new String("geeks");
// 比较 String 1 != String 2
System.out.println("比较 " + string1 + " 和 " + string2
+ " : " + string1.equals(string2));
// 比较 String 3 = String 4
System.out.println("比较 " + string3 + " 和 " + string4
+ " : " + string3.equals(string4));
// 比较 String 4 != String 5
System.out.println("比较 " + string4 + " 和 " + string5
+ " : " + string4.equals(string5));
// 比较 String 1 != String 4
System.out.println("比较 " + string1 + " 和 " + string4
+ " : " + string1.equals(string4));
}
}
输出:
比较 GeeksforGeeks 和 Practice : false
比较 Geeks 和 Geeks : true
比较 Geeks 和 geeks : false
比较 GeeksforGeeks 和 Geeks : false
str2.equalsIgnoreCase(str1);
这里str1和str2都是要比较的字符串。例子:
输入 1: GeeksforGeeks
输入 2: Practice
输出: false
输入 1: Geeks
输入 2: Geeks
输出: true
输入 1: geeks
输入 2: Geeks
输出: true
程序:
// Java比较连个字符串
public class GFG {
public static void main(String args[])
{
String string1 = new String("GeeksforGeeks");
String string2 = new String("Practice");
String string3 = new String("Geeks");
String string4 = new String("Geeks");
String string5 = new String("geeks");
// 比较 String 1 != String 2
System.out.println("比较 " + string1 + " 和 " + string2
+ " : " + string1.equalsIgnoreCase(string2));
// 比较 String 3 = String 4
System.out.println("比较 " + string3 + " 和 " + string4
+ " : " + string3.equalsIgnoreCase(string4));
// 比较 String 4 = String 5
System.out.println("比较 " + string4 + " 和 " + string5
+ " : " + string4.equalsIgnoreCase(string5));
// 比较 String 1 != String 4
System.out.println("比较 " + string1 + " 和 " + string4
+ " : " + string1.equalsIgnoreCase(string4));
}
}
输出:
比较 GeeksforGeeks 和 Practice : false
比较 Geeks 和 Geeks : true
比较 Geeks 和 geeks : true
比较 GeeksforGeeks 和 Geeks : false
public static boolean equals(Object a, Object b)
这里a和b都是要比较的字符串对象。
例子:
输入 1: GeeksforGeeks
输入 2: Practice
输出: false
输入 1: Geeks
输入 2: Geeks
输出: true
输入 1: null
输入 2: null
输出: true
程序:
// Java展示比较两个字符
import java.util.*;
public class GFG {
public static void main(String args[])
{
String string1 = new String("GeeksforGeeks");
String string2 = new String("Geeks");
String string3 = new String("Geeks");
String string4 = null;
String string5 = null;
// Comparing for String 1 != String 2
System.out.println("比较 " + string1 + " 和 " + string2
+ " : " + Objects.equals(string1, string2));
// Comparing for String 2 = String 3
System.out.println("比较 " + string2 + " 和 " + string3
+ " : " + Objects.equals(string2, string3));
// Comparing for String 1 != String 4
System.out.println("比较 " + string1 + " 和 " + string4
+ " : " + Objects.equals(string1, string4));
// Comparing for String 4 = String 5
System.out.println("比较 " + string4 + " 和 " + string5
+ " : " + Objects.equals(string4, string5));
}
}
输出:
比较 GeeksforGeeks 和 Geeks : false
比较 Geeks 和 Geeks : true
比较 GeeksforGeeks 和 null : false
比较 null 和 null : true
int str1.compareTo(String str2)
工作:
它比较并返回以下值,如下所示:
例子:
输入 1: GeeksforGeeks
输入 2: Practice
输出: -9
输入 1: Geeks
输入 2: Geeks
输出: 0
输入 1: GeeksforGeeks
输入 2: Geeks
输出: 8
程序:
// Java比较两个字符串
import java.util.*;
public class GFG {
public static void main(String args[])
{
String string1 = new String("GeeksforGeeks");
String string2 = new String("Practice");
String string3 = new String("Geeks");
String string4 = new String("Geeks");
// Comparing for String 1 < String 2
System.out.println("比较 " + string1 + " 和 " + string2
+ " : " + string1.compareTo(string2));
// Comparing for String 3 = String 4
System.out.println("比较 " + string3 + " 和 " + string4
+ " : " + string3.compareTo(string4));
// Comparing for String 1 > String 4
System.out.println("比较 " + string1 + " 和 " + string4
+ " : " + string1.compareTo(string4));
}
}
输出:
比较 GeeksforGeeks 和 Practice : -9
比较 Geeks 和 Geeks : 0
比较 GeeksforGeeks 和 Geeks : 8
为什么不使用==进行字符串比较
通常,Java中的equals()和“ == “运算符都用于比较对象以检查是否相等,但这是两者之间的一些区别:
用简单的话来说,==检查两个对象是否指向相同的内存位置,而.equals()求和对象中值的比较。
例:
// Java展示==和.equal()的区别
public class Test {
public static void main(String[] args)
{
String s1 = new String("HELLO");
String s2 = new String("HELLO");
System.out.println(s1 == s2);
System.out.println(s1.equals(s2));
}
}
输出:
false
true
说明:这里正在创建两个String对象,即s1和s2。