从头认识java-14.4 Java提供的数组的实用功能(1)
2015-12-24 16:53
597 查看
这一章节我们来讨论一下Java提供的数组的实用功能。
1.复制
我们下面来比较一下System.arraycopy和for
输出:
6
-------------
10
从输出的数据看见,for比System.arraycopy要慢一些。当然,这种慢是忽略不计的,上面只是实验而已。
不过我们需要注意:
(1)使用System.arraycopy两个数组必须是同一个类型
(2)数组的复制里面,如果是基本类型,则复制值,如果是对象,则复制引用(浅复制)
2.数组的对比
需要满足两个条件:
(1)对应元素需要一致
(2)元素个数需要一致
输出:
true
false
false
下面举一些反例:
输出:
false
输出:
false
上面的例子是基础类型的,下面是对象:
输出:
true
false
总结:这一章节主要讨论了Java提供的数组的实用功能。
这一章节就到这里,谢谢。
-----------------------------------
目录
1.复制
我们下面来比较一下System.arraycopy和for
package com.ray.ch14; import java.util.Arrays; public class Test { public static void main(String[] args) { int[] a = new int[10000000]; Arrays.fill(a, 1); int[] b = new int[10000000]; long startTime = System.currentTimeMillis(); System.arraycopy(a, 0, b, 0, a.length); long endTime = System.currentTimeMillis(); System.out.println(endTime - startTime); System.out.println("-------------"); b = new int[10000000]; startTime = System.currentTimeMillis(); for (int i = 0; i < a.length; i++) { b[i] = a[i]; } endTime = System.currentTimeMillis(); System.out.println(endTime - startTime); } }
输出:
6
-------------
10
从输出的数据看见,for比System.arraycopy要慢一些。当然,这种慢是忽略不计的,上面只是实验而已。
不过我们需要注意:
(1)使用System.arraycopy两个数组必须是同一个类型
(2)数组的复制里面,如果是基本类型,则复制值,如果是对象,则复制引用(浅复制)
2.数组的对比
需要满足两个条件:
(1)对应元素需要一致
(2)元素个数需要一致
package com.ray.ch14; import java.util.Arrays; public class Test { public static void main(String[] args) { int[] a = new int[5]; Arrays.fill(a, 1); int[] b = new int[5]; Arrays.fill(b, 1); int[] c = new int[5]; Arrays.fill(c, 2); int[] d = new int[6]; Arrays.fill(d, 1); System.out.println(Arrays.equals(a, b)); System.out.println(Arrays.equals(a, c));// 元素不一致 System.out.println(Arrays.equals(a, d));// 元素个数不一致 } }
输出:
true
false
false
下面举一些反例:
package com.ray.ch14; import java.util.Arrays; public class Test { public static void main(String[] args) { int[] a = new int[] { 1, 2, 3, 4, 5 }; int[] b = new int[] { 5, 4, 3, 2, 1 }; System.out.println(Arrays.equals(a, b)); } }
输出:
false
package com.ray.ch14; import java.util.Arrays; public class Test { public static void main(String[] args) { int[] a = new int[] { 1, 2, 3, 4, 5 }; int[] b = new int[] { 1, 2, 3, 4, 5, 6 }; System.out.println(Arrays.equals(a, b)); } }
输出:
false
上面的例子是基础类型的,下面是对象:
package com.ray.ch14; import java.util.Date; import java.util.Arrays; public class Test { public static void main(String[] args) { MyClass[] myClasses1 = new MyClass[2]; MyClass myClass1 = new MyClass(); MyClass myClass2 = new MyClass(); MyClass myClass3 = new MyClass(); MyClass myClass4 = new MyClass(); myClass1.setDate(new Date()); myClass2.setDate(new Date()); myClass3.setDate(new Date()); myClass4.setDate(new Date()); myClasses1[0] = myClass1; myClasses1[1] = myClass2; MyClass[] myClasses2 = new MyClass[2]; myClasses2[0] = myClass1; myClasses2[1] = myClass2; System.out.println(Arrays.equals(myClasses1, myClasses2)); myClasses2[0] = myClass3; myClasses2[1] = myClass4; System.out.println(Arrays.equals(myClasses1, myClasses2)); } } class MyClass { private Date date; public Date getDate() { return date; } public void setDate(Date date) { this.date = date; } }
输出:
true
false
总结:这一章节主要讨论了Java提供的数组的实用功能。
这一章节就到这里,谢谢。
-----------------------------------
目录
相关文章推荐
- java——opp
- 安卓学习记录-java-day7
- Java 实现导出excel表 POI
- org.springframework.beans.factory.BeanCreationException
- 《java编程思想》学习笔记-----Java 流
- java swing&awt 访问mysql数据库
- Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)
- 【Java EE (Struts2 + Spring + Hibernate)开发】 :Hibernate(二)之【HQL查询|条件查询|SQL查询】
- java.lang.ClassCastException: java.math.BigInteger cannot be cast to java.lang.Integer
- spring中@param和mybatis中@param使用区别
- JAVA基础(14) JSTL的C标签使用详解
- 关于spring mvc MaxUploadSizeExceededException 死循环解决方
- Java的对象与类
- 关于 myeclipse 中 java heap space的解决办法
- java *** 制作圣诞贺卡
- java proxool系统设置
- eclipse中出现ContainerBase.addChild: start: 的解决办法
- java__webService接口
- <Java> 获取当前系统时间
- 关于java支付宝接口的异步通知的问题