目录
一、什么是修饰符
所谓修饰符,就是用来修饰或者定义类、方法或者变量,通常情况下放在语句的最前端。
修饰符分为两种修饰符,访问修饰符、非访问修饰符;下面我们简单描述一下两种修饰符分别都有什么作用。
二、访问修饰符
java的访问修饰符一共有四种,default、private、public、protected
-
default:在同一包里可见【及缺省,什么也不用写】
public class Test{
String Test;
}
-
private:在同一类里可见【不是修饰类】
public class Test{
private String Test;
}
-
public:对所有类可见
public class Test{
public String Test;
}
-
protected:对同一包内的类及其所有的子类可见【不能修饰类】
public class Test{
protected String Test;
}
三、非访问修饰符
java里的非访问修饰符分为以下几种,ststic、final、abstract、syschronized、transient、volatile
-
ststic
-
static关键字用来声明独立于对象的静态变量,不论创建多少实例对象,他的静态变量只有一个,代码如下。
-
public class Test {
public static String name = "Name";
public static void main(String[] args) {
System.out.print(name);
name="1";
Test1 test1 = new Test1();
test1.a();
}
}
//---------------------
public class Test1 {
public void a(){
Test t = new Test();
System.out.print(t.name);
}
}
//----------------------输出结果
//name1
-
final
-
final表示最后最终的意思,变量一旦赋值就不能别改变,在创建时必须显示其初始值。
-
被final修饰的类不能被继承
-
public class Test {
public final String name = "Name"; //规定初始值
public static void main(String[] args) {
name="1"; //重新赋值会报错
}
}
-
abstract
-
修饰一个类为抽象类,或者一个方法为抽象方法;一个类不能同时被final与abstract修饰。
-
包含抽象方法的类一定是抽象类,抽象方法没有方法体。
-
抽象累的作用就是为了被继承。
-
public abstract class Test {
public abstract void Test(); //抽象方法
}
-
syschronized
-
这个关键字修饰的方法在同一时间只能被一个线程访问。后续学习线程的时候会详细操作。
-
public class Test {
public synchronized void Test(){
System.out.print("练习synchronized");
}
}
-
transient
-
被修饰的实例变量不会持久化,JVM会跳过该特定的变量。
-
public transient int age = 20; // 不会持久化
-
volatile
-
这个修饰符的作用是,在每次被线程访问时,都强制从共享内存中重新读取该成员变量的值,而且在该变量发生变化时会强制把变化的值写回到共享内存中。为了就是在任何时刻两个不同的线程看见的成员变量都是同样的值。
-
private volatile boolean boo;