那位师兄解释一下,50分送上!
以下两个程序何输出的结果不同:请解释一下(点拨一下:))
//程序一MyFile1.java
public class MyFile{
public static void main(String[] args){
int xx=1;
bumper(xx);
System.out.println(xx);
}
public static void bumper(int bumpMe){
bumpMe++;
}
}
运行结果为"1";
//程序二MyFile2.java
public class MyFile2{
public static void main(String args[]){
int[] myValue={1};
modifyIt(myValue);
System.out.println ("MyValue contains"+myValue[0]);
}
public static void modifyIt(int[] value){
value[0]++;
}
}
运行结果为 2
谢谢
问题点数:50、回复次数:6Top
1 楼masterz(www.fruitfruit.com)回复于 2001-11-21 17:59:24 得分 12
第一个参数是按值传递,bumpMe++;对xx没有影响
Top
2 楼anray(K歌之王)回复于 2001-11-21 18:00:29 得分 12
In java, if the primitive data type as a function parameters, it will act as the type "by value"; otherwise, if the object as a function parameters, it will act as the type "by reference".
Because the parameter "bumpMe" is a primitive data type, but not the parameter "value".
Top
3 楼masterz(www.fruitfruit.com)回复于 2001-11-21 18:00:41 得分 12
void modifyIt(int[] value){
参数是按引用传递,会改变原始变量Top
4 楼hz129(古雨)回复于 2001-11-21 18:48:15 得分 14
在JAVA中数组实际上是一个对象,所以传递数组时会将一个引用传递进去,对它的元素的修改会直接修改原始数据,对简单类型(int等)则按值传递,所以不会影响原始数据。Top
5 楼xiaobi_liang(淡泊以明志,宁静以致远...)回复于 2001-11-21 22:06:26 得分 0
谢谢,我忘了数组也是对象,又看得是英文版的书。迷了Top
6 楼xunzu(过客)回复于 2001-11-22 06:00:51 得分 0
up!Top




