实验4.4 字符串相等的比较
编写一个Java程序,分边按两种方式定义字符串,用运算符“==”与字符串equals()方法对这些字符串进行比较,使程序运行结果如下:
public class sentence {
public static void main(String[] args)
{
String str1="Hello",str2="Hello";
String str3=new String("Hello");
String str4=new String("Hello");
System.out.println("用运算符==进行比较结果如下:");
if(str1==str2)System.out.println("str1与str2相等");
else System.out.println("str1与str2不相等");
if(str3==str4)System.out.println("str3与str4相等");
else System.out.println("str3与str4不相等");
if(str3==str2)System.out.println("str2与str3相等");
else System.out.println("str2与str3不相等");
System.out.println("调用equals()方法进行比较结果如下:");
if(str1.equals(str2))System.out.println("str1与str2相等");
else System.out.println("str1与str2不相等");
if(str3.equals(str4))System.out.println("str3与str4相等");
else System.out.println("str3与str4不相等");
if(str2.equals(str3))System.out.println("str2与str3相等");
else System.out.println("str2与str3不相等");
}
}
对于一些可以共享的字符串对象,会先在String池(pool)中查找是否存在相同的String内容。如果有就直接返回,而不是直接创建一个新的String对象,以减少内存的耗用。
当直接使用""来定义一个字符串时,该字符串久会出现在String pool当中。
在Java程序中如果运算符“==”被用于两个引用名称时,它是用于比较两个引用名称是否引用同一对象;
不可以用“==”来比较两个字符串的字符内容是否相等。
当b与c分别引用各自不同的对象,如果要进行比较两个字符串对象的字符值是否相同,要使用equals()方法。