博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
编译器常量与运行期常量的区别与数组创建本质分析
阅读量:3707 次
发布时间:2019-05-21

本文共 1742 字,大约阅读时间需要 5 分钟。

运行期常量编译器无法确定

/* * Copyright (c) 2019 maoyan.com * All rights reserved. * */import java.util.UUID;/** *  当一个常量的值并非编译器可以确定的时候,那么其值就不会放到调用类的常量池里 *  这个时候程序运行的时候,会导致主动使用这个常量所在的类,显然会导致这个类被初始化 * * @author wangkai * @created 2019/12/27 */public class MyTest2 {
public static void main(String[] args) {
System.out.println(MyParent2.str); }}class MyParent2 {
public static final String str= UUID.randomUUID().toString(); static {
System.out.println("MyPatents static code"); }}

数组创建本质

/* * Copyright (c) 2019 maoyan.com * All rights reserved. * *//** * * 对于数组实例来说,其类型是由JVM在运行期动态生成的,表示为[LMyParent3 这种形式,动态生成的类型,其父类型就是Object * 对于数组来说,JavaDoc经常将构成数组的元素为Component,实际上就是讲数组降低一个维度后的类型 * * 反编译(javap -c)后看助记符: * anewarray:表示创建一个引用类型的(如类、接口、数组)数组,并将其引用值压人栈顶 * newarray: 表示创建一个指定的原始类型(如int、float、char等)的数组,并将其引用值压入栈顶 * * @author wangkai * @created 2019/12/27 */public class MyTest3 {
public static void main(String[] args) {
//首次new对象会触发类的初始化 //MyParent3 myParent3=new MyParent3(); //MyParent3 myParent4=new MyParent3(); //数组会不会触发类的初始化 MyParent3[] myParents=new MyParent3[1]; System.out.println(myParents.getClass()); System.out.println(myParents.getClass().getSuperclass()); System.out.println("============"); MyParent3[][] myParent3s=new MyParent3[1][1]; System.out.println(myParent3s.getClass()); System.out.println(myParent3s.getClass().getSuperclass()); System.out.println("============"); int[] ints=new int[1]; System.out.println(ints.getClass()); System.out.println(ints.getClass().getSuperclass()); }}class MyParent3{
static {
System.out.println("static parent"); }}

转载地址:http://vobjn.baihongyu.com/

你可能感兴趣的文章
Java小案例(一) 用数组实现登录注册、增加职工并查看信息
查看>>
有趣的一行代码
查看>>
Java函数式编程和面向对象编程
查看>>
Java中List、Map、Set三个接口,存取元素时,各有什么特点?
查看>>
客户端与服务器(C/S架构与B/S架构)、AJax学习
查看>>
jsp中String path = request.getContextPath()的作用
查看>>
登录界面验证码的实现
查看>>
EL表达式
查看>>
Javaweb MVC设计模式、Modle发展史、项目分层和三层架构
查看>>
HTML表格和HTML表单
查看>>
JSP访问数据库,Session对象和九大内置对象
查看>>
Springboot分层图解
查看>>
并查集(Disjiont Set)
查看>>
Java操作HBase
查看>>
Linux编程考前测试题
查看>>
Openstack面试题和知识点总结
查看>>
C++ 实例化一个对象
查看>>
基于Spring boot+Vue的在线考试系统
查看>>
大数据学习路线
查看>>
前端学习路线
查看>>