这个简单的程序有循环和跳转语句。我无法弄清楚它给出的输出。
public class Breaker2{
static String o = "";
public static void main(String[] args) {
z:
for(int x = 2; x < 7; x++) {
//System.out.println(o + " x is this : " + x);
if(x==3) continue;
if(x==5) break z;
o = o + x; //2nd question is about this piece of code
}
System.out.println(o);
}
}
我有以下疑惑,对不起,如果有人发现它们简单或愚蠢。
1.为什么我不能在跳转标签后立即放置一个Print语句(z :)
答案 0 :(得分:0)
一个。为什么我不能在跳转标签(z:)
之后立即放置Print语句因为标签语句不能被标记,所以只能标记块{}。
湾它如何能够从int转换为字符串并添加/联系x变量
它的超载操作&#39; +&#39;连接的 对象/基元当参数中的任何一个是字符串时,它会连接两侧。
℃。我看到输出24仅通过连接x的值来实现。这是正确的结论吗?
是的,结果是串联的 o + x
答案 1 :(得分:0)
为什么我不能在跳转标签后立即放置Print语句? (Z:)
定义标签(如Z:
)时,应为其定义范围({}
),标签语句的标签范围是立即包含的语句。请参阅JLS 14.7
如果你写这样的东西(请注意,我故意从sysout中删除x以避免再出现一个错误)
z:
System.out.println(o + " x is this : ");
for(int x = 2; x < 7; x++) {
if(x==3) continue;
if(x==5) break z;
o = o + x;
}
z的范围:仅变为sysout语句,而不是循环。为了使它工作,您可以使用{}这样的
来定义范围 z: {
System.out.println(o + " x is this : ");
for(int x = 2; x < 7; x++) {
if(x==3) continue;
if(x==5) break z;
o = o + x;
}
}
- 如何将int转换为字符串并添加/联系x变量
- 我看到输出24仅通过连接x的值来实现。这是正确的结论吗?
o
是String
,o + x
已分配回o
。因此+
操作的输出应为String
。因此,Java将x
转换为String
(通过执行x.toString()
)并连接o
和x
的内容以生成24