Java值传递
来源:互联网 发布:seo网络优化招聘 编辑:程序博客网 时间:2024/06/11 05:01
本人拙见,大家共同学习,有问题还望指正
java中值传递,我的理解:一个参数A,传递A本身内容给变量B,在使用过程中若B直接改变A传递过来的内容,则A就会变化,否则不会变化。
而对于A本身内容,若是基本类型,则传递本身值;若是对象,则传递他指向的地址。
简单的代码说明
<pre name="code" class="java">public class Test{public static void main(String[] args){Test test = new Test();// 声明并初始化两个对象,用于测试MyObject myObject1 = new MyObject();myObject1.set(1,"I'm myObject1!");MyObject myObject2 = new MyObject();myObject2.set(2,"I'm myObject2!");System.out.println("初始对象值为:");System.out.println("myObject1 : " + myObject1.toString());System.out.println("myObject2 : " + myObject2.toString());System.out.println();// 交换对象值,查看结果test.swapObject(myObject1,myObject2);System.out.println("交换后对象值为:");System.out.println("myObject1 : " + myObject1.toString());System.out.println("myObject2 : " + myObject2.toString());System.out.println();// 改变对象值,查看结果test.changeObject(myObject1);System.out.println("改变后对象值为:");System.out.println("myObject1 : " + myObject1.toString());System.out.println();int a = 1;int b = 2;System.out.println("初始值为:");System.out.println("a : " + a);System.out.println("b : " + b);System.out.println();// 交换test.swapInt(a, b);System.out.println("交换后值为:");System.out.println("a : " + a);System.out.println("b : " + b);System.out.println();test.changeInt(a);System.out.println("交换后值为:");System.out.println("a : " + a);}public void swapObject(MyObject myObject1, MyObject myObject2){MyObject temp = myObject1;myObject1 = myObject2;myObject2 = temp;}public void changeObject(MyObject myObject){myObject.id = 1000;myObject.decription = "I'm changed!";}public void swapInt(int a, int b){int temp = a;a = b;b = temp;}public void changeInt(int a){a = 1000;}}// 简单对象class MyObject{public int id;public String decription;public void set(int id, String decription){this.id = id;this.decription = decription;}// 重写toString方法,打印类的所有属性@Overridepublic String toString(){return "MyObject [id=" + id + ", decription=" + decription + "]";}}
执行结果为
初始对象值为:myObject1 : MyObject [id=1, decription=I'm myObject1!]myObject2 : MyObject [id=2, decription=I'm myObject2!]交换后对象值为:myObject1 : MyObject [id=1, decription=I'm myObject1!]myObject2 : MyObject [id=2, decription=I'm myObject2!]改变后对象值为:myObject1 : MyObject [id=1000, decription=I'm changed!]初始值为:a : 1b : 2交换后值为:a : 1b : 2交换后值为:a : 1
在对象交换中,没有对本身的值进行改变,并且在方法中只是在对B的指向地址做了改变,跟A没有多大关系
在对象改变中,B直接对A传递的内容进行了更改,这里是直接把myObject1的属性做了修改
在基本类型中,两种都没有直接对内容的改变,从始至终1还是1,没有改变,而且a始终指向的是1
0 0
- java值传递,引用传递,数组传递
- java 值传递 引用传递
- Java 值传递 引用传递
- Java 值传递 引用传递
- Java 值传递 引用传递
- Java引用传递&值传递
- java值传递,引用传递
- java值传递,引用传递
- java值传递、引用传递
- java 值传递 数组传递
- Java参数传递,值传递
- java只有值传递!
- java中的值传递
- java的值传递
- java 值传递例子
- java中的值传递
- Java中的值传递
- java值传递
- Linux下Mysql简单操作
- lightoj1349 - Aladdin and the Optimal Invitation【求中位数】
- 初学者时期的学习进度与体会
- 自己动手搭建物联网系统之(1)
- 工件调度
- Java值传递
- 【校内互测】工件调度
- AFNetworking3.0使用
- 《重构 改善即有代码的设计》笔记
- 自定义view画个圈圈
- lightoj 1429 - Assassin`s Creed (II)
- 中医证明《地藏经》的伟大
- php cookie立即生效的办法
- linux下安装protobuf教程+示例(详细)