`
周一Monday
  • 浏览: 346299 次
  • 来自: 北京
社区版块
存档分类
最新评论

final属性

阅读更多
对于一个final型的静态属性,如果该属性可以在编译时就得到属性值,则可认为该属性可被当成编译时常量。
当程序使用编译时常量时,系统会认为这事对类的被动使用,所以不会导致该类的初始化。
package org.monday.app.test;

class MyTest {
	static {
		System.out.println("静态初始化块..."); //不输出
	}
	static final String compileConstant = "Monday";
}

public class TestCompileConstant {

	public static void main(String[] args) {
		System.out.println(MyTest.compileConstant);
	}
}


--------------------------------------------------------------------------------------------
反之,乳沟final类型的静态属性的值不能在编译时得到,必须等到运行时才可以确定该属性的值,
如果通过该类来访问静态属性,则可以认为是主动访问使用该类,将会导致该类被初始化。
package org.monday.app.test;

class MyTest {
	static {
		System.out.println("静态初始化块..."); //输出
	}
	static final String compileConstant = System.currentTimeMillis() + "";
}

public class TestCompileConstant {

	public static void main(String[] args) {
		System.out.println(MyTest.compileConstant);
	}
}

 

分享到:
评论

相关推荐

    Java反射如何有效的修改final属性值详解

    本文将探讨如何通过Java反射有效地修改`final`属性值,并理解其中的限制。 首先,我们来看一个简单的例子,定义一个`Person`类,包含一个`final`属性`name`: ```java class Person { public final String name =...

    Static和Final修饰类属性变量及初始化

    1.static修饰一个属性字段,那么这个属性字段将成为类本身的资源,public修饰为共有的,可以在类的外部通过test.a来访问此属性;在类内部任何地方可以使用.如果被修饰为private私有,那么只能在类内部使用.

    lombok-1.16.16源码和文档

    注解用法   可以作用在类上和属性上,放在类上,...  @ToString, @EqualsAndHashCode, 所有属性的@Getter, 所有non-final属性的@Setter和@RequiredArgsConstructor的组合,通常情况下,我们使用这个注解就足够了。

    子类调用抽象父类.zip

    在子类中,除了重写父类的抽象方法外,子类还可以定义自己的属性,或者覆盖父类的非final属性。这允许子类根据自身的需求定制行为和状态。子类可以通过`super`关键字调用父类的构造函数,确保初始化时父类的属性得到...

    动物招领所源码

    final属性,final方法,final类 三.面向对象的思考方式 将世界看成一个个对象,对象之间可以分类(包),可以相互有继承。面向对象推荐面向接口进行编程,面向接口的核心思想是抽象(只依赖于接口不依赖于具体的实现)这样...

    Java面向对象程序设计PPT.ppt

    Java面向对象程序设计PPT 本资源是关于Java面向对象程序设计的PPT讲义,主要讲解Java...最终类是不能被继承的类, final 属性是不能被修改的属性,最终方法是不能被覆盖的方法,终结器是对象被销毁之前调用的方法。

    动力节点-SpringBoot3.pdf

    Record类是final的,不能继承,final属性不可修改,不能声明实例属性,能声明static成员。 1.2 Switch表达式 Switch表达式是JDK 19中引入的一种新的特性,用于简化Switch语句的编写。 1.3 Text Block Text Block...

    JPA 配置文件

    2. **构造函数与非final属性**:实体类需包含无参构造函数,且类本身及持久化属性不能声明为final,确保反射机制的正常使用。 3. **序列化能力**:若实体对象需在网络间传输(如通过Session bean的远程调用),则需...

    JAVA模拟面试题库.doc

    3. **String类的final属性**:`String`类被设计为`final`是为了性能和安全性。如果允许继承,频繁的字符串操作可能导致性能下降,同时也可能破坏字符串的不可变性,引入安全风险。 4. **final关键字**:当`final`...

    Java面向对象试题集.pdf

    对于一个final属性,只能赋值一次,不能再次被修改;对于一个final方法,不能被子类重写;对于一个final类,则不能有子类。 4. 方法重载与重写:在Java中,方法重载(Overloading)是指在同一个类中可以存在一个...

    Struts2 S2-029远程代码执行漏洞初探1

    allowStaticMethodAccess 已经变成 final 属性,excludedClasses 增加了禁用列表,excludedPackageNamePatterns 同样增加了禁用列表。但是,在我们的测试中,仍然能够找到可以修改的一些参数,例如 ...

    【05-面向对象(下)】

    仅为该类的属性提供getter方法,不要为该类的属性提供setter方法,因为普通方法无法修改final修饰的 属性  –4.如有必要,重写Object类中hashCode 和equals •缓存实例的不可变类:如果程序经常需要使用不可变类...

    java方面的基础试题

    同时,final属性保护了`String`的不变性,确保一旦创建,其值不能被修改,这对于多线程环境下的数据安全尤为重要。 #### 4. finalizers与C++ destructors的区别 Java的垃圾回收机制自动管理内存,通常无需手动清理...

    2021-2022计算机二级等级考试试题及答案No.4110.docx

    17. Java的final属性:final修饰的变量必须在声明时初始化,且只能初始化为常量,因此选项A是正确的整型常量初始化。 18. 需求分析阶段的文档:需求分析阶段主要产出软件需求规格说明书。 19. 硬盘与主存储器:...

    Lombok笔记文档_*************************

    如果注解在类级别,那么它们将为类中的所有非静态、非final属性生成这些方法。如果注解在属性级别,那么只会为该特定属性生成getter或setter。此外,可以使用`AccessLevel`指定访问级别,例如`@Getter(AccessLevel....

    2021-2022计算机二级等级考试试题及答案No.10800.docx

    12. **final属性**:在Java中,final变量必须在声明时初始化,并且不能更改其值,如`static final int i=100`。 13. **short型取值**:short型在Java中取值范围是-2^15到2^15-1,即-32,768到32,767。 14. **DOS...

    动物招领所系统

    final属性,final方法,final类 三.面向对象的思考方式 将世界看成一个个对象,对象之间可以分类(包),可以相互有继承。面向对象推荐面向接口进行编程,面向接口的核心思想是抽象(只依赖于接口不依赖于具体的实现)这样...

    2022年JAVA语言程序设计复习题及答案.pdf

    第16题,对的final属性定义是A) static final int i=100;,final关键字用于声明不可变的常量,静态修饰符使得i成为类级别的常量。 17. 类定义错误 第17题,错误的类定义是C) static class x implements y1,y2 {.....

Global site tag (gtag.js) - Google Analytics