java 对象类型与基本数据类型传参的比较
2014-07-24 19:50
316 查看
今天记录一下传参方式,看下面一个简单的对象变量的传递。
运行结果如图1所示
图1
通过运行结果,我们可以得出。首先,传递的参数的值改变了,其次,它们的哈希值(16进制)相同,即它们指向同一块内存。所以它们只进行了值得传递,只存在一份数据,并没有创建副本。
接下来,我们测试基本数据类型是不是也是进行值传递(对象传递)。
运行结果如图2所示
图2
这验证了基本数据类型的特殊性,它们进行传递的时候会复制出一份副本进行操作,所以导致对整形i的操作无效。
public class Method1{ public static void main(String[] args){ A a = new A(); a.name = "我的名字"; System.out.println(a); System.out.println(a.name); Method1 method1 = new Method1(); method1.changeA(a); System.out.println(a.name); } public A changeA(A a){ a.name = "利用方法成功改变A"; System.out.println(a); return a; } } class A{ public String name; }
运行结果如图1所示
图1
通过运行结果,我们可以得出。首先,传递的参数的值改变了,其次,它们的哈希值(16进制)相同,即它们指向同一块内存。所以它们只进行了值得传递,只存在一份数据,并没有创建副本。
接下来,我们测试基本数据类型是不是也是进行值传递(对象传递)。
public class Method1{ public static void main(String[] args){ int i = 100; System.out.println("i ="+ i); Method1 method1 = new Method1(); method1.changeInt(i); System.out.println("new i = "+i); } public int changeInt(int i){ i = 500; return i; } }
运行结果如图2所示
图2
这验证了基本数据类型的特殊性,它们进行传递的时候会复制出一份副本进行操作,所以导致对整形i的操作无效。
相关文章推荐
- java 对象类型与基本数据类型传参的比较
- Java为什么两个值相等的对象==比较返回false而两个值相等的不同类型的的基本数据类型返回true
- JAVA比较(基本数据类型,对象类型)
- [java]java中的 == 号判断,为什么基本数据类型就是比较内容,而对象则是比较地址?
- Java 基本数据类型和对象类型
- C++与Java基本数据类型比较
- Java的IO操作(二) - 带缓冲区的流对象、写入基本数据类型、实现命令行中的copy命令
- 黑马程序员-JAVA基础-基本数据类型对象包装类
- C++与Java基本数据类型比较
- JAVA基础——API(基本数据类型对象包装类)
- JAVA高级01_04 基本数据类型的对象包装类 2011-4-20
- java的8种基本数据类型及转换、比较
- Java的IO操作(二) - 带缓冲区的流对象、写入基本数据类型、实现命令行中的copy命令
- Java -- 利用反射 操作任意数组,包括对象数组 和 基本数据类型的数组
- Java的IO操作(二) - 带缓冲区的流对象、写入基本数据类型、实现命令行中的copy命令
- JAVA 基本数据类型对象包装类
- java,c,c++ 语言之间基本数据类型的比较
- Java -- 利用反射 操作任意数组,包括对象数组 和 基本数据类型的数组