Java中的非访问修饰符是什么?

Java非访问修饰符

Java中有7个非访问修饰符。这些非访问修饰符的名称如下所示,

  1. native

  2. synchronized

  3. transient

  4. volatile

  5. final

  6. abstract

  7. static

我们将一一学习所有非访问修饰符...

1)native

  • “ native”是在Java中引入的关键字。

  • “本机”是仅适用于方法的修饰符,但不适用于变量和类。

  • 本机方法以其他一些语言(如C,C ++等)实现。

  • 本机方法的目的是提高系统性能。

  • 我们知道本机方法的实现在其他语言中也可用,因此我们不需要关心实现。

示例:我们将看到编写本机方法的方式

class Native {
    static {
        //加载本机库
        System.loadLibrary("native library");
    }
    //本机方法声明
    public native void display();
}

class Main {
    public static void main(String[] args) {
        Native native = new Native();
        native.display();
    }
}

2)synchronized

  • “已同步”是适用于方法和块的关键字。

  • “ synchronized”关键字不适用于类和变量。

  • 如果我们将一个方法声明为“ synchronized”,则“ synchronized”关键字对于多线程很有用,那么一次只能在一个对象上运行一个线程。

示例

class SynchronizedDisplay {
    public synchronized void display(String msg) {
        for (int i = 0; i < 2; ++i) {
            System.out.println(msg);
            try {
                Thread.sleep(500);
            } catch (Exception ex) {
                System.out.println(ex.getMessage());
            }
        }
    }
}

class MyThread extends Thread {
    SynchronizedDisplay sd;
    MyThread(SynchronizedDisplay sd) {
        this.sd = sd;
    }
    public void run() {
        sd.display("hi");
    }
}

class SynchronizedClass {
    public static void main(String[] args) {
        SynchronizedDisplay sd1 = new SynchronizedDisplay();
        MyThread mt1 = new MyThread(sd1);
        mt1.start();
        MyThread mt2 = new MyThread(sd1);
        mt2.start();
    }
}

输出结果

E:\Programs>javac SynchronizedClass.java

E:\Programs>java SynchronizedClass
hi
hi
hi
hi