检验 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]
为什么?找到一段话来解释这个问题。
"对于字符串对象来说,虽然在参数传递的时候也是引用传递,但是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]
相关文章推荐
- java程序设计--孙鑫java无难事Lesson5《java常用包、数据类型与引用类型、函数参数传递、克隆机制》
- Java基础加强:静态导入及可变参数和增强for循环 ,基本数据类型的自动拆箱和装箱
- 牛客网Java刷题知识点之基本数据类型参数传递和引用数据类型参数传递图解
- 02.java语言基础-参数的值传递机制-基本数据类型
- JAVA中引用数据类型的参数传递
- JAVA基础复习十六-LinkedList、栈和队列数据类型、泛型、增强for循环、可变参数、Arrays工具类
- java例程练习(控制台参数与基础数据类型的包装类)
- Java数据类型和参数传递
- java基础(六)——数据类型的存储方式
- java基础(五)——数据类型和方法传递类型
- java语言-基础(参数的值传递机制(基本数据类型与引用数据类型))
- 重读编程思想-初始化清理-基础数据类型参数传递给过载方法
- C# 数据类型的引用类型、值类型内存存储方式以及区别; 函数参数传递的引用传递(址传递)、值传递区别
- java例程练习(控制台参数与基础数据类型的包装类)
- java 传递参数 “引用是一种数据类型”,“参数是引用的一个拷贝”
- Java基础之各种数据类型在内存中的存储方式
- SpringMVC的java基础类型参数绑定方式
- 2013年8月17日、二维数组定义的格式|用java表现一个描述小汽车|基本数据类型参数传递|
- java例程练习(控制台参数与基础数据类型的包装类)
- 03.java语言基础-参数的值传递机制-引用数据类型