一 "宏替换"简单应用
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。
相关推荐
final 变量保存在方法区,并且可以被函数代码直接替换,而不用等到执行时再决定具体是那个函数。 在 Java 中,变量的初始化顺序也很重要。变量的初始化次序优于任何方法,甚至在构造方法的前面。如果变量是原始类型...
同时,final变量的编译时替换也有助于提高代码执行速度。 6. **final和异常处理** 在异常处理中,final关键字也有其作用。当在catch块中捕获到异常后,可以声明一个final变量来存储该异常,确保在后续的finally块...
如果final变量在编译时其值就能确定(例如,直接初始化或静态常量的计算),编译器可能会在编译期间进行字面量替换,提高代码执行效率。如下例所示: ```java final String str2 = "helloWorld"; String str4 = str...
- **编译期优化**:编译器会在编译阶段对常量进行宏替换,提高运行效率。 **示例代码**: ```java public class Constant { public static final String SCHOOL_NAME = "传智教育"; } public class FinalDemo2 {...
可执行“宏替换”的final变量 •对一个final变量来说,不管它是类变量、实例变量,还是局部变量,只要该变量满足3个条件,这个final变量就 不再是一个变量,而是相当于一个直接量。 –使用final修饰...
Java虚拟机(JVM)的类加载机制是Java运行时环境的重要组成部分,它负责将类的字节码文件加载到内存中,进行一系列处理并使其成为可执行的Java类型。这个过程包括五个主要阶段:加载、验证、准备、解析和初始化。 1...
- **不可继承性**:当一个类被声明为`final`时,它将无法被继承。这种做法常见于Java的核心API中,比如`java.lang.String`类就是一个典型的例子。通过声明`String`类为`final`,开发人员可以避免子类覆盖其成员方法...
13. **并发进程与共享变量**:在没有同步机制的情况下,两个并发进程执行加减1操作,可能出现数据竞争,结果可能为0、1或2。但是,由于题目中未提及同步机制,所以结果可能不唯一,取决于执行顺序。 以上是对题目...
- 示例中的错误是尝试使用`private`修饰局部变量,正确的做法是去掉`private`或者将其替换为`final`。 2. **final关键字的作用** - `final`修饰的类不能被继承。 - `final`修饰的方法不能被重写。 - `final`和`...
final类不能被继承,final变量一旦赋值后不能改变,final方法不能被重写。 7. final, finally, finalize的区别: - final修饰变量或方法,表示不可修改或不可覆盖。 - finally是异常处理结构的一部分,无论是否...
- Final关键字与宏的区别:Final用于声明一个不可改变的变量,宏(通常指的是C/C++中的宏)是预处理器指令,用于文本替换。 三、Java三大特性: - 多态:多态是允许不同类的对象对同一消息做出响应的能力,是继承、...
全局静态变量在程序启动时初始化,局部静态变量在第一次执行到声明时初始化。 #### 52. const关键字 const用于声明常量,保证变量不可修改。对于指针而言,const可以修饰指针本身或指针指向的内容。 #### 53. 形参...
* 对于文本、声音、图像和 32 位和 64 位 Intel 可执行程序压缩的特殊优化算法 * 获得比类似工具更好的压缩率,使用'固实'压缩 * 身份校验(只有注册版本可用) * 自解压压缩文件和分卷压缩(SFX) * 对物理损伤的...
3. 配置环境变量:在使用JDK之前,需要配置JAVA_HOME、PATH和CLASSPATH环境变量,确保系统能够找到Java的相关可执行文件和类库。 4. javac命令和java命令:javac用于编译源代码,将.java文件转换为.class字节码文件...
类加载器是Java虚拟机的一部分,负责将字节码加载到内存中,并转换为可执行的类。Java中有多种类加载器,包括Bootstrap ClassLoader、Extension ClassLoader和App ClassLoader。实现自定义类加载器可以帮助解决特定...
当用户在命令行中输入一个命令时,系统会在PATH环境变量指定的路径中查找对应的可执行文件。 - **Classpath**:是Java特有的环境变量,用于告诉JVM在哪里可以找到类文件(.class文件)。通常,在编译和运行Java程序...
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和...