知识大杂烩
Posted jqbai
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大杂烩相关的知识,希望对你有一定的参考价值。
编译期常量与运行时常量的区别:
public static final String str = "hello world!"; // 编译期常量(值在编译期就能确定)
public static final String str1 = UUID.randomUUID().toString(); // 运行时常量(值在运行时才能确定)
编译期常量:在编译的阶段,这个常量就会被存入到调用这个常量的方法所在的类的常量池当中,本质上,调用类并没有直接引用到定义常量的类,因此并不会触发定义常量的类的初始 化(甚至于我们可以把定义常量的类删除掉,即删除.class文件)
例如编译期常量编译后如下图:常量hello word就存在于调用的类的常量池中了,而不是调用的时候再去定义常量的类中取值
运行时常量:在编译阶段其值不能确定,所以值不会放到调用类的常量池中,这时在程序运行时,会导致主动使用这个常量所在的类,显然会导致这个类初始化
数组创建本质:
对于数组实例来说,其类型是由JVM在运行期动态生成的,表示为[com.jqbai.Test(一元数组),[[com.jqbai.Test(二元数组)这种形式,动态生成的类型,其父类型就是Object,对于数组来说,JavaDoc经常将构成数组的元素为Component,实际上就是将数组降低一个维度后的类型
以上是关于知识大杂烩的主要内容,如果未能解决你的问题,请参考以下文章