• JAVA 关键字


    参考博客:https://www.cnblogs.com/yan-linxi/p/7977947.html

    JAVA的关键字都是小写

    (1)简述Java访问修饰符

    private: 在同一类内可见,不能修饰类

    default: 默认访问修饰符,在同一包内可见
    protected : 对同一包内的类和所有子类可见,不能修饰类
    public: 对所有类可见

    (2)类成员变化修饰符

    参考链接:https://skydai.github.io/2020/11/21/Java%E5%85%B3%E9%94%AE%E5%AD%97static%E5%92%8Cfinal/

    static

    通常情况下, 类成员需要通过它的类的对象访问,如果一个成员被声明为static,它能够在它的类的任何对象创建之前被访问, 而不用引用任何对象。
    声明为static的一个类变量或方法,所有的该类的实例都会共享这个static变量或方法。

    static修饰变量

    静态变量在内存中只有一份, jvm只为静态变量分配一次内存,随着类的加载而加载到静态方法区内存中。由于静态变量属于类,和类的实例无关, 所以可以直接通过类名进行访问。

    static修饰方法

    • 只能调用其他的static方法
    • 只能访问static数据
    • 不能以任何方式引用this 和super
    • static 方法独立于任何实例, 所以static方法必须被实现,不能是抽象的absract,在static方法里引用任何的实例变量都是违法的。

    static修饰代码块。

    JVM在加载类的时候会执行static代码块。static代码块常用于初始化静态变量。static代码块只会被执行一次。

    2 final

    final可以修饰非抽象类, 非抽象类成员方法和变量。使用final关键字可以声明类、成员变量和成员方法,一经声明,便不可继承、不可修改和不能覆盖。

    final修饰变量

    修饰的变量是基本数据类型则值不能改变,修饰的变量是引用类型则不能再指向其他对象。一个变量可以声明为final, 目的是阻止它的内容被修改, 这意味着声明final变量的时候, 必须对其进行初始化,这种用法有点类似于c++的const

    按照编码约定, final变量的所有字符选择大写,final修饰的变量实际中不占用内存, 它实质上是一个常数。

    final修饰方法

    被final修饰的方法可以被子类继承, 但不能被子类的方法覆盖。 如果一个类不想让其子类覆盖它的某个成员方法, 就可以用 final关键字修饰该方法。

    使用final修饰成员方法除了不想让子类覆盖外, 还有一个原因就是高效,Java编译器在遇到final修饰的方法的时候会转入内嵌机制, 提高执行效率。

    内嵌机制 ,类似于c++ inline, 调用方法的时候直接将方法的主题插入到调用处, 而不用去访问类或者对象, 这样会提高50%左右效率。然而,如果方法主体比较庞大, 
    且多处被调用将导致主体代码膨胀, 同时也产生效率问题, 所以需要慎用。
    class Base {
        private final void method() {
            System.out.println("In Base...");
        }
    }
    class Sub extends Base {
        public void method() {
            System.out.println("In Sub...");
        }
    }

    本例中,基类方法 是private ,他在子类中是不可见的,故子类中的 同名方法 不再是覆盖,相当于一个新的方法名。

    final修饰类

    final修饰的类不能被继承。

    (3) final、finally和finalize的区别是什么?

    1. final用于声明属性、方法和类,分别表示属性不可变、方法不可覆盖、类不可继承。
    2. finally作为异常处理的一部分,只能在try/catch语句中使用,finally附带一个语句块用来表示这个语句最终一定被执行,经常被用在需要释放资源的情况下。
    3. finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的finalize()方法。当垃圾回收器准备好释放对象占用空间时,首先会调用finalize()方法,并在下一次垃圾回收动作发生时真正回收对象占用的内存。

     

  • 相关阅读:
    JS数据结构第二篇---链表
    原来你是这样的---原型和原型链
    JS数据结构第一篇---算法之复杂度判断
    程序员的数学
    一位码农的转行
    如何看待程序媛们的职场焦虑和未来职业规划?
    如何快速融入团队并成为团队核心(九)
    如何快速融入团队并成为团队核心(八)
    使用ASP.NET Core构建RESTful API的技术指南
    如何快速融入团队并成为团队核心(七)
  • 原文地址:https://www.cnblogs.com/tingtin/p/15686218.html
Copyright © 2020-2023  润新知