• 【Java基础系列】Java中的关键字


    1. 关键字

    1.1 常用关键字

    下表整理了实际使用过程中常用的关键字,大致按照使用频率倒序。

    修饰类:

    关键字作用对象含义
    public类、方法、变量表示一个类、方法或变量是公开的,可以在不同包中访问。
    protected类、方法、变量表示一个类、方法或变量是受保护的,同包可访问,可被继承(常用)
    private类、方法、变量表示一个类、方法或变量是私有的,只有本类内部可访问,不可继承,不可覆盖。
    abstract类、方法表示一个类、方法是抽象的,需要子类来实现,抽象类中可包含抽象和非抽象方法。
    final类、方法、变量表示一个类、方法或变量是不可变的,比如包装类类,final修饰的内容不可变、不可被继承或覆盖。
    static类、方法、变量表示一个类、方法或变量是静态的,即是属于类而不是类的实例的。
    synchronized方法、代码块表示一个方法或代码块需要同步执行。
    volatile变量常用于保证变量在多线程下的可见性。

    语句类:

    关键字作用对象含义
    for语句循环
    return语句方法返回
    try语句包裹可能会发生异常的语句
    catch语句发生异常后进行处理的语句
    finally语句try/catch执行完后执行的语句
    switch语句分支
    break语句结束循环,
    continue语句结束本次循环,继续下一次循环
    while语句循环
    do语句和while搭配使用,do{…}while(条件)
    instanceof语句判断某个对象是否实现了某个接口

    数据类型类:

    关键字作用对象含义
    int变量整型,32位,4字节
    long变量长整型,64位,8字节
    double变量双精度浮点型,64位,8字节
    float变量单精度浮点型 ,32位,4字节
    boolean变量布尔型,true或false
    byte变量字节型,8位,1字节
    void方法表示方法返回为空

    用于接口、类或类之间关系的:

    关键字作用对象含义
    class声明一个类
    interface接口声明一个接口
    extends类、接口继承一个类或者接口
    implements实现一个接口

    1.2 关键字常见问题

    1.2.1 finally中的代码一定会执行吗

    当没有异常时:

    public class TryCatchFinally01 {
        public static void main(String[] args) {
            try {
                System.out.println("try");
            }catch (Exception e){
                System.out.println("catch");
            }finally {
                System.out.println("finally");
            }
        }
    }
    
    输出:
    try
    finally
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    当抛出异常时:

    public class TryCatchFinally01 {
        public static void main(String[] args) {
            try {
                System.out.println("try");
                throw new RuntimeException("test exception");
            } catch (Exception e) {
                System.out.println("catch");
            } finally {
                System.out.println("finally");
            }
        }
    }
    
    输出:
    try
    catch
    finally
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    当强制退出时:

    public class TryCatchFinally01 {
        public static void main(String[] args) {
            try {
                System.out.println("try");
                System.exit(0);
                throw new RuntimeException("test exception");
            } catch (Exception e) {
                System.out.println("catch");
            } finally {
                System.out.println("finally");
            }
        }
    }
    输出:
    try
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    总结:
    除了使用System.exit()强制退出系统时,finally都会被执行,另外即使发生Error级别的错误(如OOM),finally中的代码也会执行

    1.2.2 try、catch、finally中的return执行情况

    看如下代码:

    public class TryCatchFinally02 {
        public static void main(String[] args) {
            System.out.println(getValue());
        }
    
        public static int getValue() {
            int n = 0;
            try {
                return 1 / n;
            } catch (Exception e) {
                return ++n;
            } finally {
                return ++n;
            }
        }
    }
    输出:
    2
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    分析:

    (1) 首先执行try中的1/n,除数为0,抛出异常,进入catch
    (2) 然后catch中执行++n,结果为1
    (3) 最后执行finally中++n,结果为2

    总结:
    当try、catch、finally都存在retun时,且return是可执行语句时,依次执行,执行顺序为:try中的return → catch中的return → finally中的return,最后的返回以finally中的return为准。

  • 相关阅读:
    基于Java+MySQL的三维模型素材交易平台设计
    在北上深杭做Java开发如何拿到三万月薪,需要什么程度技术?
    OpenSceneGraph3.5.1编译
    [错题]Mocha and Railgun
    无缝投屏技巧:怎样将Windows电脑屏幕共享到安卓手机?
    Ajax了解及请求方式
    使用Spring Web Flow—Spring Web Flow的配置
    HTTPS的工作流程
    深度学习实战60-基于深度学习模型搭建人脸识别系统,用最简单的方式实现人脸识别。
    0087 递归
  • 原文地址:https://blog.csdn.net/wxgxgp/article/details/126804411