• 随笔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关键字。
    静态代码块
             作用:用来给静态成员变量初始化
     
  • 相关阅读:
    表格的交集合集等的命令处理
    Linux中screen命令
    Linux中sed基础
    Linux中AWK基础
    聊聊开发中经历的几种后端语言
    C语言NXP S32K144 serial bootloader和C#语言bootloader PC端串口通信程序
    自己用C语言写NXP S32K144 serial bootloader
    C语言NXP S32K116 serial bootloader和C#语言bootloader PC端串口通信程序
    自己用C语言写NXP S32K116 serial bootloader
    C语言RH850 F1L serial bootloader和C#语言bootloader PC端串口通信程序
  • 原文地址:https://www.cnblogs.com/lyr612556/p/7819863.html
Copyright © 2020-2023  润新知