zhcn 编程语言 Java 非公開: Java变量作用域:静态变量、全局变量、局部变量

Java变量作用域:静态变量、全局变量、局部变量

变量的作用域指定了该变量可以使用的范围,并且该变量只能在该范围内使用。根据声明变量的位置,变量的范围也有所不同。

根据作用域的不同,变量通常分为不同类型:成员变量和局部变量。下面更详细地解释这些变量。

成员变量

Java中有两种类型的成员变量:全局变量和静态变量(类变量)。定义位于方法体和语句块之外,不属于任何方法,并且作用范围为整个类。

姓名改变使用权生命周期
全局变量(实例变量)静止的对象名.变量名只要对象被视为引用,实例变量就存在。
静态变量(类变量)静止的类名.变量名或对象名.变量名它的生命周期取决于类的生命周期。一个类只有在被垃圾回收机制完全回收后才会被销毁。

假设类中声明了四个变量,下面是根据测试类的输出更改变量值的示例代码。

变量声明代码如下所示:

 public class DataClass {
    String name; // メンバ変数、インスタンス変数
    int age; // メンバ変数、インスタンス変数

    static final String website = "IT基礎"; // メンバ変数、静的変数(クラス変数)
    static String URL = "https://it-kiso.com"; // メンバ変数、静的変数(クラス変数)
} 

这是测试类的代码:

 public class Test {
    public static void main(String[] args) {
        // クラスのオブジェクトを作成する
        DataClass dc = new DataClass();
        // オブジェクト名.変数名でインスタンス変数(グローバル変数)を呼び出す
        System.out.println(dc.name);
        System.out.println(dc.age);

        // オブジェクト名.変数名で静的変数(クラス変数)を呼び出す
        System.out.println(dc.website);
        System.out.println(dc.URL);

        // クラス名.変数名で静的変数(クラス変数)を呼び出す
        System.out.println(DataClass.website);
        System.out.println(DataClass.URL);
    }
} 

本例中的第一段代码定义了四个成员变量,输出显示了name和age的系统默认初始化值,以及website和URL的初始化值,可以看到显示的值。此外,必须为使用 static Final 修改的变量分配初始值。

局部变量

局部变量是指在方法或方法代码块中定义的变量,其作用域是它所在的代码块。它可以分为以下三种类型。

  • 方法参数变量(parameters):在整个方法中有效。
  • 方法局部变量(在方法内定义):从变量定义时到方法结束期间有效。
  • 代码块局部变量(在代码块内定义):从该变量的定义到代码块末尾有效。

局部变量在使用之前必须由程序员主动初始化为一个值。

1)方法局部变量

声明两个局部变量并打印它们的值的实现代码如下:

 publicクラスTest2 {
    public static void main(String[] args) {
        int a = 7;
        if (5 > 3) {
            int s = 3; // int型のローカル変数を宣言
            System.out.println("s=" + s);
            System.out.println("a=" + a);
        }
        System.out.println("a=" + a);
    }
} 

上面的例子中,定义了两个局部变量a和s,int类型a的作用域是整个main()方法,int类型变量s的作用域是if语句执行的代码块内。

如果在if方法之外调用变量s,则会报错该变量无法解析。

2)方法参数变量

声明为方法参数的变量的范围是整个方法。

声明方法的参数变量。实现代码如下。

 public class Test3 {
    public static void testFun(int n) {
        System.out.println("n=" + n);
    }

    public static void main(String[] args) {
        testFun(3);
    }
} 

在上面的例子中,一个 testFun() 方法定义了一个 int 类型的参数变量 n,它的作用域在 testFun() 方法的主体内。调用该方法时,传递参数3,因此输出控制台中的n值为3。

3)代码块局部变量

代码块局部变量经常用在try catch代码块中,成为异常处理参数变量。

异常处理参数变量的作用域位于异常处理块内,并且与方法参数变量一样,它们将异常处理参数传递给异常处理块。

