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