使用label和jump语句查询Program

时间:2013-07-23 11:48:53

标签: java

这个简单的程序有循环和跳转语句。我无法弄清楚它给出的输出。

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 :)

  1. 如何将int转换为字符串并添加/联系x变量
  2. 我看到输出24仅通过连接x的值来实现。这是正确的结论吗?

2 个答案:

答案 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的值来实现。这是正确的结论吗?
  •   

oStringo + x已分配回o。因此+操作的输出应为String。因此,Java将x转换为String(通过执行x.toString())并连接ox的内容以生成24