java问题急!!!!!!!!!!!!!!!!!!

2025-01-18 18:03:40
推荐回答(5个)
回答1:

传值的时候就是传了数值的副本,而是对象的时候就会就是一个对象的引用,一定要理解引用的含义
str="World";
本来引用是指向Hello,而现在这个引用指向了WORLD,而原来的ex.str这个引用指向Hello,它没有被改变
而ch[0]= 'Y';ch指向ex.ch,而ch[0]就是改变的某个内存位置的值,所以就会改变,看看这样的输出,你就会明白了~~
import java.util.Date;

public class Example{
String str="Hello";
char ch[]={'J','a','v', 'a'};
public static void main(String args[]){
Example ex=new Example();

ex.change(ex.str,ex.ch);
System.out.println(ex.str);
System.out.println(ex.ch);
}
public void change(String str,char ch[]){
str=new String("World");
char sh[]={'I','L','O','V','E','Y','O','U'};
ch=sh;

}
}

回答2:

传值与传引用的问题。
基本数据类型是值类型。
对象,数组是引用类型。
值类型改变参数的值。
引用类型不改变参数的值。
所以输出来是 World JAVA

回答3:

java中把String当基本类型来储存,当你传参数的时候,相当于是重新创建了一个新的和原来一样的String,所以你对它怎么改变都不会影响主方法中的值,这大概就是传值了;
传引用相当于是你给调用的方法指了一条路,说传过来的对象或者数组元素什么就在那儿,然后你就可以随便改动它的值了。

这是我的理解了,估计这个设定和对象池什么的有关系吧。

回答4:

Hello
YAVA
将ex.str值按地址传给change的str,ch也一样,方法中对str和ch作了修改。就是这样啊。
把程序拷下来编译运行一下不就出来了么。
public static void main(String args[]){ Hello
Example ex=new Example(); YAVA
Hello 和 YAVA是谁加进去的,若代这两个东东,是编译不通过的。

回答5:

World
Yava
很简单的程序不必讲了把,怕是贻笑大方了