理解Java中的引用传递和值传递
2017-05-31 13:45
190 查看
最近在复习java基础,看到这个知识点,总结下。
首先将变量分为两类:
基本类型变量,包括boolean、byte、char、short、int、long、float、double。
引用类型变量,包括类、接口、数组(基本类型数组和对象数组)。
3.如果传递的值是基本类型变量,就是属于值传递,a的值不会改变。相当于把a的值复制给i,然后i的值又为2,相当于把原来的值给覆盖了。但是a的值没有任何变化
4.如果传递的对象的话,就是引用传递,引用传递的话,就是将变量的内存地址传进去,这里的话就是str2同样也指向str的内存地址,所以str2改变的话,str的值也会改变,结果为ab
5.String, Integer, Double等immutable的类型特殊处理,可以理解为传值,最后的操作不会修改实参对象。str结果为a
6.参考地址https://www.zhihu.com/question/31203609
首先将变量分为两类:
基本类型变量,包括boolean、byte、char、short、int、long、float、double。
引用类型变量,包括类、接口、数组(基本类型数组和对象数组)。
3.如果传递的值是基本类型变量,就是属于值传递,a的值不会改变。相当于把a的值复制给i,然后i的值又为2,相当于把原来的值给覆盖了。但是a的值没有任何变化
public class Test1 { public static void main(String[] args) { // TODO Auto-generated method stub int a=1; exchange(a); System.out.println(a); } private static void exchange(int i) { // TODO Auto-generated method stub i=2; System.out.println(i); } }
4.如果传递的对象的话,就是引用传递,引用传递的话,就是将变量的内存地址传进去,这里的话就是str2同样也指向str的内存地址,所以str2改变的话,str的值也会改变,结果为ab
public class Test2 { static StringBuffer str=new StringBuffer("a"); public static void main(String[] args) { // TODO Auto-generated method stub exchange(str); System.out.println(str); } private static void exchange(StringBuffer str2) { // TODO Auto-generated method stub str2.append("b"); } }
5.String, Integer, Double等immutable的类型特殊处理,可以理解为传值,最后的操作不会修改实参对象。str结果为a
public class Test3 { static String str=new String("a"); public static void main(String[] args) { // TODO Auto-generated method stub exchange(str); System.out.println(str); } private static void exchange(String str2) { // TODO Auto-generated method stub str2="b"; } }
6.参考地址https://www.zhihu.com/question/31203609
相关文章推荐
- 理解Java中的引用传递和值传递
- 理解Java中的引用传递和值传递
- 理解Java中的引用传递和值传递
- 理解Java中的引用传递和值传递
- 理解Java中的引用传递和值传递
- 理解Java中的引用传递和值传递
- 理解Java中的引用传递和值传递
- 理解Java中的引用传递和值传递
- 理解Java中的引用传递和值传递
- 理解Java中的引用传递和值传递
- java及C++中传值传递、引用传递和指针方式的理解
- java基础,但非常重要的.引用传递和值传递见解
- 知识积累:JAVA的引用传递和值传递
- java的引用传递和值传递
- java对象引用传递和值传递的一些总结
- Java函数传递引用和值的区别
- Java的引用传递和值传递
- java 值传递 引用传递的理解 言简意赅 一字千金
- 如何理解java的引用传递
- 你真的理解Java的按引用传递吗?