java中的形式参数

先来看一道题:

5. 下列语句正确的是

A. 形式参数可被字段修饰符修饰
B. 形式参数不可以是对象
C. 形式参数为方法被调用时真正被传递的参数
D. 形式参数可被视为local variable

正确答案是:D

A: 对于形式参数只能用final修饰符,其它任何修饰符都会引起编译器错误。但是用这个修饰符也有一定的限制,就是在方法中不能对参数做任何修改。 不过一般情况下,一个方法的形参不用final修饰。只有在特殊情况下,那就是:方法内部类。  一个方法内的内部类如果使用了这个方法的参数或者局部变量的话,这个参数或局部变量应该是final。

 B:方法的参数列表指定要传递给方法什么样的信息,采用的都是对象的形式。因此,在参数列表中必须指定每个所传递对象的类型及名字。想JAVA中任何传递对象的场合一样,这里传递的实际上也是引用,并且引用的类型必须正确

C:形参的值在调用时根据调用者更改,实参则用自身的值更改形参的值(指针、引用皆在此列),也就是说真正被传递的是实参

D: local variable是一个局部变量,形参和局部变量一样都不能离开方法。都只有在方法内才会发生作用,也只有在方法中使用,不会在方法外可见

形式参数:方法中声明的参数

实际参数:方法中定义的参数

如果形式参数是基本类型,形式参数的改变,不影响实际参数

扫描二维码关注公众号,回复: 6751798 查看本文章

如果形式参数是引用类型,形式参数的改变,直接影响实际参数

 经典例子:

public class ArgsDemo {  
        public static void main(String[] args){  
            int a = 10;  //基本类型
            int b = 20;  
            System.out.println("a:"+a+",b:"+b); //10,20  
            change(a,b);  
            System.out.println("a:"+a+",b:"+b); //10,20  
  
            int[] arr = {1,2,3,4,5};  //引用类型
            change(arr);  
            System.out.println(arr[1]); //4  
        }  
  
        public static void change(int a,int b) {   
            System.out.println("a:"+a+",b:"+b); //10,20  
            a = b;   
            b = a + b;   
            System.out.println("a:"+a+",b:"+b);//20,40  
        }  
  
        public static void change(int[] arr) {   
            for(int x=0; x<arr.length; x++) {  
                //如果数组的元素值是偶数,就变为以前的2倍。  
                if(arr[x]%2==0) {  
                    arr[x]*=2;   
            }  
        }  
    }  
}

java中基本类型传递的事值,引用类型传递的是地址

猜你喜欢

转载自blog.csdn.net/weixin_43224539/article/details/94734764