1条回答 默认 最新
关注
输出为:
v1.c=0 v2.c=0 v1.c=2 v2.c=2 ct.c=1 v1.c=1 v2.c=1 v1.c=2 v2.c=2
相关知识:
- 类加载到 JVM 时静态代码块先执行,成员变量后赋值。
打印结果解释如下:
- Demo 类中的 main 方法执行需要先将 Demo 加载到 JVM,此时先执行 Demo 类中的静态成员变量和静态代码块。
- Demo 类静态成员变量使用了 Value 类,因此需要先把 Value 类加载到 JVM,加载时执行 Value 类的静态代码块,执行后 Value 类的静态变量 c 的值为 0。
- 然后执行 Demo 类中的静态代码块
- 第一次调用
prt
方法打印的静态变量 c 的值为 0,结果为v1.c=0 v2.c=0
。 - 然后调用 Value 有参构造方法,将静态变量 c 的值设置为 2。
- 第二次调用
prt
方法打印的静态变量 c 的值为 2,结果为v1.c=2 v2.c=2
。
- 第一次调用
- Demo 静态代码块执行完毕后开始执行 main 方法。
- main 方法先实例化 Demo 类,实例化时为成员变量 v 赋值,调用 Value 有参构造方法,将 Value 类中的静态变量 c 赋值为 1。
- main 方法第一次调用
prt
打印的静态变量 c 的值为 1,结果为ct.c=1
。 - main 方法第二次调用
prt
打印的静态变量 c 的值为 1,结果为v1.c=1 v2.c=1
。 - main 方法调用 Value 类的 inc 方法将静态变量 c 的值加 1,此时 c 的值为 2。
- main 方法第三次调用
prt
打印的静态变量 c 的值为 2,结果为v1.c=2 v2.c=2
。
这个问题截图代码较为分散,并且解释起来比较费劲,因此大家回答的热情不是很高,敲了这么多字,如果给题主带来了帮助,就给个采纳吧。。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 找代写python里的jango设计在线书店
- ¥15 请教如何关于Msg文件解析
- ¥200 sqlite3数据库设置用户名和密码
- ¥15 AutoDL无法使用docker install吗?
- ¥15 cups交叉编译后移植到tina sdk的t113,只需要实现usb驱动打印机,打印pdf文件
- ¥30 关于#wireshark#的问题:需要网络应用流量数据集需要做长度序列的实验,需要与应用产生的会话的数据包的长度,如视频类或者聊天类软件
- ¥15 根据上述描述表示泥浆密度沿着管路的长度方向在不断变化,如何来表示泥浆密度随管路的变化(标签-matlab|关键词-流计算)
- ¥21 matlab可以把图像数据转换为小波分析吗
- ¥60 基于香农编码的图像压缩算法实现
- ¥15 matlabGUI绘制一个函数与其导数的图像