java中为final变量赋值的几种方式

前言

使用final修饰变量,很多人第一时间想到的就是不可变。然后以为变量必须得在声明的时候就为其赋初始值,其实不然,本文将详细讲解java中使用final修改的变量的赋值问题。

被final修饰的变量的几种赋值方式

1、被final修饰的变量有三种赋值方式。
2、被final static修饰的变量有两种赋值方式。

储备知识:在类的加载中,类的加载顺序我们应该都知道,静态代码块->构造代码块->构造方法

精华:

当类被加载进内存的时候,这个属性只是声明了一个变量,并没有给分配内存空间,只有当类在被实例化的时候才分配了内存空间,而这个时候又同时执行了构造方法, 所以属性被初始化了,也就符合了当它被分配内存空间的时候就需要实例化,以后不在改变的条件。

被final修饰的变量

1、在定义时直接赋值

public class Test {public final String str = "mark";
}

2、声明时不赋值,在构造方法中进行赋值

public class Test {public final String str;public Test() {this.str = "mark";}
}

3、声明时不赋值,在构造代码块中进行赋值

public class Test {public final String str;{this.str = "mark";}
}

当你发现一个类的变量被final修饰但没被赋值,那么可以判断出它肯定会在构造函数里被赋值。(因为倘若是set方法赋值,线程是不安全的,因为set方法可以被调用多次,而final变量只能被赋值一次)

被final static修饰的变量

1、在定义时直接赋值

public class Test {public static final String str = "mark";}

2、在静态代码块里面进行赋值

public class Test {public static final String str;static {str = "mark";}
}

final变量会经过jvm进行优化,所以平时使用过程中建议使用final来修饰变量。

java中为final变量赋值的几种方式相关推荐

  1. final变量存在哪 java_使用Java中的final变量需要注意的地方。

    对与java中的final变量,java编译器是进行了优化的.每个使用了final类型变量的地方都不会通过连接而进行访问.比如说Test类中使用了Data类中一个final的int数字fNumber= ...

  2. [转载] Java中的final变量、final方法和final类

    参考链接: Java中的final数组 | Final arrays 1.final变量 final关键字可用于变量声明,一旦该变量被设定,就不可以再改变该变量的值.通常,由final定义的变量为常量 ...

  3. java中的final变量

    final修饰的类,相当于别阉割了,不可以继承 final修饰的方法,不可以被子类重写,不过可以被重载 final修饰的成员变量,相当于一个不可变的常量,一定要在对象建立之前完成赋值,静态代码块或者构 ...

  4. 写文件 追加_总结Java中创建并写文件的5种方式

    在Java中有很多的方法可以创建文件写文件,你是否真的认真的总结过?下面小编就帮大家总结一下Java中创建文件的五种方法. 在java中有很多的方法可以创建文件写文件,你是否真的认真的总结过?下面笔者 ...

  5. fileoutputstream 文件不存在_总结Java中创建并写文件的5种方式

    在Java中有很多的方法可以创建文件写文件,你是否真的认真的总结过?下面小编就帮大家总结一下Java中创建文件的五种方法. 在java中有很多的方法可以创建文件写文件,你是否真的认真的总结过?下面笔者 ...

  6. java中 object创建对象_java创建对象的几种方式

    本文收集整理关于java创建对象的几种方式的相关议题,使用内容导航快速到达. 内容导航: Q1:[八喜小子]java中创建对象的方式有哪些? 创建对象那就是应该为object 类型的值吧 那是一个引用 ...

  7. 详解java中的final关键字

    概述 final 简介 final关键字可用于多个场景,且在不同场景具有不同的作用.首先,final是一个非访问修饰符,仅适用于变量,方法或类.下面是使用final的不同场景: 上面这张图可以概括成: ...

  8. java成员变量怎么赋值_给成员变量赋值的两种方法

    JAVA 跟C++ 差不多,给类里面的私有成员变量一般有两种方法: 一种是通过 成员函数 来赋值 一种是:通道构造函数来赋值 /* 我们一直在使用构造方法,但是,我们确没有定义构造方法,用的是哪里来的 ...

  9. java中写入文件_java中创建、写入文件的5种方式

    在java中有很多的方法可以创建文件写文件,你是否真的认真的总结过?下面笔者就帮大家总结一下java中创建文件的五种方法. Files.newBufferedWriter(Java 8) Files. ...

最新文章

  1. ssr pac_阴阳师新SSR千姬什么时候上线 ssr千姬活动上线时间一览
  2. 51nod 2006 飞行员配对(二分图最大匹配) 裸匈牙利算法 求二分图最大匹配题
  3. oracle存储过程隐式函数,Oracle存储过程,函数。
  4. 菜鸟要做架构师——java性能优化之for循环
  5. Spring框架学习笔记01:初探Spring——采用Spring配置文件管理Bean
  6. 微课|中学生可以这样学Python(2.1.2节):常量与变量
  7. LoadRunner录制第一个脚本Virtual User Generator
  8. Samba配置文件常用参数详解-OK
  9. oracle undo head,一次悬挂事务的处理思路
  10. css的checkbox样式,css自定义checkbox样式的方法总结
  11. 酷q点歌机器人软件_【酷q机器人下载】酷q机器人官方下载 V5.14.8A 最新版-七喜软件园...
  12. 多媒体计算机涉及的关键技术有什么,多媒体计算机的关键技术
  13. 解决ubuntu16.04无法打开网易云音乐
  14. Html导出到Word带页眉页脚
  15. 办公室的吊顶方式都有哪些呢?公室装修需要注意什么细节呢?
  16. 涨薪申请多次被拒,去年我带的实习生,今年工资比我还高1K,当天就裸辞走了.....
  17. 看你骨骼清奇,老夫决定赐你这份“2018软件测试发光秘籍”
  18. 什么教我们用计算机画画,家长如何教宝宝用电脑画画
  19. 通过emmc分区挂载根文件系统
  20. Zip压缩解压缩之C++实现。

热门文章

  1. c4.5算法python实现_算法:用Python实现—最优化算法
  2. scala 拆分字符串翻转_Scala程序分割字符串
  3. html 图片上放置按钮,用CSS在图片上再加一个小按钮
  4. js手机号中间四位_11位手机号码隐藏中间四位数,学会Substitute函数一键搞定!...
  5. android web通讯录,Android手机开发之通讯录
  6. dede plus ad js.php,织梦程序中plus文件作用介绍及安全设置
  7. list下界_下界理论
  8. __asm___错误:“”前应有'=',',',',','asm'或'_attribute_'
  9. 使用 Redis 如何实现延迟队列?
  10. SpringBoot 2.3.x 分层构建 Docker 镜像实践