Java中的非访问修饰符是什么?
Java非访问修饰符
Java中有7个非访问修饰符。这些非访问修饰符的名称如下所示,
native
synchronized
transient
volatile
final
abstract
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