检验 java 基础数据类型参数传递方式
测试证明,java基础数据类型参数传递值虽是引用传递但是值不会改变。对象是引用传递,值会改变。
为什么?找到一段话来解释这个问题。
"对于字符串对象来说,虽然在参数传递的时候也是引用传递,但是java虚拟机在函数内部对字符串对象进行了特殊处理--视String对象为常量(final) 所以对传进来的引用地址所引用的String对象比能直接进行修改,而是产生一个副本对其进行操作,对其进行的操作不会影响原来的值。"
参考sun官方认证试题,以String,Long,Double作例子。测试基本数据类型参数传递值是引用传递还是值传递:
public static void a1() {
String s = new String("Hello" );
modify1(s);
System. out.println(s);
}
public static void modify1(String s) {
s += "world!";
}
public static void a2() {
Double d = new Double("1.0" );
modify2(d);
System. out.println(d);
}
public static void modify2(Double d) {
d = 2.0;
}
public static void a3() {
Long d = new Long("1" );
modify3(d);
System. out.println(d);
}
public static void modify3 (Long d) {
d = 2L;
}
public static void main(String[] args) {
a1();
a2();
a3();
}
作者:SVENNEE
出处:http://www.cnblogs.com/svennee
本文采用知识共享署名-非商业性使用-相同方式共享 2.5 中国大陆许可协议进行许可,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
如果您觉得此文有帮助,请点击推荐和关注我。您的支持将鼓励我继续创作!
出处:http://www.cnblogs.com/svennee
本文采用知识共享署名-非商业性使用-相同方式共享 2.5 中国大陆许可协议进行许可,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
如果您觉得此文有帮助,请点击推荐和关注我。您的支持将鼓励我继续创作!