由于在Java中System.arraycopy()方法在一维数组和二维数组中的表现不同,所以做了一个测试



  1. public static void main(String[] args) {
  2.  
  3. int[] a = new int[] { 1, 2, 3, 4, 5, 6 };
  4. int[] b = new int[8];
  5. //System.arraycopy(原数组, 原数组起始位置, 目标数组, 目标数组起始位置, 复制长度);
  6. System.arraycopy(a, 0, b, 0, 3);
  7. b[1] = 100;
  8. System.out.print(Arrays.toString(a) + " ");
  9. System.out.print(Arrays.toString(b) + " ");
  10. System.out.println();
  11. //结果:[1, 2, 3, 4, 5, 6] [1, 100, 3, 0, 0, 0, 0, 0]
  12. //一维数组b中的值的改变并没有影响到原数组a中的元素的值
  13.  
  14. int[][] c = new int[][] { { 1, 1 }, { 2, 2 }, { 3, 3 } };
  15. int[][] d = new int[3][];
  16. //System.arraycopy(原数组, 原数组起始位置, 目标数组, 目标数组起始位置, 复制长度);
  17. System.arraycopy(c, 0, d, 0, 3);
  18. d[1][1] = 100;
  19.  
  20. for (int i = 0; i < c.length; i++) {
  21. for (int j = 0; j < c[i].length; j++) {
  22. System.out.print(c[i][j]+" ");
  23. }
  24. }
  25. System.out.println();
  26. for (int i = 0; i < d.length; i++) {
  27. for (int j = 0; j < d[i].length; j++) {
  28. System.out.print(d[i][j]+" ");
  29. }
  30. }
  31. //输出结果,可以看出,在二维数组中,目标数组的元素的改变影响到了原二维数组的值
  32. //1 1 2 100 3 3
  33. //1 1 2 100 3 3
  34. }

【Java基础】System.arraycopy()的使用详解的更多相关文章

  1. 《Java基础——break与continue用法详解》

    Java基础--break与continue用法详解       1. break语句: 规则: 1. 仅用于循环语句和switch语句当中,用于跳出循环. 2. 当只有一层循环时,则直接跳出循环,不 ...

  2. [java基础] 002 - 位运算符的详解和妙用

    一:位运算符详解 位运算符主要用来对操作数二进制的位进行运算.按位运算表示按每个二进制位(bit)进行计算,其操作数和运算结果都是整型值. Java 语言中的位运算符分为位逻辑运算符和位移运算符两类, ...

  3. Java基础篇(JVM)——字节码详解

    这是Java基础篇(JVM)的第一篇文章,本来想先说说Java类加载机制的,后来想想,JVM的作用是加载编译器编译好的字节码,并解释成机器码,那么首先应该了解字节码,然后再谈加载字节码的类加载机制似乎 ...

  4. [Java基础] System.arraycopy使用

    转载自:http://blog.csdn.net/java2000_net/article/details/4059465 System提供了一个native 静态方法arraycopy(),我们可以 ...

  5. Java基础(basis)-----抽象类和接口详解

    1.抽象类 1.1 abstract修饰类:抽象类 不可被实例化 抽象类有构造器 (凡是类都有构造器) 抽象方法所在的类,一定是抽象类 抽象类中可以没有抽象方法 1.2 abstract修饰方法:抽象 ...

  6. Java 基础 - System.arraycopy() 浅拷贝 深拷贝

    ref: https://blog.csdn.net/balsamspear/article/details/85069207 https://blog.csdn.net/balsamspear/ar ...

  7. 《手把手教你》系列基础篇(九十五)-java+ selenium自动化测试-框架之设计篇-java实现自定义日志输出(详解教程)

    1.简介 前面宏哥一连几篇介绍如何通过开源jar包Log4j.jar.log4j2.jar和logback实现日志文件输出,Log4j和logback确实很强大,能生成三种日志文件,一种是保存到磁盘的 ...

  8. Java工程师 基础+实战 完整路线图(详解版)

    Java工程师 基础+实战 完整路线图(详解版)   Java 基础 Java 是一门纯粹的面向对象的编程语言,所以除了基础语法之外,必须得弄懂它的 oop 特性:封装.继承.多态.此外还有泛型.反射 ...

  9. java的集合框架最全详解

    java的集合框架最全详解(图) 前言:数据结构对程序设计有着深远的影响,在面向过程的C语言中,数据库结构用struct来描述,而在面向对象的编程中,数据结构是用类来描述的,并且包含有对该数据结构操作 ...

随机推荐

  1. python六核心编程——条件和循环

    1.if声明 单 if 通过使用布尔运算符的声明 and , or 和 not. if-elif-else. elif即else if if expression1:      expr1_true_ ...

  2. 【译】ASP.NET MVC 5 教程 - 6:通过控制器访问模型的数据

    原文:[译]ASP.NET MVC 5 教程 - 6:通过控制器访问模型的数据 在本节中,你将新建一个MoviesController 类,并编写获取电影数据的代码,使用视图模板将数据展示在浏览器中. ...

  3. Spark技术内幕:Stage划分及提交源代码分析

    当触发一个RDD的action后.以count为例,调用关系例如以下: org.apache.spark.rdd.RDD#count org.apache.spark.SparkContext#run ...

  4. pygame系列_draw游戏画图

    说到画图,pygame提供了一些很有用的方法进行draw画图. ''' pygame.draw.rect - draw a rectangle shape draw a rectangle shape ...

  5. Linux渗透+SSH内网转发

    http://www.jb51.net/hack/58514.html http://blog.chinaunix.net/uid-756931-id-353243.html http://blog. ...

  6. POJ 2536 Gopher II(二分图的最大匹配)

    题目链接:http://poj.org/problem?id=2536 题意:已知有n仅仅老鼠的坐标,m个洞的坐标,老鼠的移动速度为V,S秒以后有一仅仅老鹰要吃老鼠,问有多少个老鼠被吃. 非常明晰,二 ...

  7. Java 并发编程(三)为线程安全类中加入新的原子操作

    Java 类库中包括很多实用的"基础模块"类.通常,我们应该优先选择重用这些现有的类而不是创建新的类.:重用能减少开发工作量.开发风险(由于现有类都已经通过測试)以及维护成本.有时 ...

  8. PHP socket类

    没事的时候自己封装了一个socket类 功能非常easy和curl功能是一样的 class socketClass{ private $host; private $url; private $err ...

  9. 3 分钟的高速体验 Apache Spark SQL

    "War of the Hadoop SQL engines. And the winner is -?" 这是一个非常好的问题.只要.无论答案是什么.我们都值花一点时间找出 Sp ...

  10. Scala Hello 示例

    object ScalaDemo1 {   def main(args: Array[String]) {     println("Hello,world!");   } }