• java-final关键字


    1、final修饰类、变量和方法的区别

     -  修饰类:类不能被继承。

     -  修饰变量:变量就成了常量,只能被赋值一次。

        *  常量命名规范:如果是一个单词,所有字母大写;如果是多个单词,每个单词都大写,中间用下划线隔开。

        *  final修饰变量叫做常量,一般会与public static共用。

     -  修饰方法:方法不能被子类重写。

    2、final修饰变量的初始化时机

     -  方法一:显示初始化

     -  方法二:在对象构造完毕前即可(通过构造函数进行初始化)

     -  以上两种方法不能同时都用,会报错。因为被final修饰的变量只能被赋值一次。

    1 class Demo {
    2     //final int num=10;  //这是第一种初始化的方法,显示初始化
    3     final int num;
    4 
    5     public Demo(){
    6         num=10;  //这是第二种初始化的方法,通过构造函数完成初始化
    7     }
    8 }

    3、final修饰基本类型和引用类型的区别

     -  final修饰基本类型:是值不能被改变。

        *  注意在方法声明上使用final修饰参数时,参数中被final修饰的变量可以在方法调用时重新赋值。

        *  其实这是因为,上一次调用的方法执行完就被弹栈了,所以每次调用方法传入参数的时候,都相当于是一个“新”的方法入栈。因此能够不报错,而且还能改变变量的值。

    1 public void method(final int x){
    2     System.out.println(x);
    3 }
    4 
    5 method(10);  //合法
    6 method(20);  //合法

     -  final修饰引用类型:是地址值不能被改变,对象中的属性可以改变。

    1 class Person {
    2     ...
    3 }
    4 
    5 final Person p=new Person("张三",23);
    6 //p=new Person("李四",24);  //这么写报错,因为被final修饰的对象所指向的地址值不能改变
    7 p.setName("李四");  //可以改变对象中的属性值
    8 p.setAge(24);  //可以改变对象中的属性值
  • 相关阅读:
    JS document.execCommand实现复制功能(带你出坑)
    jquery动态添加删除一行数据示例
    SpringBoot SpEL表达式注入漏洞-分析与复现
    Fastjson 1.2.22-24 反序列化漏洞分析
    udf提权原理详解
    ZZCMS v8.2 前台Insert注入+任意文件删除
    安恒杯 3月线上个人赛WriteUp
    SQLI LABS Stacked Part(38-53) WriteUp
    【转】Ubuntu16.04安装docker
    安装部署k8s-版本-1.13
  • 原文地址:https://www.cnblogs.com/hfumin/p/10134799.html
Copyright © 2020-2023  润新知