1,传值问题
-
基本数据类型的值传递,不改变原值,因为调用后就会弹栈,局部变量随之消失
-
引用数据类型的值传递,改变原值,因为即使方法弹栈,但是堆内存数组对象还在,可以通过地址继续访问
2,Java中到底是传值还是传址
-
既是传值,也是传地址,基本数据类型传递的值,引用数据类型传递的地址
-
java中只有传值,因为地址值也是值(出去面试都说这种,支持者是高司令(java之父))
3,java中是传值。还是传址。
-
java 中是传值的。因为地址值也是值、
class Test3_Array {
public static void main(String[] args) {
/*int a = 10;
int b = 20;
System.out.println("a:"+a+",b:"+b); //a = 10,b = 20
change(a,b);
System.out.println("a:"+a+",b:"+b); //?*/
int[] arr = {1,2,3,4,5};
change(arr);
System.out.println(arr[1]);
}
public static void change(int a,int b) { //a = 10, b= 20
System.out.println("a:"+a+",b:"+b); //a = 10,b = 20
a = b; //a = 20
b = a + b; //b = 40
System.out.println("a:"+a+",b:"+b); //a = 20, b = 40
}
public static void change(int[] arr) { //1,4,3,8,5
for(int x=0; x<arr.length; x++) {
if(arr[x]%2==0) {
arr[x]*=2;
}
}
}
}
1,基本数据类型的值传递,不改变原值,因为调用后就会弹栈,局部变量随之消失

2,引用数据类型的值传递,改变原值,因为即使方法弹栈,但是堆内存数组对象还在,可以通过地址继续访问

本文探讨了Java中的参数传递问题。对于基本数据类型,Java采用传值方式,不改变原值;而对于引用数据类型,虽然看起来像是传址,实际上是复制了对象引用,因此仍能改变原值。Java之父认为,即使是地址值,也视为一种值进行传递。
&spm=1001.2101.3001.5002&articleId=91411565&d=1&t=3&u=6ad92a53b1334c30809b5ea2e08b3a06)
938

被折叠的 条评论
为什么被折叠?



