zoukankan      html  css  js  c++  java
  • 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);  //可以改变对象中的属性值
  • 相关阅读:
    整理:深度学习 vs 机器学习 vs 模式识别
    机器学习部分国内牛人
    图像去模糊
    删除流氓软件McAfee
    ceshi
    linux系统加快大文件的写入速度
    修改cmd的字体为Consolas字体
    gdb的可视化工具安装
    微服务编译、启动jar命令指定配置文件
    pycharm中安装可以贴图片的Markdown插件
  • 原文地址:https://www.cnblogs.com/hfumin/p/10134799.html
Copyright © 2011-2022 走看看