JAVA编程基础回顾
1.非访问修饰符:
- static修饰符,用来修饰类方法和类变量
- 静态变量,即类变量;局部变量不能被声明为静态变量
- 静态方法:静态变量必须用静态方法来访问
public class InstanceCounter{
private static int numInstance=0;
protected static int getCount(){
return numInstance;
}
private static void addInstance(){
numInstance++;
}
public void InstanceCounter(){
InstanceCounter.addInstance();
}
public void static main(String []args){
for (int i=0;i<500;++i){
new InstanceCounterS();}
}
}
- final修饰符,用来修饰类、方法和变量,修饰的类不能被继承,修饰的方法不能被继承类重新定义、修饰的变量为常量不能被修改
- final变量能被显式的初始化切只能被显式的初始化一次。final对象的引用不可以改变,但里面的值可以改变
public final score{
final int score=0;
public void changeScore(int a){
score=a;//这里将会报错
}
}
- final方法的价值在于防止该方法的内容被修改
- final类:不能被继承,没有类能够继承final类的任何特性,缺乏实际使用价值
public final class Test{//类体}
- abstract修饰符,用来创建抽象类和抽象方法:
- 抽象类不能用来实例化对象
- 抽象类的目的式便于将来对类的扩充
- 抽象类可以包含非抽象方法和抽象方法(没有给出具体实现的方法)
1.抽象方法是一种没有给出具体实现的方法,具体实现由子类提供
2.抽象方法不能被声明成final和static
3.任何继承抽象类的子类都必须实现父类的所有抽象方法,除非子类也是抽象类。
4.包含抽象方法的类必须声明为抽象类。抽象类不一定包含抽象方法。
public abstract class Superclass
- synchronized和volatile修饰符,主要用于线程的编程
- synchronized关键字声明的方法同一时间只能被一个线程访问,synchronized可用于static,final,abstract,synchronized四个访问修饰符
public synchronized void showDetail(){
//函数体
}
-transient修饰符 序列化的对象包含背transient修饰的实例变量时,java虚拟机跳过该特定的变量,用来处理类和变量的数据类型
public transient int limit=55;//不会持久化
public int b;//持久化
- volatile 修饰符
- volatile修饰的成员变量每次被线程访问时,强制从内存变量中读取该成员变量的值,当变量的值发生变化时,会强制线程将变量值会写到共享内存,因此不论在任何时刻,两个线程总是看到成员变量的同一个值。volatile对象引用可能是null。
- 说白了就是两个线程均能实时完成对同一个成员变量的修改。