Java学习之参数传递详解
2014-12-23 16:42
218 查看
Java中的参数传递问题:
基本类型:形式参数的改变对实际参数没有影响。在参数传递过程中,形参和实参占用了两个完全不同的内存空间。
引用类型:形式参数的改变直接影响实际参数。在参数传递的过程中,形参和实参指向的是同一块内存空间。
基础数据类型(int,char,……)传值,对象类型(Object,数组,容器……)传引用。
有说java方法参数都是传值的,理解方式不同而已。引用本身也是值(对象地址)。
传值方式,是该值赋给了另外一个内存空间的变量 ,作用的内存空间不同,所以不改变本身的值。
传引用方式,传递的是引用的内存地址值。此时,形参和实参指向同一个内存地址。对形参所指向的对象的修改,如修改对象属性、容器内容等,会影响到调用方。对形参本身(对象地址)的修改,如设置为null,重新指向其他对象,不会影响到调用方。
基本类型:形式参数的改变对实际参数没有影响。在参数传递过程中,形参和实参占用了两个完全不同的内存空间。
引用类型:形式参数的改变直接影响实际参数。在参数传递的过程中,形参和实参指向的是同一块内存空间。
基础数据类型(int,char,……)传值,对象类型(Object,数组,容器……)传引用。
有说java方法参数都是传值的,理解方式不同而已。引用本身也是值(对象地址)。
传值方式,是该值赋给了另外一个内存空间的变量 ,作用的内存空间不同,所以不改变本身的值。
传引用方式,传递的是引用的内存地址值。此时,形参和实参指向同一个内存地址。对形参所指向的对象的修改,如修改对象属性、容器内容等,会影响到调用方。对形参本身(对象地址)的修改,如设置为null,重新指向其他对象,不会影响到调用方。
<pre name="code" class="java">public class bb { public static void main(String[] args) { int a = 10; int b = 20; int[] arr = new int[] { 1, 2, 3, 4, 5 }; System.out.println("a=" + a + ",b=" + b);// 结果为a=10,b=20 change(a, b); System.out.println("a=" + a + ",b=" + b);// 结果为a=10,b=20 change(arr); System.out.println(arr[1]);//arr[1]=4 } public static void change(int a, int b) { System.out.println("a=" + a + ",b=" + b);// 结果为a=10,b=20 a = b; b = a + b; System.out.println("a=" + a + ",b=" + b);// 结果为a=20,b=40 } public static void change(int[] arr) { // arr={1,2,3,4,5}; for (int x = 0; x < arr.length; x++) { if (arr[x] % 2 == 0) { arr[x] *= 2; } } // arr={1,4,3,8,5}; } }
相关文章推荐
- Java学习之参数传递详解
- java学习_04.1_参数传递
- Java函数参数传递方式详解
- Java学习(八)方法参数传递方式
- 《Java编程思想》学习记录仪一 -- java中参数传递方式(第二章一切都是对象)
- 我的Java开发学习之旅------>Java语言中方法的参数传递机制
- Java学习笔记之语言基础――Java中的参数传递
- java学习笔记:参数传递(2)
- Java函数参数传递方式详解
- Java 函数参数传递方式详解
- 菜鸟学习-C语言函数参数传递详解-结构体与数组
- JNI学习2 C和Java参数传递
- Java学习总结12——网络1(Java Socket参数详解)
- java中函数的参数传递详解
- Java常见笔试面试题目深度剖析系列之:Java方法参数传递详解
- Java语言中的参数传递详解
- C#学习笔记:参数传递(详解)
- 详解java中给方法传递参数的两种方式:按值传递,引用传递
- 我的Java开发学习之旅------>Java String对象作为参数传递的问题解惑
- 我的java学习笔记(4)关于方法参数传递