equals和==的一些测试!【转】
来源:互联网 发布:平面设计书籍知乎 编辑:程序博客网 时间:2024/06/16 14:36
原文地址:http://blog.csdn.net/bulargy/article/details/1509584#comments
public class EqualsDemo {
/**
* @param args
*/
public static void main(String[] args) {
boolean boo1 = true;
boolean boo2 = true;
boolean boo3 = false;
boolean boo4 ;
boolean boo5 = boo1;
//boolean boo5 = new boolean();//不合法的定义
System.out.println("boo1==boo2 ? "+(boo1==boo2));
System.out.println("boo1==boo3 ? "+(boo1==boo3));
//System.out.println("boo1==boo2 ? "+(boo1.equals(boo2)));//没有equals方法
System.out.println("boo1==boo5 ? "+(boo1==boo5));
//System.out.println("boo3==boo4 ? "+(boo3==boo4));//boo4未初始化
System.out.println();
String s1 = "abcd";
String s2 = new String("abcd");
String s3 = "abcd";
String s4 = new String("abcd");
String s5 = s1;
String s6 = s2;
String s7;
String s8 = new String();
String s9 ="";
System.out.println("s1==s2 ? "+(s1==s2));
System.out.println("s1.equals(s2) ? "+s1.equals(s2));
System.out.println("s1==s3 ? "+(s1==s3));
System.out.println("s1.equals(s3) ? "+s1.equals(s3));
System.out.println("s2==s4 ? "+(s2==s4));
System.out.println("s2.equals(s4) ? "+s2.equals(s4));
System.out.println("s1==s5 ? "+(s1==s5));
System.out.println("s1.equals(s5) ? "+s1.equals(s5));
System.out.println("s2==s6 ? "+(s2==s6));
System.out.println("s2.equals(s6) ? "+s2.equals(s6));
//System.out.println("s7==s8 ? "+(s7==s8));//s7未初始化
//System.out.println("s7.equals(s7) ? "+s7.equals(s8));//s7未初始化
System.out.println("s8==s9 ? "+(s8==s9));
System.out.println("s8.equals(s9) ? "+s8.equals(s9));
System.out.println("s8= "+s8);
System.out.println("s9= "+s9);
System.out.println();
int i1 = 11;
int i2 = new Integer(11);
int i3 = 11;
int i4 = new Integer(11);
int i5 = i1;
int i6 = i2;
int i7;
int i8 = new Integer(0);
int i9 = 0;
System.out.println("i1==i2 ? "+(i1==i2));
//System.out.println("i1.equals(i2) ? "+i1.equals(i2));//没有equals方法
System.out.println("i1==i3 ? "+(i1==i3));
//System.out.println("i1.equals(i3) ? "+i1.equals(i3));//没有equals方法
System.out.println("i2==i4 ? "+(i2==i4));
//System.out.println("i2.equals(i4) ? "+i2.equals(i4));//没有equals方法
System.out.println("i1==i5 ? "+(i1==i5));
//System.out.println("i1.equals(i5) ? "+i1.equals(i5));//没有equals方法
System.out.println("i2==i6 ? "+(i2==i6));
//System.out.println("i2.equals(i6) ? "+i2.equals(i6));//没有equals方法
//System.out.println("i7==i8 ? "+(i7==i8));//i7未初始化
//System.out.println("i7.equals(i7) ? "+i7.equals(i8));//没有equals方法
System.out.println("i8==i9 ? "+(i8==i9));
//System.out.println("i8.equals(i9) ? "+i8.equals(i9));//没有equals方法
System.out.println("i8= "+i8);
System.out.println("i9= "+i9);
System.out.println();
}
}
运行结果:
boo1==boo2 ? true
boo1==boo3 ? false
boo1==boo5 ? true
s1==s2 ? false
s1.equals(s2) ? true
s1==s3 ? true
s1.equals(s3) ? true
s2==s4 ? false
s2.equals(s4) ? true
s1==s5 ? true
s1.equals(s5) ? true
s2==s6 ? true
s2.equals(s6) ? true
s8==s9 ? false
s8.equals(s9) ? true
s8=
s9=
i1==i2 ? true
i1==i3 ? true
i2==i4 ? true
i1==i5 ? true
i2==i6 ? true
i8==i9 ? true
i8= 0
i9= 0
小结:
1、任何对象使用之前都要初始化,仅仅声明是不够的;
2、只有String等对象形式数据才有equals方法,基本数据类型是没有的;
然后是一个数组的:
import java.util.Arrays;
public class EqualsArrayDemo {
public static void main(String[] args) {
int[] arr1 = {1, 2, 3, 4, 5};
int[] tmp1 = arr1;
int[] tmp2 = arr1;
System.out.print("通过tmp1取出数组值:");
for(int i = 0; i < tmp1.length; i++)
System.out.print(tmp1[i] + " ");
System.out.print(" 通过tmp2取出数组值:");
for(int i = 0; i < tmp2.length; i++)
System.out.print(tmp2[i] + " ");
tmp1[2] = 9;
System.out.print(" 通过tmp1取出数组值:");
for(int i = 0; i < tmp1.length; i++)
System.out.print(tmp1[i] + " ");
System.out.print(" 通过tmp2取出数组值:");
for(int i = 0; i < tmp2.length; i++)
System.out.print(tmp2[i] + " ");
System.out.println();
int[] arr2 = {1, 2, 3, 4, 5};
int[] arr3 = {5, 6, 7, 8, 9, 10, 11};
int[] tmp3 = arr2;
int[] arr4 = new int [] {1, 2, 3, 4, 5};
System.out.print("使用tmp3取出arr2中的元素:");
for(int i = 0; i < tmp3.length; i++)
System.out.print(tmp3[i] + " ");
tmp3 = arr3;
System.out.print(" 使用tmp3取出arr3中的元素:");
for(int i = 0; i < tmp3.length; i++)
System.out.print(tmp3[i] + " ");
System.out.println();
System.out.println("arr1==arr2 ? "+(arr1==arr2));
System.out.println("arr1.equals(arr2) ? "+arr1.equals(arr2));
System.out.println("Arrays.equals(arr1,arr2) ? "+Arrays.equals(arr1,arr2));
System.out.println("tmp1==tmp2 ? "+(tmp1==tmp2));
System.out.println("tmp1.equals(tmp2) ? "+tmp1.equals(tmp2));
System.out.println("Arrays.equals(tmp1,tmp2) ? "+Arrays.equals(tmp1,tmp2));
System.out.println("arr2==arr4 ? "+(arr2==arr4));
System.out.println("arr2.equals(arr4) ? "+arr2.equals(arr4));
System.out.println("Arrays.equals(arr2,arr4) ? "+Arrays.equals(arr2,arr4));
}
}
运行结果:
通过tmp1取出数组值:1 2 3 4 5
通过tmp2取出数组值:1 2 3 4 5通过tmp1取出数组值:1 2 9 4 5
通过tmp2取出数组值:1 2 9 4 5
使用tmp3取出arr2中的元素:1 2 3 4 5
使用tmp3取出arr3中的元素:5 6 7 8 9 10 11
arr1==arr2 ? false
arr1.equals(arr2) ? false
Arrays.equals(arr1,arr2) ? false
tmp1==tmp2 ? true
tmp1.equals(tmp2) ? true
Arrays.equals(tmp1,tmp2) ? true
arr2==arr4 ? false
arr2.equals(arr4) ? false
Arrays.equals(arr2,arr4) ? true
小结:
1、=号仅仅是数据对象在内存中的引用而已;
2、equals和==都是比较是不是引用自同一个对象,不是比较值的;
3、比较值应该用Arrays.equals()方法,如果是多维数组要用Array.deepEquals()方法;
- equals和==的一些测试!
- equals和==的一些测试!【转】
- 关于==和equals引发的一些思考
- 关于 equals 和 == 的一些思考
- “=”和“equals()”的区别
- java ==和equals、equals和hashCode的区别
- 测试对象的等价性以及==与equals的区别和用法
- 如何使用== 、!=和equals()来测试对象的等价性
- 对于hashCode和equals的一些理解
- equals 和 ==, equals 和 hashcode
- HashCode 和Equals 测试
- String 类的一些理解 关于==、equals、null
- 测试对象的等价性(== 与 equals)
- == equals和Arrays.equals
- "=="和"equals()"
- equals和==
- equals和==
- equals和==
- VC++用 API 作简繁体转换
- 聚合与组合的区别
- Any、All查询
- 【转】浏览器升级到ie9后fckeditor无法复制,上传图片,弹出浮层内容不显示怎么办?
- 计算机各个领域内较好的期刊和会议
- equals和==的一些测试!【转】
- Opencv基础教程笔记2
- 让DatePick是不可编辑的
- 如何调用 DLL 中的函数
- Android的网络与通信
- STL::queue 队列使用简要说明
- MQSeries AIX 版 V5.1 手册
- Oracle表空间及表分区
- Android 4.0.3 源代码结构分析(一)