类变量成员变量局部变量。他们分别存放在JVM的方法区、堆内存和栈内存中。

public class Variables {
    /**
     * 类变量
     */
    private static int a;

    /**
     * 成员变量
     */
    private int b;

    /**
     * 局部变量
     * @param c
     */
    public void test(int c){
        int d;
    }
}

        上面定义的三个变量中,变量a就是类变量,变量b就是成员变量,而变量cd局部变量

a作为类变量,他存放在方法区中;b作为成员变量,和对象一起存储在堆内存中(不考虑栈上分配的情况);cd作为方法的局部变量,保存在栈内存中。

        因为只有共享变量才会遇到并发问题,所以,变量a和b是共享变量,变量c和d是非共享变量。所以如果遇到多线程场景,对于变量a和b的操作是需要考虑线程安全的,而对于线程c和d的操作是不需要考虑线程安全的。

成员变量和方法作用域

        我们通过封装的手段,将成员变量、方法等包装在一个类中,那么,被封装在类中的这些成员变量和方法,能不能被外部访问呢?能被谁访问呢?

        这种能不能被访问、能被谁访问的特性,Java是通过访问控制修饰符来实现的。Java中,可以使用访问控制符来保护对类、变量、方法和构造方法的访问,Java 支持 4 种不同的访问权限。

        对于成员变量和方法的作用域,public,protected,private以及不写之间的区别:

public : 表明该成员变量或者方法是对所有类或者对象都是可见的,所有类或者对象都可以直接访问

private

protected

default


                今日有心苦勤奋,明朝一举步青云。————《人民日报》

javascript 共享变量 java类之间共享变量_Java