【Java笔记】数组传递给方法
来源:互联网 发布:海外网络推广 编辑:程序博客网 时间:2024/05/20 15:10
数组传递给方法
数组的复制
在说数组传递给方法之前先扯一下数组的复制。一开始想进行数组的复制时,我丝毫没有犹豫的使用了赋值语句。
array1 = array2;
这样做 array1 的值的确和 array2 的内容一样了,但这并没有把 array2 的内容复制给 array1(这句话好绕啊)。
Java 中,可以使用赋值语句来复制基本数据类型的变量,但不能复制数组。将一个数组变量赋值给另一个数组变量,实际上是将一个数组的引用赋值给另一个数组。例如上面那条语句,实际上是将 array2 的引用值复制给了 array1,此时 array1 也指向了 array2 的内容,这样就没有指向原先 array1 的内容的了,原先 array1 的内容也无法引用了,就变成了垃圾,java 虚拟机将会自动收回。并且改变 array1 或 array2 任意一个的内容,两者的内容都会发生改变,因为它们是指向内存中同一个地方的。
所以如果要进行数组的复制的话据我所知有三种方法:
1. 使用循环语句逐个复制数组的元素。
2. 使用 System 类中的静态方法 arraycopy。
3. 使用 clone 方法复制数组。
数组传递给方法
和上面用赋值语句复制数组一样,数组传递给方法的也是数组的引用值。
所以和传递基本数据类型的变量不同,方法中对数组进行的修改在方法结束后这些修改还是保留的,因为方法中的数组和方法外的那个数组指向内存中同一块地方。下面的代码就很好的体现了这一特点。
public class Test { public static void main(String[] args) { int a = 1, b = 2; int[] array = {1, 2}; System.out.println("before swapInt"); System.out.println("a = " + a + "\tb = " + b); swapInt(a, b); System.out.println("after swapInt"); System.out.println("a = " + a + "\tb = " + b); System.out.println("\nbefore swapElement"); System.out.println("array is {" + array[0] + ", " + array[1] + "}"); swapElement(array); System.out.println("after swapElement"); System.out.println("array is {" + array[0] + ", " + array[1] + "}"); } public static void swapInt(int a, int b) { int temp = a; a = b; b = temp; } public static void swapElement(int[] array) { int temp = array[0]; array[0] = array[1]; array[1] = temp; }}
输出结果为
before swapInt
a = 1 b = 2
after swapInt
a = 1 b = 2before swapElement
array is {1, 2}
after swapElement
array is {2, 1}
可见数组传递给方法的是数组的引用值
- 【Java笔记】数组传递给方法
- JAVA给方法传递数组
- 将数组传递给方法
- java 18:给方法传递对象参数,对象数组
- JNI学习笔记 C++传递结构体、String、数组对象给JavaC++传递结构体、String、数组对象给Java
- JSP传递数组给JS的方法
- js传递数组给java后台
- jni中c++给java传递数组
- java 方法中传递数组
- JNI学习笔记(二)--C++传递结构体、String、数组对象给Java
- JNI学习笔记(二)--C++传递结构体、String、数组对象给Java
- java之给方法传递对象参数
- java如何给main方法传递实参
- 传递数组给函数
- 将php数组或者对象传递给javascript的方法
- 给cuda核函数传递二维数组的一种方法
- ajax给webmethod方法传递json数组,C#接收
- json数组作为参数传递给java时候object问题
- 史上最简单的 Spring MVC 教程(二)
- 多文件、多图片上传时遇到Error Initializing Session的解决办法
- centos6.6搭建apache+mysql+php环境(3)
- Pie HDU - 1969
- 蓝桥杯-查找整数
- 【Java笔记】数组传递给方法
- 1101. Quick Sort
- Chapter 1 - Introduction - 深度学习的来历 - 三次大潮
- 【ASP.Net】学习入门笔记二
- 浏览器UI线程 和 js线程
- Difference between component and directive in Angular 2
- python生产者/消费者示例
- unit 10-12笔记
- 转载的时下热门AR,对于努力方向有一定启示作用