您的位置:首页 > 编程语言 > Java开发

检验 java 基础数据类型参数传递方式

2014-11-08 11:19 453 查看
测试证明,java基础数据类型参数传递值虽是引用传递但是值不会改变。对象是引用传递,值会改变。
为什么?找到一段话来解释这个问题。
"对于字符串对象来说,虽然在参数传递的时候也是引用传递,但是java虚拟机在函数内部对字符串对象进行了特殊处理--视String对象为常量(final) 所以对传进来的引用地址所引用的String对象比能直接进行修改,而是产生一个副本对其进行操作,对其进行的操作不会影响原来的值。"

参考sun官方认证试题,以String,Long,Double作例子。测试基本数据类型参数传递值是引用传递还是值传递:

[align=left] public static void a1() {[/align]
[align=left] String s = new String("Hello" );[/align]
[align=left] modify1(s);[/align]
[align=left] System. out.println(s);[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] public static void modify1(String s) {[/align]
[align=left] s += "world!";[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] public static void a2() {[/align]
[align=left] Double d = new Double("1.0" );[/align]
[align=left] modify2(d);[/align]
[align=left] System. out.println(d);[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] public static void modify2(Double d) {[/align]
[align=left] d = 2.0;[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] public static void a3() {[/align]
[align=left] Long d = new Long("1" );[/align]
[align=left] modify3(d);[/align]
[align=left] System. out.println(d);[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] public static void modify3 (Long d) {[/align]
[align=left] d = 2L;[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] public static void main(String[] args) {[/align]
[align=left] a1();[/align]
[align=left] a2();[/align]
[align=left] a3();[/align]
[align=left] }[/align]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