随笔14 java中的关键字
Posted 叶枫啦啦
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了随笔14 java中的关键字相关的知识,希望对你有一定的参考价值。
一:java中的关键字列表
【注】const和goto是java的保留字。java中所有的关键字都是小写的,还有要注意true,false,null, friendly,sizeof不是java的关键字,但是你不能把它们作为java标识符用。
二:super关键字
- 访问父类的属性 super.属性名
- 访问父类的方法 super.方法名()
- 子类构造方法需要调用父类的构造方法时,在子类的构造方法体里最前面的位置:super()
三:this关键字
this关键字代表本类对象。
this关键字主要有三个应用:
- this调用本类中的属性,也就是类中的成员变量;
- this调用本类中的其他方法;
- this调用本类中的其他构造方法,调用时要放在构造方法的首行。
四:访问控制符
defaul关键字不能修饰变量;
五 abstract关键字,final关键字
- 普通变量不能用abstract修饰,abstract一般修饰方法和类。
- 被定义为abstract的类需要被子类继承,但是被修饰为final的类是不能被继承和重写的。
六 native关键字
- native是方法修饰符。native修饰的方法简单来说就是:一个Java方法调用了一个非Java代码的接口。
- 定义navtive方法时,并不提供实现体,因为其实现体是用非Java语言在外面实现的。
- native可以和任何修饰符连用,abstract除外。因为native暗示这个方法时有实现体的,而abstract却显式指明了这个方法没有实现体。
七: synchronized 关键字
用来给对象和方法或者代码块加锁,当它锁定一个方法或者一个代码块的时候,同一时刻最多只有一个线程执行这个段代码。
八 volatile关键字
用来确保将变量的更新操作通知到其他线程,当把变量声明为volatile类型后,编译器与运行时都会注意到这个变量是共享的,因此不会将该变量上的操作与其他内存操作一起重排序。然而,在访问volatile变量时不会执行加锁操作,因此也就不会使执行线程阻塞,因此volatile变量是一种比 synchronized关键字更轻量级的同步机制。
被voaltile定义的变量,每次系统运行时都是从内存而不是缓存中读取数据,可防止数据被其他线程改变从而拿不到最新的数据;
volatile是java中的一个类型修饰符。它是被设计用来修饰被不同线程访问和修改的变量。如果不加入volatile,基本上会导致这样的结果:要么无法编写多线程程序,要么编译器失去大量优化的机会。
1,可见性
可见性指的是在一个线程中对该变量的修改会马上由工作内存(Work Memory)写回主内存(Main Memory),所以会马上反应在其它线程的读取操作中。顺便一提,工作内存和主内存可以近似理解为实际电脑中的高速缓存和主存,工作内存是线程独享的,主存是线程共享的。
2,禁止指令重排序优化
禁止指令重排序优化。大家知道我们写的代码(尤其是多线程代码),由于编译器优化,在实际执行的时候可能与我们编写的顺序不同。编译器只保证程序执行结果与源代码相同,却不保证实际指令的顺序与源代码相同。这在单线程看起来没什么问题,然而一旦引入多线程,这种乱序就可能导致严重问题。volatile关键字就可以从语义上解决这个问题。
九 serialize关键字
Java 对象序列化为二进制文件。
十 static关键字
static关键字可以修饰变量,方法,静态代码块。
以上是关于随笔14 java中的关键字的主要内容,如果未能解决你的问题,请参考以下文章