声明异常处理语句。实现代码如下。

 public class Test4 {
    public static void test() {
        try {
            System.out.println("こんにちは!例外発生!");
        } catch (Exception e) { // 例外処理ブロック、引数は Exception 型
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        test();
    }
} 

上面的例子中,定义了一条异常处理语句,异常处理块catch的参数是一个Exception类型的变量e,作用域是整个catch块。

通俗易懂的讲解《Java变量作用域:静态变量、全局变量、局部变量》!您必须观看的最佳 2 个视频

static変数、staticメソッドの使いどころやメモリ内の動き【Java入門講座】3-7 static
https://www.youtube.com/watch?v=P9CVQ6IuquM&pp=ygVcIEphdmEg5aSJ5pWw44Gu44K544Kz44O844OXO iDpnZnnmoTlpInmlbDjgIHjgrDjg63jg7zjg5Djg6vlpInmlbDjgIHjg63jg7zjgqvjg6vlpInmlbAmaGw9SkE%3D
【Java超入門コース】06.変数 |変数は、例えるなら「箱」のこと。箱にデータを入れておくことができます【プログラミング初心者向け入門講座】
https://www.youtube.com/watch?v=x0kSA56WxW4&pp=ygVcIEphdmEg5aSJ5pWw44Gu44K544Kz44O844OXO iDpnZnnmoTlpInmlbDjgIHjgrDjg63jg7zjg5Djg6vlpInmlbDjgIHjg63jg7zjgqvjg6vlpInmlbAmaGw9SkE%3D
变量的作用域指定了该变量可以使用的范围,并且该变量只能在该范围内使用。根据声明变量的位置,变量的范围也有所不同。

根据作用域的不同,变量通常分为不同类型:成员变量和局部变量。下面更详细地解释这些变量。

成员变量

Java中有两种类型的成员变量:全局变量和静态变量(类变量)。定义位于方法体和语句块之外,不属于任何方法,并且作用范围为整个类。

姓名改变使用权生命周期
全局变量(实例变量)静止的对象名.变量名只要对象被视为引用,实例变量就存在。
静态变量(类变量)静止的类名.变量名或对象名.变量名它的生命周期取决于类的生命周期。一个类只有在被垃圾回收机制完全回收后才会被销毁。

假设类中声明了四个变量,下面是根据测试类的输出更改变量值的示例代码。

变量声明代码如下所示:

 public class DataClass {
    String name; // メンバ変数、インスタンス変数
    int age; // メンバ変数、インスタンス変数

    static final String website = "IT基礎"; // メンバ変数、静的変数(クラス変数)
    static String URL = "https://it-kiso.com"; // メンバ変数、静的変数(クラス変数)
} 

这是测试类的代码:

 public class Test {
    public static void main(String[] args) {
        // クラスのオブジェクトを作成する
        DataClass dc = new DataClass();
        // オブジェクト名.変数名でインスタンス変数(グローバル変数)を呼び出す
        System.out.println(dc.name);
        System.out.println(dc.age);

        // オブジェクト名.変数名で静的変数(クラス変数)を呼び出す
        System.out.println(dc.website);
        System.out.println(dc.URL);

        // クラス名.変数名で静的変数(クラス変数)を呼び出す
        System.out.println(DataClass.website);
        System.out.println(DataClass.URL);
    }
} 

本例中的第一段代码定义了四个成员变量,输出显示了name和age的系统默认初始化值,以及website和URL的初始化值,可以看到显示的值。此外,必须为使用 static Final 修改的变量分配初始值。

局部变量

局部变量是指在方法或方法代码块中定义的变量,其作用域是它所在的代码块。它可以分为以下三种类型。

  • 方法参数变量(parameters):在整个方法中有效。
  • 方法局部变量(在方法内定义):从变量定义时到方法结束期间有效。
  • 代码块局部变量(在代码块内定义):从该变量的定义到代码块末尾有效。

局部变量在使用之前必须由程序员主动初始化为一个值。

1)方法局部变量

声明两个局部变量并打印它们的值的实现代码如下:

 publicクラスTest2 {
    public static void main(String[] args) {
        int a = 7;
        if (5 > 3) {
            int s = 3; // int型のローカル変数を宣言
            System.out.println("s=" + s);
            System.out.println("a=" + a);
        }
        System.out.println("a=" + a);
    }
} 

上面的例子中,定义了两个局部变量a和s,int类型a的作用域是整个main()方法,int类型变量s的作用域是if语句执行的代码块内。

如果在if方法之外调用变量s,则会报错该变量无法解析。

2)方法参数变量

声明为方法参数的变量的范围是整个方法。

声明方法的参数变量。实现代码如下。

 public class Test3 {
    public static void testFun(int n) {
        System.out.println("n=" + n);
    }

    public static void main(String[] args) {
        testFun(3);
    }
} 

在上面的例子中,一个 testFun() 方法定义了一个 int 类型的参数变量 n,它的作用域在 testFun() 方法的主体内。调用该方法时,传递参数3,因此输出控制台中的n值为3。

3)代码块局部变量

代码块局部变量经常用在try catch代码块中,成为异常处理参数变量。

异常处理参数变量的作用域位于异常处理块内,并且与方法参数变量一样,它们将异常处理参数传递给异常处理块。

声明异常处理语句。实现代码如下。

 public class Test4 {
    public static void test() {
        try {
            System.out.println("こんにちは!例外発生!");
        } catch (Exception e) { // 例外処理ブロック、引数は Exception 型
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        test();
    }
} 

上面的例子中,定义了一条异常处理语句,异常处理块catch的参数是一个Exception类型的变量e,作用域是整个catch块。

通俗易懂的讲解《Java变量作用域:静态变量、全局变量、局部变量》!您必须观看的最佳 2 个视频

static変数、staticメソッドの使いどころやメモリ内の動き【Java入門講座】3-7 static
https://www.youtube.com/watch?v=P9CVQ6IuquM&pp=ygVcIEphdmEg5aSJ5pWw44Gu44K544Kz44O844OXO iDpnZnnmoTlpInmlbDjgIHjgrDjg63jg7zjg5Djg6vlpInmlbDjgIHjg63jg7zjgqvjg6vlpInmlbAmaGw9SkE%3D
【Java超入門コース】06.変数 |変数は、例えるなら「箱」のこと。箱にデータを入れておくことができます【プログラミング初心者向け入門講座】
https://www.youtube.com/watch?v=x0kSA56WxW4&pp=ygVcIEphdmEg5aSJ5pWw44Gu44K544Kz44O844OXO iDpnZnnmoTlpInmlbDjgIHjgrDjg63jg7zjg5Djg6vlpInmlbDjgIHjg63jg7zjgqvjg6vlpInmlbAmaGw9SkE%3D