【JAVA】java中方法传参的一点个人理解
2014-03-12 15:24
411 查看
对于java中方法传参的理解一直有些疑惑,今天写了个测试程序整理了下思路。
输出结果:
根本原因是java对基本类型和实体类在内存中存储方式不同,导致传参处理也不相同。基本类型和对象引用是放在栈中,而对象的成员变量则存放在堆里。
import javax.swing.text.ChangedCharSetException; public class StringTest { /** * @param args */ public static void main(String[] args) { int a = 3; System.out.println("first a:"+a); change(a); System.out.println("final a:"+a); A ao = new A(); ao.a = 3; System.out.println("first ao:"+ao.a); change(ao); System.out.println("final ao:"+ao.a); Integer aI = 3; System.out.println("first a:"+aI); changeO(aI); System.out.println("final a:"+aI); A aO = new A(); aO.a = 3; System.out.println("first aO:"+aO.a); changeO(aO); System.out.println("final aO:"+aO.a); } private static void change(int i){ i = 5; } private static void changeO(Integer i){ i = 5; } private static void change(A i){ i.a = 5; } private static void changeO(A i){ i = new A(); i.a = 5; } static class A{ int a; } }
输出结果:
first a:3 final a:3 first ao:3 final ao:5 first a:3 final a:3 first aO:3 final aO:3java分为传值和传引用两种传参方式,概念太多容易混淆理解。
根本原因是java对基本类型和实体类在内存中存储方式不同,导致传参处理也不相同。基本类型和对象引用是放在栈中,而对象的成员变量则存放在堆里。
相关文章推荐
- java中怎样调用抽象类中的非抽象方法?(对原文做修改,加入一点自己理解)
- Java反射的一点个人理解
- Java内存的一点理解, 静态方法和实例方法的区别及使用场景
- Java中的join方法个人理解
- java中方法中传参时基本类型和引用类型的理解
- 用类名做方法的返回值类型 在学习Java的初始阶段,很多同学使用基本数据类型定义变量和引用类型定义变量以及使用类名做方法的返回值类型常常不知所以。今天我以自己的解读方式和个人的理解作一个简单的解释,和
- 关于java中方法或者函数,形参,实参的个人理解
- 关于Java中static方法的一点理解
- JAVA中 子类与父类构造方法的关系 个人理解
- Java面向对象个人学习和理解
- Java:深度理解JAVA本身的构造器及子父类构造方法的初始化顺序
- 转自凯子个人博客——Java字符串与数组常用问题与方法
- 深入理解Java 8 Lambda(语言篇——lambda,方法引用,目标类型和默认方法)
- 记录个人对translate()的一点理解
- 深入理解Java 8 Lambda(语言篇——lambda,方法引用,目标类型和默认方法
- Java入门--认识理解Java中native方法
- Java中"Test(Object...args){}"方法声明的理解——J2SE5的“Vararg“
- convertView&setTag方法的一点理解
- convertView&setTag方法的一点理解
- JAVA中关于set()和get()方法的理解及使用