java 传值与传址

来源:百度知道 编辑:UC知道 时间:2024/09/20 23:44:07
java中如果传递的是基本类型,就是传值,
如果传递的是引用类型,就是传址,
public class Test {
public static void main(String[] args){
String str = new String("World");
char ch[] = {'H','e','l','l','o'};
change(str,ch);
System.out.println(str + "and")
System.out.println(ch);
}
public static void change(String str, char ch[]){
str = "change";
ch = new char[]{'c','e','l','l','o'}l
}
}
中传到change的str不是一个String的引用类型么?为什么输出结果是World and Hello?str不应该变为change?谢谢回答!
如果这么说:“java对对象的传递是传址,对基本类型的传递是传值”是不是合理呢?

肯定是不变的啊
因为你发的str只是你在main方法里的str的一个副本啊
并没有把str的地址给传过去
传过去的只是一个副本
而数组你在change方法里又new了一了
就是一个新的数组了
你在main方法里输出的是你new之前的
和你在change里new的并不是一个

当然不会变

java中如果传递的是基本类型,就是传值,
如果传递的是引用类型,就是传址

这句话谁教你的..

java 都是传值的。ch的值就是main中new的字符数组{'H','e','l','l','o'};的地址。而在change()中ch的值并没有被改变,所以输出World and Hello

“java对对象的传递是传址,对基本类型的传递是传值”也不能说不合理,但是要记住其实质上是怎么回事

java 传值与传址 你看看这个呢 奇怪吧 哈哈

public class Test {

String str = new String("World");

char ch[] = {'H','e','l','l','o'};

public static void main(String[] args){

Test test=new Test();

test.change(test.str,test.ch);
System.out.println(test.str) ;
System.out.println(test.ch);

}
public void change(String str, char ch[]){

this.str="IsCh