有两种方式可用于对象比较,分别是“==”和equals(),==用于比较两个对象的内存地址值是否相等,equals()方法用于比较两个对象的内容是否一致。- class TestEquals
- {
- public static void main(String[] args)
- {
- String str1=new String("java");
- String str2=new String("java");
- String str3=str2;
- if (str1==str2)
- {
- System.out.println("str1==str2");
- }
- else{
- System.out.println("str1!=str2");
- }
- if (str2==str3)
- {
- System.out.println("str2==str3");
- }
- else{
- System.out.println("str2!=str3");
- }
- }
- }
复制代码 运行结果为s
str1!=str2是因为str1和str2都是用new关键字开辟的空间,所以他们单独占有自己的内存空间,从而str1!=str2,而str3和str2指向了同一个内存空间,所以相等。下面再来看equals(0的比较
- class TestEquals1
- {
- public static void main(String[] args)
- {
- String str1=new String("java");
- String str2=new String("java");
- String str3=str2;
- if (str1.equals(str2))
- {
- System.out.println("str1 equals str2");
- }
- else{
- System.out.println("str1 not equals str2");
- }
- if (str2.equals(str3))
- {
- System.out.println("str2 equals str3");
- }
- else{
- System.out.println("str2 not equals str3");
- }
- }
- }
复制代码
由此可以看出两次比较都相同,所以可以知道equals是String类中的方法。所以equals是用来比较内容的而==用来比较内存地址值
|
|