• java学习笔记12(final ,static修饰符)


    final:

      意思是最终的,是一个修饰符,有时候一个功能类被开发好了,不想被子类重写就用final定义,

    用final修饰的最终数据成员:如果一个类的数据成员用final修饰符修饰,则这个数据成员就被限定为最终数据成员。最终数据成员可以在声明时进行初始化,也可以通过构造方法赋值,但不能在程序的其他部分赋值,他的值在整个执行过程中时不能改变的。

      用final修饰的类:final修饰的类,不能被其他类继承,但是可以继承其他类

      用final修饰的方法:不可以被子类重写;

      用final修饰成员变量时:1)final修饰的变量称为常量,只能被赋值一次,

     用final修饰符说明常量时,需要注意:1)需要说明常量的数据类型并指出敞亮的具体值。

                       2)若一个类有多个对象,而某个数据成员是常量,最好将此常量声明为static,即用static final两个修饰符来修饰他,这样做可以节省空间。

                    一次赋值终身不变,

                    如果用final修饰引用数据量类型时,那么保存变量的内存地址终身不变。

                  2)成员变量可以直接赋值,也可以通过构造方法赋值,所以用final修饰的成员变量可以选择一种赋值,但是一定要保证只能赋值一次。

    public class Person {
        //直接赋值(实际中建议这样方式):
        //final int age = 18;
        //构造方法赋值:
        final int age;
        public Person(int age){
            this.age = age;
        }
    }

    static:

      意思是静态的

      意义举例:

        一个学校里有一群学生对象,他们都有不同的姓名和年龄,但是他们的学校名都是相同的,

        创建学生对象的时候,成员变量中的学校名在每次新建对象的时候都会存入堆内存,但是每次存的数据都是相同的,造成了内存的浪费

        于是想到,能否将学校名提出来,放到某个地方,让多个对象共享,节省内存

        于是,出现了static关键字:

          静态多了一种调用方式

        被静态修饰的成员,可以被类的名字直接调用,例如:

    public class Student {
        String name;
         static String school;
    }
    public class Test1 {
        public static void main(String[] args) {
            Student s=new Student();
            s.name="张三";//创建对象调用变量赋值
            Student.school="AAA";//通过类名直接赋值
        }
    }

      静态的注意事项:1)静态不能调用非静态,原因:声明周期,静态先于非静态存在于内存中,无法调用不存在的;

              2)非静态可以调用静态;

              就好比现代人可以通过历史书了解古人,古人不能了解现代人一样,先后顺序不同,静态先于非静态存在

              3)静态修饰符应用场景:

                  本身是一个成员修饰符,可以修饰成员变量,可以修饰成员方法

                  多个事物之间是否存在共性数据?这里就可以将这个共性数据定义成静态

                  只要方法没有调用过非静态成员,则将其定义为静态

    在开发中,有时候需要定义静态常量,并且常量名要求全大写,空格用_代替

    固定格式:public static final String THIS_NAME = "XXXX"

  • 相关阅读:
    阿里的面试官都喜欢问哪些问题?
    Spring AOP中的JDK和CGLib动态代理哪个效率更高?
    招聘季!送你21套经典面试题!助你一臂之力!
    Spring AOP中的JDK和CGLib动态代理哪个效率更高?
    为什么需要分布式配置中心?
    线上出故障了!我慌得一匹!教大家如何应对在线故障!
    阿里巴巴的26款超神Java开源项目!
    完了!生产事故!几百万消息在消息队列里积压了几个小时!
    十大经典排序算法(动图演示)
    用户画像学习笔记
  • 原文地址:https://www.cnblogs.com/Zs-book1/p/10554569.html
Copyright © 2020-2023  润新知