欢迎访问宙启技术站
智能推送

Java函数-变量作用域和传递?

发布时间:2023-06-17 10:56:18

Java是一种面向对象的编程语言,具有函数语言的特征。在Java中,函数是具有一定功能的程序段,可以重复使用,提高代码的复用性和可读性。本文将围绕Java函数的变量作用域和传递两方面进行讲解。

一、变量作用域

变量作用域是指变量的可访问范围。在Java中,变量作用域分为局部变量和成员变量两种。

1.局部变量的作用域

局部变量是在函数或者块中定义的变量,在函数执行后就会立即释放内存,不能直接被其他函数调用。局部变量的作用域仅限于函数内部或者块中,如果在函数外部调用该变量,会提示未定义的变量。

例如:

public void test(){

    int a = 10;//定义局部变量a

    System.out.println(a);//输出10

}//a的作用域仅限于test函数内部

2.成员变量(全局变量)的作用域

成员变量是在类中定义的变量,其作用域随类而存在,在整个类中都可以被访问。成员变量的作用域可以被定义为public、private、protected等不同的访问权限。

例如:

public class Test{

    public String name;//定义公共的成员变量name

    private int age;//定义私有的成员变量age

    protected String sex;//定义保护的成员变量sex

    String address;//默认是default类型的成员变量address

}

二、变量传递

在Java中,变量传递有两种方式:值传递和引用传递。

1.值传递

值传递是指将实参的值传递给形参,函数中对形参的修改不会影响实参的值。在值传递中,数据从实际参数复制到形式参数,参数间的值互不干扰。

例如:

public class Test{

    public void swap(int a, int b){

        int temp = a;//定义临时变量temp

        a = b;

        b = temp;

        System.out.println("a = " + a + ", b = " + b);

    }

    public static void main(String[] args){

        Test test = new Test();

        int x = 10, y = 20;

        test.swap(x, y);//输出a = 20, b = 10

        System.out.println("x = " + x + ", y = " + y);//输出x = 10, y = 20

    }

}

输出结果说明,在swap方法中修改a和b的值不会对x和y的值产生影响。

2.引用传递

引用传递是指将实参的地址传递给形参,函数中对形参的修改会影响实参的值。在引用传递中,参数间的值互相影响。

例如:

public class Test{

    public void change(int[] arr){

        arr[0] = 100;

        System.out.println(arr[0]);

    }

    public static void main(String[] args){

        Test test = new Test();

        int[] arr = {1, 2, 3};

        test.change(arr);//输出100

        System.out.println(arr[0]);//输出100

    }

}

输出结果说明,在change方法中修改arr[0]的值会影响到main方法中arr[0]的值。

总结:

使用Java函数时,需要考虑变量作用域和传递方式。局部变量的作用域仅限于函数内部或者块中,成员变量的作用域可以定义为public、private、protected、default等访问权限。值传递是将实参的值传递给形参,函数中对形参的修改不会影响实参的值,引用传递是将实参的地址传递给形参,函数中对形参的修改会影响实参的值。