码迷,mamicode.com
首页 > 其他好文 > 详细

知识大杂烩

时间:2018-12-29 11:19:44      阅读:215      评论:0      收藏:0      [点我收藏+]

标签:不能   动态   维度   doc   stat   tostring   常量池   知识   image   

编译期常量与运行时常量的区别:

  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,实际上就是将数组降低一个维度后的类型 

  

 

 

       

知识大杂烩

标签:不能   动态   维度   doc   stat   tostring   常量池   知识   image   

原文地址:https://www.cnblogs.com/jqbai/p/10193621.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!