码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • JavaSE——final关键字与常量


    目录

    一、final简述

    1.1 final修饰的变量:

       1.1.1 修饰局部变量

       1.1.2 修饰引用:永远指向该对象

       1.1.3 修饰实例变量:必须手动赋值

    1.2 final修饰的方法:无法被子类覆盖与重写

    1.3 final修饰的类:无法被继承  

    二、常量


    一、final简述

    • java语言中的关键字
    • 表示最终的,不可变得
    • 可以修饰变量、方法、类等
    • final与abstract不能联合使用

    1.1 final修饰的变量:

       1.1.1 修饰局部变量

        下面这段代码是一个错误的例子 ,是不能二次赋值的,k=300出错

    1. final int k =200;
    2. k=300;

        但是下面这个例子是正确的

    1. final int k ;
    2. k=300;

     综上所述:一旦给final修饰的变量赋值,便不可修改,不可重新修改,

                       简言之,final修饰的变量只能赋一次值

       1.1.2 修饰引用:永远指向该对象

     该引用只能指向一个对象,并且它永远指向该对象,无法再指向其他对象,但是该对象内部的数据可以被修改,说到底只要对象的地址不变即可

     并且在该方法执行过程中,该引用指向该对象之后,该对象不会被垃圾回收器回收,直到当前方法结束才会释放空间

       下面这两段代码都是错误的

       简言之,final修饰的变量只能赋一次值

    1. final Person p = new Person(30);
    2. p= new Person(40);
    1. final Person p = new Person(30);
    2. p= new Person(30);

     如下图所示,但是指向不能改动,那 int age 能改成其他数么?答案是可以的!

       1.1.3 修饰实例变量:必须手动赋值

      万变不离其宗:final修饰的变量只能赋值一次

      但是当我们不主动赋值的话,系统会赋默认值,那这样后我们还能手动赋值么?

      其实并不是我们想想的那样,就比如下一段代码,我们会出现编译时异常
     

    1. public class User{
    2. final int age;
    3. }

      

      final修饰的实例变量,系统不管赋默认值,因final修饰的变量只能赋值一次(SUN公司设计)

      当我们使用final修饰实例变量的时候,我们需要手动赋予他一个默认值,否则会出现编译时异常

    1.2 final修饰的方法:无法被子类覆盖与重写

    使用方式:

    1. public final void doSome(){
    2. System.out.println("doSome.....");
    3. }

    1.3 final修饰的类:无法被继承  

    我们最熟悉的引用数据类型String类,就被final修饰,也就是说String不能被继承

    具体的解释在下面这篇博客当中

    JavaSE——String类详解(java.lang.String)_我爱布朗熊的博客-CSDN博客

    被修饰的类无法被继承,比如 final class A,public final String

    二、常量

    final修饰的实例变量一般添加static修饰,联合修饰的变量称为常量

    常量名建议全部大写,每个单词之间采用下划线连接

    常量和静态变量都存储在方法区,并且都是在类加载时初始化

    因为final修饰的实例变量一旦改变之后便不可更改,这样的话当我们new100个对象时,这个final修饰的实例变量全是一模一样的,这样很占用内存,不如与static共同修饰实例变量

    public  static final double PI =3.1415926;

    常量一般是公开的,因为公开之后你也无法修改

  • 相关阅读:
    VMware17 不可恢复错误mks解决方案
    荐书丨《大脑通信员》:如果爱情只是化学反应,那还能相信爱情吗?
    【Java 基础篇】Properties 结合集合类的使用详解
    汽车tbox车联网系统终端
    #422 编码人声:行业大会的幕后故事
    Spring注册Bean系列--方法5:@Import+ImportBeanDefinitionRegistrar
    聚观早报 | 《三体》将于2023年上映;李恩祐加入京东董事会
    Vue3.3指北(二)
    router传参接参(详细)
    视频评价工具AVQT介绍
  • 原文地址:https://blog.csdn.net/weixin_51351637/article/details/127734723
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号