方法参数是基本类型和引用类型的区别
2017-08-25 22:29
609 查看
1 方法参数是基本类型时,传递的是值。
2 方法参数是引用类型时,传递的是内存地址值
当参数是基本类型时,在调用方法时将值传递到方法中,运行方法,运行结束方法退出,对原本main中定义的变量没有任何操作(没有return),所以注释处输出仍为1和2。
当参数是引用类型时,定义数组时,在堆内存中存储了数组的数据,返回这组数据的地址给了arr,然后在调用方法时,传递的也是这个地址。在chang方法中,同样也是根据这个地址找到数组的信息,然后改变了这个数据的【2】数据,所以之后main方法输出时,输出的是改变了之后的数组。
也就是说 ,当参数是基本类型时,方法传的只是值,实际上main 里的a和chang方法里的a是不同的两个东西,如果方法不返回值,change里不管怎么改变,与main无关。
而引用类型时,两个方法通过同一个地址,使用的是同一个堆内存里的数组,是同一个东西,所以change方法里面改变了这个数组的之后,main再调用也是改变之后的数组
2 方法参数是引用类型时,传递的是内存地址值
public class MethodDemo_3{ public static void main(String[] args){ /*int a = 1; int b = 2; change(a,b); System.out.println(a); //1 System.out.println(b); // 2 */ int[] arr = {1,2,3,4}; System.out.println(arr[2]); // 3 change(arr); System.out.println(arr[2]); // 100 } public static void change(int[] arr){ arr[2] = 100; } public static void change(int a,int b){ a = a+b; b = b+a; } }
当参数是基本类型时,在调用方法时将值传递到方法中,运行方法,运行结束方法退出,对原本main中定义的变量没有任何操作(没有return),所以注释处输出仍为1和2。
当参数是引用类型时,定义数组时,在堆内存中存储了数组的数据,返回这组数据的地址给了arr,然后在调用方法时,传递的也是这个地址。在chang方法中,同样也是根据这个地址找到数组的信息,然后改变了这个数据的【2】数据,所以之后main方法输出时,输出的是改变了之后的数组。
也就是说 ,当参数是基本类型时,方法传的只是值,实际上main 里的a和chang方法里的a是不同的两个东西,如果方法不返回值,change里不管怎么改变,与main无关。
而引用类型时,两个方法通过同一个地址,使用的是同一个堆内存里的数组,是同一个东西,所以change方法里面改变了这个数组的之后,main再调用也是改变之后的数组
相关文章推荐
- java中,方法参数是基本类型和引用类型的区别
- java方法参数基本类型和方法参数是引用类型的区别
- 深入解析js中基本数据类型与引用类型,函数参数传递的区别
- 小静的心路历程--javase基础语法第一章--方法的参数是基本数据类型和引用类型
- 复习一下基础:'C# 值类型和引用类型 以及作为方法参数的区别'
- 例题4-7向一个方法的基本数据类型参数传值/4-8引用类型参数
- 基本数据类型和引用数据类型在传参数时的区别
- 【JavaScript】基本数据类型与引用数据类型区别(及为什么String、Boolean、Number基本数据类型会有属性和方法?)
- C# 值类型和引用类型 以及作为方法参数的区别
- 基本数据类型参数传递与引用数据类型参数传递区别
- JAVA基础知识回顾(基本数据类型,switch参数,equals与==的区别,Object有哪些公用方法)-1
- C#中引用类型做方法参数时,加ref或out,与不加ref或out到底有什么区别?
- C#类和接口、虚方法和抽象方法及值类型和引用类型的区别
- C#类和接口、虚方法和抽象方法及值类型和引用类型的区别
- C#类和接口、虚方法和抽象方法及值类型和引用类型的区别
- C#类和接口、虚方法和抽象方法及值类型和引用类型的区别
- C#类和接口、虚方法和抽象方法及值类型和引用类型的区别
- 类类型作为方法的参数时,使用 ref 和不使用ref的区别?
- 基本类型和其对应的引用类型的区别
- C#类和接口、虚方法和抽象方法及值类型和引用类型的区别