Java参数传递传递的是值还是引用?
来源:互联网 发布:加工中心倒角编程 编辑:程序博客网 时间:2024/05/11 01:56
直接上例子
第一个方法尝试交换三个成员的数组中的首尾成员。
第二个方法尝试交换两个整形变量的值。
第三个方法传递一个对象,方法内新增一个对象,按照传来的对象的值进行赋值。
import com.Person;public class Test{ public static void main(String[] args) { int[] a = {1,2,3}; int b = 1; int c = 2; change(a); System.out.println(a[0]); System.out.println(a[1]); System.out.println(a[2]); System.out.println("~~~~~~~~~~~"); change2(b,c); System.out.println(b); System.out.println(c); System.out.println("~~~~~~~~~~~"); Person person = new Person(); person.age = 20; person.name = "mike"; change3(person); System.out.println(person.age); System.out.println(person.name); } public static void change(int[] arr){ int [] b = arr; b[1] = 99; int t = b[0]; b[0] = b[2]; b[2] = t; } public static void change2(int a,int b){ int t = a; a = b; b = t; } public static void change3(Person p){ Person p1 = new Person(); p1.age = p.age; p1.name = p.name; p1.age = 33; p1.name = "smart"; }}
编译,运行,输出结果:
3991~~~~~~~~~~~12~~~~~~~~~~~20mike
当传递数组为参数时,交换了元素。
当传递基本数据类型时,并没有达到期望中的交换数据值的效果。
当传递的是对象时,把基本数据类型的对象成员变量赋给另一个对象的成员变量时,依然是传递的值。当另一个对象的成员变量发生改变时,原对象成员变量的值不会改变。
可见,用通俗的话来讲,当参数为基本数据类型时(int char short byte…)传递的参数可以看做是按值传递,
当参数为对象时,传递的参数可以看做是按引用来传递。
补充一下,实际上,change(int[] arr) 方法接收参数后仍然可以看作是值传递。因为方法内部的局部变量b指向的内容与a指向同一块堆内存。
综上所述,java方法参数是按值传递的。
阅读全文
0 0
- Java参数传递传递的是值还是引用?
- Java中参数传递是值传递,还是引用传递
- Java参数传递到底是值传递还是引用传递?
- JAVA方法参数传递的是值还是引用
- java 方法中参数是值传递还是引用传递
- Java中参数传递是值传递,还是引用传递的一次深究
- Java中函数参数的传递是值传递还是引用传递
- Java中函数参数的传递是值传递还是引用传递
- JAVA 参数传递 是值传递 还是引用传递的问题。
- Java中函数参数的传递形式是值传递 还是引用传递
- Java中函数参数的传递是值传递还是引用传递
- Java中函数参数的传递是值传递还是引用传递
- Java的参数传递到底是引用传递还是值传递
- Java中函数参数的传递是值传递还是引用传递
- java是值传递,还是引用传递?
- java是值传递还是引用传递?
- java是值传递还是引用传递
- java 是值传递还是引用传递
- 利用ntp同步服务器时间
- Java实现两个线程交替打印问题
- 不知道如何选择的时候,付诸行动比选择更重要
- sql语句
- 【Python】Python3 元组
- Java参数传递传递的是值还是引用?
- Git Push 避免用户名和密码方法
- Android 中怎么把edittext光标放在文字下面
- 文本绘制技巧
- Numpy基础笔记(2)
- 劫富济贫
- POI
- Sliding Menu常用属性
- 【Linux】list_for_each()与list_for_each_safe()的区别