本帖最后由 谢铭 于 2013-8-10 00:11 编辑
为什么同样是函数,调用之后,返回的值会不一样呢,如下面两段代码所示:- public class Test {
- public static void leftshift(int i, int j) {
- i+=j; //i=i+j
- j=++j; //j=++j
- //System.out.println(i);
- //System.out.println(j);
- }
- public static void main(String args[]) {
- int i = 4, j = 2;
- leftshift(i, j);
- System.out.println(i);
- System.out.println(j);
- }
- }
复制代码 上面这段代码,返回的值,i=4,j=2,调用的方法中有两个式子i+=j;j=++j,两个式子并没有影响到在主函数定义的i和j.
而下面这段代码却是不一样,如下所示:- public class Demo {
- public static void main(String[] args){
- int[] a=new int[1]; //创建整型数组a,并分配其空间大小为1
- modify(a); //调用方法,并将数组a传入,参与运算
- System.out.println(a[0]); //打印数组a的0角标位上的数
- }
- public static void modify(int[] a){ //创建方法modify,有数组参与运算,没有具体的返回值
- a[0]++; //数组a,的0角标位上的数自增,a[0]=a[0]+1
- }
- }
复制代码 这段代码输出的结果是1
主函数中只是定义了该数组,并没有赋值,因为数组都有默认初始值,其初始值为0.
在函数中,有a[0]++这个式子,a[0]自增后,a[0]成了1.
想请问下,关于函数,这些是如何定义这块的,在线等解释.
为什么两段代码,调用函数,有一个,函数的值,影响到了主函数的值,而另一个却没有?
|