1 Java 中的访问权限修饰符

同一个类中

同一个包中

不同包的子类

不同包的其他类

public

protected

default

private

2 局部变量

在方法内部定义的变量称为局部变量,局部变量作用域从变量声明处开始到对应的块结束。方法参数也是局部变量。

package abc;

public class Hello {
    void hi(String name) { // ①
        String s = name.toLowerCase(); // ②
        int len = s.length(); // ③
        if (len < 10) { // ④
            int p = 10 - len; // ⑤
            for (int i=0; i<10; i++) { // ⑥
                System.out.println(); // ⑦
            } // ⑧
        } // ⑨
    } // ⑩
}

我们观察上面的hi()方法代码:

  • 方法参数name是局部变量,它的作用域是整个方法,即①~⑩;

  • 变量s的作用域是定义处到方法结束,即②~⑩;

  • 变量len的作用域是定义处到方法结束,即③~⑩;

  • 变量p的作用域是定义处到if块结束,即⑤~⑨;

  • 变量i的作用域是for循环,即⑥~⑧。

使用局部变量时,应该尽可能把局部变量的作用域缩小,尽可能延后声明局部变量。

3 全局变量

顾名思义,有局部变量,就应该有全局变量。

在 Java 中,是不允许在类外定义变量的,所以 Java 中的全局变量就是类的字段。

它们的作用域是整个类,在类的任何地方都可以被访问。

即使没有初始化,它们也有默认值。