黑马程序员技术交流社区
标题: 函数没有返回值,main函数值怎么接受到更改后的结果的? [打印本页]
作者: 汪显晟 时间: 2013-9-19 23:45
标题: 函数没有返回值,main函数值怎么接受到更改后的结果的?
本帖最后由 留不下什么 于 2013-9-20 21:10 编辑
class Demo {
public static voidmain(String[] args) {
int a=12,b=23;
System.out.println("a="+a+",b="+b);
change(a,b);
System.out.println("a="+a+",b="+b);
int[] arr ={1,2,3,4,5};
printArray(arr);
System.out.println("操作后");
change(arr);
printArray(arr);
}
public static voidchange(int a,int b){
System.out.println("a="+a+",b="+b);
a = a + b;
b = 10;
System.out.println("a="+a+",b="+b);
}
public static voidchange(int[] arr){
for(int x=0;x<arr.length; x++){
if(arr[x]%2==0){
arr[x]*=2;
}
}
}
public static voidprintArray(int[] arr) {
for (int x = 0;x < arr.length ;x++ ){
System.out.print(arr[x]+ " ");
}
}
}
a=12,b=23
a=12,b=23
a=35,b=10
a=12,b=23
1 2 3 4 5 操作后
1 4 3 8 5
为什么 public static void change(int[] arr) 没有返回改变后的数组给主函数,
但是主函数再调用 public static void printArray(int[] arr) 函数的时候,却把更改后的数组传给了它?
作者: 焦允 时间: 2013-9-20 00:20
楼主请看清楚,你标记了操作后的数组,实际上遍历的是操作前的数组,change(arr);下面的才是操作后的数组。
作者: 路边小色狼 时间: 2013-9-20 01:08
- class D9 {
- public static void main(String[] args) {
- int[] arr={1,2,3} ;int x=0;
- System.out.println("arr[2]="+arr[2]+".....x="+x);
- System.out.println("改后");
- change(arr,x);
- System.out.println("arr[2]="+arr[2]+".....x="+x);
-
- }
- public static void change(int[] arr,int x)
- {
- for(int a=0;a<arr.length;a++)
- arr[a]+=1;
- x+=1;
- }
- }
复制代码 我想应该是数组的什么特性吧,我也试了好多个,还是一样
坐等大神来解答。
有答案了回我一个。
作者: 问天 时间: 2013-9-20 09:10
两次打印分别是原数组和做了修改后的
作者: 何丛 时间: 2013-9-20 09:33
数组是引用类型,传的是地址
作者: 陈国柱 时间: 2013-9-20 10:31
数组调用了改变方法,就是使用这个方法改变自身的属性,如修改了自身的元素值,改变了之后就不可还原,如果用完这个方法之后数组在主函数内还是没有变,那么就必须需要有一个返回数组才能确保数组已改变了,但是返回值和不一定和数组相关的,例如改变完数组之后返回一个整数1。返回值就是在调用函数后可以立刻返回的数据,就好像如果改变方法有返回值的,例如可以改变数组之后可以返回一个数组,那么调用printArray();方法的时候就可以这样写:printArray(change(arr));就不不需要分开两个语句写。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |