随笔14 java中的关键字

Posted 叶枫啦啦

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了随笔14 java中的关键字相关的知识,希望对你有一定的参考价值。

一:java中的关键字列表

 

【注】const和goto是java的保留字。java中所有的关键字都是小写的,还有要注意true,false,null, friendly,sizeof不是java的关键字,但是你不能把它们作为java标识符用。

二:super关键字

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关键字可以修饰变量,方法,静态代码块

 静态变量:
         由static修饰的变量称为静态变量
         静态变量属于类,而不属于某个对象
         静态变量它的副本只有一个(静态变量在类中只加载一次)
静态方法:
         在静态方法中只能调用静态变量和静态方法
         在非静态方法中,可以调用静态方法或者变量。
         在静态方法中不能使用this和super关键字。
静态代码块
         作用:用来给静态成员变量初始化
 

 

以上是关于随笔14 java中的关键字的主要内容,如果未能解决你的问题,请参考以下文章

Java随笔二

Java随笔三

Java随笔三

java随笔:static关键字

java随笔:super关键字

随笔⑨ java中的变量 --- 类变量(静态变量),final变量,成员变量,局部变量