Java参数传递方式
来源:互联网 发布:uiautomator2 python 编辑:程序博客网 时间:2024/04/30 12:54
其实这个问题我原来翻译(破除java神话之二:参数是传址的 )、转帖别人的详细解释(Java 应用程序中的按值传递语义 )和专门解释( 我对《Java 应用程序中的按值传递语义》的理解 )过,不过现在看来,原来翻译或者解释的角度是有问题的,从底层的角度解释并不直观,在交流的时候也容易引起误解,最终不能达成一致意见。下面以最终的效果来解释参数的传递方式:
1、对于原始数据类型,也就是int、 long、char之类的类型,是传值的,如果你在方法中修改了值,方法调用结束后,那个变量的值没有改变。
2、对于对象类型,也就是Object的子类,如果你在方法中修改了它的成员的值,那个修改是生效的,方法调用结束后,它的成员是新的值,但是如果你把它指向一个其它的对象,方法调用结束后,原来对它的引用并没用指向新的对象。
public static void main(String[] args) {
int primitive = 2;
changePrimitive(primitive);
//primitive的值依然是2
MyClass myClass = new MyClass();
changeObject(myClass);
//myClass仍然指向的是执行changeObject之前的那个对象
//但是myClass.i等于3了
}
public static void changePrimitive(int primitive) {
primitive = 3;
}
public static void changeObject(MyClass myClass) {
myClass.i = 3;
myClass = new MyClass();
}
}
class MyClass {
int i;
}
对于远程调用,无论是什么类型,调用结束后,传入的参数和以前没有任何变化(当然前提是直接调用远程方法,如果中间经过其它的Proxy类或者Facade类,不能保证那些类对对象没有修改)。至于是通过Local接口进行调用的,也应该属于本地调用,和上面说的情况应该是一致的。
作者: Cherami
原载: Java参数传递方式
版权所有。转载时必须以链接形式注明作者和原始出处及本声明。
- Java参数传递方式
- Java参数传递方式
- Java参数传递方式
- java 参数传递方式
- java 参数传递方式
- Java参数传递方式
- Java参数传递方式
- Java参数传递方式
- java参数传递方式
- Java参数传递方式
- Java参数传递方式
- Java 参数传递方式
- Java参数传递的方式
- Java参数传递方式总结
- Java参数传递方式总结
- Java参数传递方式总结
- Java中的参数传递方式
- java参数传递方式问题
- A bunch of tech news related to China from Yahoo
- JAVA中的指针,引用及对象的clone
- C# 歌词自动下载显示代码
- 配置驱动的开发
- JDK6.0新特性:用Console开发控制台程序
- Java参数传递方式
- 使用struts+spring+hibernate 组装web应用(作者:littlebat)
- tomcat5.5的问题及其解决办法
- .net 2.0中的事务处理
- java Servlet编译运行
- weblogic部署servlet
- 第一、JAVA语言语法之 三、static修饰符 四、final修饰符 五、接口 六、内类
- selinux跟ZendOptimizer共存
- C#获取mp3 Tag信息