当前位置 博文首页 > 吾爱你所爱:java变量及常量

    吾爱你所爱:java变量及常量

    作者:吾爱你所爱 时间:2021-06-29 19:01

    变量

    本质:就是代表一个”可操作的存储空间”,空间位置是确定的,但是里面放置什么值不确定。我们可通过变量名来访问“对应的存储空间”,从而操纵这个“存储空间”存储的值。

    Java变量是程序中最基本的存储单元。其要素包括变量名、变量类型和作用域。

    变量分类:
    局部变量在使用前必须先声明、初始化(赋初值)再使用。
    类变量:使用static定义。从属于类,生命周期伴随类始终,从类加载到卸载。如果不自行初始化,与成员变量相同会自动初始化成该类型的默认初始值。
     int  String  = 1;   // 这是对的   引用类型可以当变量名

    常量:

    • 在Java语言中,主要是利用关键字final来定义一个常量。常量一旦被初始化后不能再更改其值。

    •  只能被初始化一次

    •  书写:常量一般大写字母和下划线:MAX_VALUE

     

    final关键字的作用:

          1. 修饰变量: 被他修饰的变量不可改变。一旦赋了初值,就不能被重新赋值。
          2. 修饰方法:该方法不可被子类重写。但是可以被重载!
          3. 修饰类: 修饰的类不能被继承。比如:Math、String等。
    成员变量不一定要赋初始值。可以再外面声明,在构造方法中赋值,也不会错。
     
    面试题:

    使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?

            使用final关键字修饰一个变量时,是指引用变量不能变(作用在变量上),引用变量所指向的对象中的内容还是可以改变的

    例如,对于如下语句:

     finalStringBuffer a=newStringBuffer("immutable");

    执行如下语句将报告编译期错误:

    a=new StringBuffer("");

    但是,执行如下语句则可以通过编译:

    a.append("broken!");
     

    final, finally, finalize的区别?

    • final用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。内部类(这里的内部类指的是方法内部类或匿名内部类,不包含静态内部类和成员内部类 在Java8 中,被局部内部类引用的局部变量,默认添加final,所以不需要添加final关键词)要访问局部变量,局部变量必须定义成final类型。

    • finally是异常处理语句结构的一部分,表示总是执行。

    • finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。但是JVM不保证此方法总被调用。

    bk