java值传递
来源:互联网 发布:wampserver mac下载 编辑:程序博客网 时间:2024/05/20 11:24
趁热打铁,紧接着上一篇说说java的值传递。 java中只有值传递(这个值为内存地址)。 //例1 6 void int change(int i){ int 为原始数据类型,会存放在栈内。(存放方式参阅上一篇堆栈)当执行到第三行的时候传递给方法的我认为是一个内存地址,然后到第六行,变量i也在栈内创建了引用,指向传过来的x的地址。现在i=x;然后改变了i的值i=1;(参阅上篇存储方式,)栈内寻找值1,发现没有,于是将值1存放进栈。x还是指向原来的值0,这样并不会改变x的值。 在来说说传对象。 //例2 6 void int change(StringBuffer i){ 直接由第三行讲起(至于堆栈存储数据,参阅前一篇,不在赘述)。然后调用第六行,变量i将在栈内创建引用指向传递过来的x的地址。然后i通过这个地址操纵了堆里面的值,这样x也是指向这个值的,所以x的值被改变了。 在看一个 //例3 1 void method1() { 当道16行的时候,sb在栈内创建了引用指向了传递过来的x的地址。然后18行new StringBuffer("hi");在堆内创建了一个新的对象,此时sb指向了此对象,这样sb与传递过来的x指向的地址就不一样了,sb然后修了值,但是这样并不会影响到x的值,所以输出的还是Hello
1 void method1(){
2 int x=0;
3 this.change(x);
4 System.out.println(x);
5 }
7 i=1;
8 }
1 void method1(){
2 StringBuffer x=new StringBuffer("Hello");
3 this.change(x);
4 System.out.println(x);
5 }
7 i.append(" world!");
8 }
2 StringBuffer x = new StringBuffer("Hello");
3 change1(x);
4 System.out.println(x);
5 }
6
7 void method2() {
8 StringBuffer x = new StringBuffer("Hello");
9 change2(x);
10 System.out.println(x);
11 }
12
13 void change1(StringBuffer sb) {
14 sb.append(" world!");
15 }
16
17 void change2(StringBuffer sb) {
18 sb = new StringBuffer("hi");
19 sb.append(" world!");
20 }
调用method1(),屏幕打印结果为:"Hello world!"
调用method2(),我们认为结果应该是"hi world",因为sb传进来的是引用,可是实际执行的结果是"Hello"!
- java值传递,引用传递,数组传递
- java 值传递 引用传递
- Java 值传递 引用传递
- Java 值传递 引用传递
- Java 值传递 引用传递
- Java引用传递&值传递
- java值传递,引用传递
- java值传递,引用传递
- java值传递、引用传递
- java 值传递 数组传递
- Java参数传递,值传递
- java只有值传递!
- java中的值传递
- java的值传递
- java 值传递例子
- java中的值传递
- Java中的值传递
- java值传递
- 各种链接
- 关于mysql的password加密函数问题
- rsync进行文件备份
- java堆栈
- 中文互联网巨头间的混战
- java值传递
- IT男必看的养生常识
- Bootloader全局变量重定位和KernelRelocate函数
- 方法中参数的传递
- 您在注册表编辑器中只能导入二进位注册文件
- 通过Run-Time Library中的time和localtime函数获取系统时间
- 说的艺术
- 利用EXCEL XML方式导出EXCEL,速度超快
- Cisco CCNP认证642-902题库资讯