值传递(pass by value)
来源:互联网 发布:关口知宏结婚 编辑:程序博客网 时间:2024/04/30 04:51
方法只能改变引用类型的值,而不能改变引用类型的地址和基本类型的值。也就是说方法只能改变堆内存中的值,而不能改变栈内存中的值。实例变量都是保存在堆内存里的。不管是引用类型还是基本类型。所有的引用类型的值都是保存在堆内存里的。
特别注意:对基本类型是pass by value,而对引用类型则是pass by ref.
例如:
public class TestReference {
int i = 5;
int j = 6;
A a = new A();
public void changeIJ(int m, int n) {// 试图改变基本类型的参数的值
int z = 0;
z = m;
m = n;
n = z;
}
public void changeAB(A a1, A a2){ // 试图改变引用类型的参数的地址
A a = null;
a = a1;
a1 = a2;
a2 = a;
}
public void test(int c){ // 试图改变基本类型的参数的值
c = c + 6;
}
public void testA(A a) {// 试图改变引用类型参数的值
a.i = 100;
}
public static void main(String[] args) {
TestReference t = new TestReference(); // 构造本类的一个对象
int z = 5;
int y = 6;
A aa = new A(); // 定义A类的一个对象aa
t.testA(aa); // 改变对象aa的值
System.out.println(aa.i); // 输出aa的值(属性值)
A bb = new A(); // 再定义A类的一个对象bb
t.changeIJ(z, y); // 试图改变两个基本类型的值
t.changeAB(aa, bb);// 试图改变两个引用类型的地址
System.out.println(z);
System.out.println(y);
System.out.println(aa.i);
System.out.println(bb.i);
}
}
class A {
int i = 5;
};
输出结果如下:
100
5
6
100
5
可见,方法只能改变引用类型的值,而不能改变引用类型的地址和基本类型的值。
java视频教程- 值传递(pass by value)
- java当中也有pass-by-value值传递或pass-by-reference地址传递吗
- Java 只有值传递(Pass By Value),没有引用传递(Pass By Reference)
- Java is Pass-by-Value Java都是值传递
- Java中都是值传递 pass-by-value
- 如何理解JAVA 参数传递总是值传递(pass-by-value )
- Java is Pass-by-Value, Dammit! 我靠!Java就是值传递!
- Revisit pass by value
- Pass by value & pass by reference
- pass by value & pass by reference
- pass by value vs pass by reference
- Want Speed? Pass by Value.
- pass by value 与pass by reference 小结
- [转]Does Java pass by reference or pass by value?
- 关于pass-by-reference-to-const和pass-by-value
- java pass by value 。do not exist pass by reference
- Does Java pass by reference or pass by value?
- Java is Pass-by-Value, Never pass by reference
- photoshop中制作透明的图片
- ADB操作指令
- 在安装ADT时总会跳出错误
- 一种巧妙的取类的虚函数指针的方法
- Android 开发中使用 SQLite 数据库
- 值传递(pass by value)
- 模仿path的列表式导航
- 将二进制数值转换为十进制
- this引用
- CB偶尔代码不自动提示
- Android中查看和管理sqlite数据库
- SpringAOP
- 二进制数值转换成十六进制
- PHP 如何得到某年某月的天数