首页 > 编程语言 >JAVA基础之十-不常用但是又希望能看懂的关键字/保留字

JAVA基础之十-不常用但是又希望能看懂的关键字/保留字

时间:2024-10-21 15:11:54浏览次数:1  
标签:线程 之十 JAVA 示例 关键字 volatile java public 保留字

对于绝大部分JAVA工程师而言,大部分的关键字也是能够看懂的,但还是相当一部分比较不常见的关键字,妨碍了代码阅读。

本文力图收集一些个人认为在CRUD机械工作中可能比较少见的一些关键字/保留字。

此类关键字主要用于修饰方法和类。

收集过程会持续一段时间,现在暂时没有时间也没有必要找出个人为人需要整理的,只会遇到就更新一下。

一、概述

需要注意的是,不同的版本中,关键字包含的内容不是一样的。

大体而言:

  • 随着版本的发展,关键字越来越多
  • 增长的幅度不定,有的版本还是相当克制的,甚至可能有些版本没有出现新的关键字;有的版本会新增许多
  • 大部分的关键字,在java1.0的时候已经确定下来

如果想知道具体有哪些,最好阅读官方的文档,地址是:https://docs.oracle.com/javase/specs/index.html

当前有从6~23有关版本的文档。

我们看下几个关键版本的关键字差别

JAVA8

 50个。

 

JAVA17

67个,注意下划线也算,比J8多了很多

 

JAVA23

 68个,比J17多了一个when

可以看到,不同的版本,有差异。

本文主要讨论截止JAVA23的部分关键字:

  1. assert
  2. default
  3. transient
  4. strictfp
  5. volatile
  6. native
  7. exports
  8. opens
  9. requires
  10. yield
  11. module
  12. permites
  13. sealed
  14. var
  15. provides
  16. to
  17. when

 

除了这些语言中的关键字(保留字),我们还会在javaDoc中看到许多专业词语,虽然使用翻译软件能够解决一些问题,但毫无疑问

如果能够直接阅读无疑能提高效率,并避免翻译过程中的曲解问题。

二、关键字细节

2.1、assert

释义:断言;生效;维护自己的权利(或权威);坚持自己的主张;明确肯定;表现坚定

说明:这个东西主要是为了辅助开发调试用的-如果条件不成立那么会终端运行。

用法

a. assert  布尔表达式:条件不成立后的警告

b.需要在运行时候设置vm选项 -ea

示例:

assert 1!=1:"1等于1";

 这个东西有助于开发调试。

2.2、default

释义:默认

说明

a.default关键字用于接口,从J9开始出现的,允许定义一个默认的实现

b.在注解中为属性提供默认值

示例:

例一、接口默认函数

/**
 * 接口特性示例,包含了j7~j17
 */
public interface ITool {/**
     * @apiNote  收起来
     * 这是默认方法
     * 实现类可以覆盖,也可以不覆盖。
     * 可以调用其它四种类型的方法
     * 如果每个子类实现的都是一样的,就可以用这个。这样可以节约代码,也好维护   
     * @since J8
     */
    default void putAway() {
        //调用 private static
        //decay();
        //调用 private 
        //flash();
        //调用 public abstract
        //repair();
        //调用 public static
        //show();        
    }
    default void putAway(String msg) {        
    }    
}

 

例二、注解

@Target({ ElementType.FIELD })
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = {ValidMessage.class})
@Documented
public @interface ValidIsPositive {
    String message() default "";
    Class<?>[] groups() default { };
    Class<? extends Payload>[] payload() default { };
}

 

2.3、transient

释义:短暂的;临时的;转瞬即逝的;暂住的;过往的;倏忽;临时工;过往旅客;暂住某地的人;

说明:申明某个字段/属性不能被序列化(指的是java自身,非JSON系列化)

对象序列化的时候,部分属性不需要/无法序列化,通过这个标记告诉序列化操作,不要处理。

和JACKSON等序列化比较,java的默认序列化主要用于内部交流和网络传输,重点在于内部。

