美文网首页
Java基础---修饰符注意项

Java基础---修饰符注意项

作者: 时刻自省的愤怒者 | 来源:发表于2018-10-17 16:07 被阅读0次

    static

    1. java中的static与C/C++中的static不同,不会影响到变量或者方法的作用域

        Java中能够影响到访问权限的只有private、public、protected(包括包访问权限)这几个关键字

    2. “static方法就是没有this的方法。在static方法内部不能调用非静态方法,反过来是可以的。而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用static方法。这实际上正是static方法的主要用途。”即方便在没有创建对象的情况下来进行调用(方法/变量)。

    3. 在C/C++中static是可以作用域局部变量的,但是在Java中切记:static是不允许用来修饰局部变量


    final

    被 final 修饰的实例变量必须显式指定初始值。final 修饰符通常和 static 修饰符一起使用来创建类常量。

    final方法可以被子类继承,不可被子类修改

    final类不能被继承

    abstract

    一个类不能同时被final和abstract修饰

    抽象方法没有任何实现,具体由子类实现的一种方法

    不能被声明成final和static

    任何继承抽象类的子类必须实现父类的所有抽象方法,除非该子类也是抽象类。

    如果一个类包含若干个抽象方法,那么该类必须声明为抽象类。抽象类可以不包含抽象方法。

    抽象方法的声明以分号结尾,例如:public abstract sample();


    volatile

    volatile 修饰的成员变量在每次被线程访问时,都强制从共享内存中重新读取该成员变量的值。而且,当成员变量发生变化时,会强制线程将变化值回写到共享内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。

    一个 volatile 对象引用可能是 null。

    例子:

    public class MyRunnable implements Runnable{ private volatile boolean active;   

          public void run()    {        

            active = true;

            while (active) // 第一行        {           

                     // 代码        

             }    

          }    

          public void stop()    {        

                active = false; // 第二行    

          }

    }

    通常情况下,在一个线程调用 run() 方法(在 Runnable 开启的线程),在另一个线程调用 stop() 方法。 如果第一行中缓冲区的 active 值被使用,那么在第二行的 active 值为 false 时循环不会停止。

    但是以上代码中我们使用了 volatile  修饰 active,所以该循环会停止

    相关文章

      网友评论

          本文标题:Java基础---修饰符注意项

          本文链接:https://www.haomeiwen.com/subject/jurrzftx.html