zoukankan      html  css  js  c++  java
  • 随笔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关键字。
    静态代码块
             作用:用来给静态成员变量初始化
     
  • 相关阅读:
    PHP数组(数组正则表达式、数组、预定义数组)
    面向对象。OOP三大特征:封装,继承,多态。 这个讲的是【封存】
    uvalive 3938 "Ray, Pass me the dishes!" 线段树 区间合并
    LA4329 Ping pong 树状数组
    HDU 1257 最少拦截系统
    HDU 1260 Tickets
    codeforce 621D
    codeforce 621C Wet Shark and Flowers
    codeforce 621B Wet Shark and Bishops
    codeforce 621A Wet Shark and Odd and Even
  • 原文地址:https://www.cnblogs.com/lyr612556/p/7819863.html
Copyright © 2011-2022 走看看