`
cakin24
  • 浏览: 1396629 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

可执行"宏替换"的final变量

    博客分类:
  • java
阅读更多

一 "宏替换"简单应用

1 代码示例

public class FinalLocalTest
{
	public static void main(String[] args)
	{
		// 定义一个普通局部变量
		final int a = 5;
		System.out.println(a);
	}
}

2 运行结果

5

3 结果分析

可执行"宏替换"的final变量的3个基本条件

  • 使用final修饰符修饰。
  • 在定义该final变量时指定初始值。
  • 该初始值在编译时就被确定下来。

二 基本的算术表达式或字符串中"宏替换"应用

1 代码示例

public class FinalReplaceTest
{
	public static void main(String[] args)
	{
		// 下面定义了4个final“宏变量”
		final int a = 5 + 7;
		final double b = 1.7 / 3;
		final String str = "疯狂" + "坦克";
		final String book = "卓越员工高效工作法:" + 99.0;
		// 下面的book2变量的值因为调用了方法,所以无法在编译时被确定下来
		final String book2 = "卓越员工高效工作法:" + String.valueOf(99.0);  //①
		System.out.println(book == "卓越员工高效工作法:99.0");
		System.out.println(book2 == "卓越员工高效工作法:99.0");
	}
}

2 运行结果

true

false

 

三 "字符串"连接应用与"宏替换"

1 代码示例

public class StringJoinTest
{
	public static void main(String[] args)
	{
		String s1 = "疯狂英语";
		// s2变量引用的字符串可以编译时就确定出来,
		// 因此s2直接引用常量池中已有的"疯狂英语"字符串
		String s2 = "疯狂" + "英语";
		System.out.println(s1 == s2);
		// 定义2个字符串直接量
		String str1 = "疯狂";     //①
		String str2 = "英语";     //②
		// 将str1和str2进行连接运算
		String s3 = str1 + str2;
		System.out.println(s1 == s3);
	}
}

2 运行结果

true

false

3 结果分析

如果给str1和str2加上final修饰,最后一行将会输出true。

1
1
分享到:
评论

相关推荐

    java final变量详解

    final 变量保存在方法区,并且可以被函数代码直接替换,而不用等到执行时再决定具体是那个函数。 在 Java 中,变量的初始化顺序也很重要。变量的初始化次序优于任何方法,甚至在构造方法的前面。如果变量是原始类型...

    Java中final的深度剖析

    同时,final变量的编译时替换也有助于提高代码执行速度。 6. **final和异常处理** 在异常处理中,final关键字也有其作用。当在catch块中捕获到异常后,可以声明一个final变量来存储该异常,确保在后续的finally块...

    Java基础教程之final关键字浅析

    如果final变量在编译时其值就能确定(例如,直接初始化或静态常量的计算),编译器可能会在编译期间进行字面量替换,提高代码执行效率。如下例所示: ```java final String str2 = "helloWorld"; String str4 = str...

    2024面向对象高级多态接口HM

    - **编译期优化**:编译器会在编译阶段对常量进行宏替换,提高运行效率。 **示例代码**: ```java public class Constant { public static final String SCHOOL_NAME = "传智教育"; } public class FinalDemo2 {...

    【05-面向对象(下)】

    可执行“宏替换”的final变量 •对一个final变量来说,不管它是类变量、实例变量,还是局部变量,只要该变量满足3个条件,这个final变量就 不再是一个变量,而是相当于一个直接量。  –使用final修饰...

    JVM类加载机制1

    Java虚拟机(JVM)的类加载机制是Java运行时环境的重要组成部分,它负责将类的字节码文件加载到内存中,进行一系列处理并使其成为可执行的Java类型。这个过程包括五个主要阶段:加载、验证、准备、解析和初始化。 1...

    java编程中影响性能的一些点

    - **不可继承性**:当一个类被声明为`final`时,它将无法被继承。这种做法常见于Java的核心API中,比如`java.lang.String`类就是一个典型的例子。通过声明`String`类为`final`,开发人员可以避免子类覆盖其成员方法...

    学堂在线final1

    13. **并发进程与共享变量**:在没有同步机制的情况下,两个并发进程执行加减1操作,可能出现数据竞争,结果可能为0、1或2。但是,由于题目中未提及同步机制,所以结果可能不唯一,取决于执行顺序。 以上是对题目...

    第3章习题答案.docx

    - 示例中的错误是尝试使用`private`修饰局部变量,正确的做法是去掉`private`或者将其替换为`final`。 2. **final关键字的作用** - `final`修饰的类不能被继承。 - `final`修饰的方法不能被重写。 - `final`和`...

    Java面试题.docx

    final类不能被继承,final变量一旦赋值后不能改变,final方法不能被重写。 7. final, finally, finalize的区别: - final修饰变量或方法,表示不可修改或不可覆盖。 - finally是异常处理结构的一部分,无论是否...

    Java经典问题答案(带书签)

    - Final关键字与宏的区别:Final用于声明一个不可改变的变量,宏(通常指的是C/C++中的宏)是预处理器指令,用于文本替换。 三、Java三大特性: - 多态:多态是允许不同类的对象对同一消息做出响应的能力,是继承、...

    Cpp面经200问.pdf

    全局静态变量在程序启动时初始化,局部静态变量在第一次执行到声明时初始化。 #### 52. const关键字 const用于声明常量,保证变量不可修改。对于指针而言,const可以修饰指针本身或指针指向的内容。 #### 53. 形参...

    WinRAR_4.0.exe

    * 对于文本、声音、图像和 32 位和 64 位 Intel 可执行程序压缩的特殊优化算法 * 获得比类似工具更好的压缩率,使用'固实'压缩 * 身份校验(只有注册版本可用) * 自解压压缩文件和分卷压缩(SFX) * 对物理损伤的...

    java基础知识总结带目录版.pdf

    3. 配置环境变量:在使用JDK之前,需要配置JAVA_HOME、PATH和CLASSPATH环境变量,确保系统能够找到Java的相关可执行文件和类库。 4. javac命令和java命令:javac用于编译源代码,将.java文件转换为.class字节码文件...

    百度2019年最新面试题库

    类加载器是Java虚拟机的一部分,负责将字节码加载到内存中,并转换为可执行的类。Java中有多种类加载器,包括Bootstrap ClassLoader、Extension ClassLoader和App ClassLoader。实现自定义类加载器可以帮助解决特定...

    java面试问题集锦

    当用户在命令行中输入一个命令时,系统会在PATH环境变量指定的路径中查找对应的可执行文件。 - **Classpath**:是Java特有的环境变量,用于告诉JVM在哪里可以找到类文件(.class文件)。通常,在编译和运行Java程序...

    突破程序员基本功的16课.part2

    2.4.2 执行"宏替换"的变量 2.4.3 final方法不能被重写 2.4.4 内部类中的局部变量 2.5 小结 第3课 常见Java集合的实现细节 3.1 Set和Map 3.1.1 Set和Map的关系 3.1.2 HashMap和HashSet 3.1.3 TreeMap和...

Global site tag (gtag.js) - Google Analytics