而后者强调展示和跨程序交流。

示例:

package study.base.serialize;

import java.io.*;  

public class SerializeTest implements Serializable {  
    private static final long serialVersionUID = 1L;
    
    private String name;  
    // 这个字段不会被序列化
    private transient String password; 
  
    public SerializeTest(String name, String password) {  
        this.name = name;  
        this.password = password;  
    }  
  
    @Override  
    public String toString() {  
        return "{" +  "name='" + name + '\'' +  ", password='" 
              + (password != null ? "******" : "null") + '\'' +  '}';  
    }  
  
    public static void main(String[] args) {  
        SerializeTest test = new SerializeTest("中国❤

标签:线程,之十,JAVA,示例,关键字,volatile,java,public,保留字
From: https://www.cnblogs.com/lzfhope/p/18454841

相关文章

  • java+vue计算机毕设高龄老人服务管理系统【开题+程序+论文+源码】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着社会老龄化的不断加剧,高龄老人群体的生活照护与服务管理成为了一个亟待解决的社会问题。随着医疗技术的进步和生活水平的提高,老年人的寿命不断延......
  • Java第四章
    1、类的继承类的继承可以实现代码的复用,是实现多态的基础。通过继承可以使多种事物之间形成一种关系体系。子类继承父类的属性和方法,使得子类对象具有父类的特征和行为。在程序中,如果想声明一个类继承一个类,需要使用extends关键字,语法格式如下:class父类{......}class子类......
  • [Javascript] Write memoize function
    classMemoizeMap{constructor(){this._map=newMap();this._weakMap=newWeakMap();}_isObject(v){returntypeofv==="object"&&v!==null;}set(key,value){if(this._isObject(key)){this._......
  • Java 当中使用 “google.zxing ”开源项目 和 “github 的 qrcode-plugin” 开源项目
    Java当中使用“google.zxing”开源项目和“github的qrcode-plugin”开源项目生成二维码@目录Java当中使用“google.zxing”开源项目和“github的qrcode-plugin”开源项目生成二维码1.Java当中使用“google.zxing”开源项目生成二维码1.1准备工作1.2生成......
  • java计算机毕业设计智慧城市水表计量控制系统定制(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景随着智慧城市建设成为全球城市发展的重要趋势,城市基础设施的智能化改造不断推进。在水务管理方面,传统的水表计量控制系统已难以满足需求。传统水......
  • java计算机毕业设计资产管理(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景在当今复杂多变的经济环境下,资产管理的重要性日益凸显。随着各类经济主体的不断发展,资产规模持续扩大且种类日益繁杂。无论是企业还是行政事业单......
  • Java金额计算
    importjava.math.BigDecimal;importjava.text.NumberFormat;/***由于Java的简单类型不能够精确的对浮点数进行运算,这个工具类提供精确的浮点数运算,包括加减乘除和四舍五入。*/publicclassCurrencyUtil{/***默认除法运算精度*/privatesta......
  • 2024最新Java八股文总结!
    1、请写出你最常见的5个RuntimeException   难度系数:⭐java.lang.NullPointerException空指针异常;出现原因:调用了未经初始化的对象或者是不存在的对象。java.lang.ClassNotFoundException指定的类找不到;出现原因:类的名称和路径加载错误;通常都是程序试图通过字符串来加......
  • java线程异步方法
    异步的八种实现方式:线程异步Thread/RunnableFuture+Callable异步框架CompletableFutureSpring注解@AsyncSpringApplicationEvent事件第三方异步框架,比如Hutool的ThreadUtilGuava异步消息队列1、线程异步publicclassThreadTestimplementsRunnable{......
  • Java多线程技能
      2.创建多线程的方式,有几种?怎么创建继承Thread类(一般不单独用)实现Runnable接口+Thread对象实现Callable接口+FutureTask<>对象+Thread对象线程池+(实现Callable接口+FutureTask<>对象)或者(实现Runnable接口)3.Thread类的常见APIcurrentThread()获取当前......