java - 不了解静态初始化程序的输出
问题描述
所以目前我正在为 Oracle 认证的助理 Java 做准备……我遇到了这个问题:以下代码的输出是什么
解决方案说 s 输出是: uu uccrr
我知道静态初始化程序只被调用一次,所以我不明白为什么要打印第三个 u
package com.company;
class Order {
static String result = "";
{
result += "c";
}
static {
result += "u";
}
{
result += "r";
}
}
public class Main {
public static void main(String[] args) {
System.out.print(Order.result + " ");
System.out.print(Order.result + " ");
new Order();
new Order();
System.out.print(Order.result + " ");
}
}
解决方案
它输出Order.result
3 次,这u
就是打印 3 次的原因。
订单类加载后,result
就是u。你System.out.print(Order.result + " ");
第一次输出它,你System.out.print(Order.result + " ");
第二次输出它。然后,您创建了 Order 类的 2 个实例,从而将“cr”附加了两次,以及您result
的情况如何ucrcr
,因此您输出ucrcr
了第三个您的位置。
您必须考虑到System.out.print
这里使用的事实。
推荐阅读
- c# - 在 MVC C# 中使用 ajax 导出 pdf 文件
- typescript - “EpicMiddleware”类型上不存在属性“运行”
, {}, 任何, 动作 >' - arm - SysTick 中断导致执行跳转到 STM32F030 上的 0x1fffxxxx
- algorithm - 确定数轴上内部范围的填充
- python - 使用 Python 将带撇号的名称插入数据库表
- c++ - way to separate non-class library into header and implementation
- amazon-web-services - AWS CLI docker:参数格式不正确
- mongodb - 在 MongoDB 中查询嵌套数组
- javascript - 如何加载 CSV 文件,然后将其转换为 javascript 数组(将表单的输入与外部 csv 文件进行比较以显示特定内容)
- javascript - 推入 mongodb 中的文档数组