这段时间(真实)如何运作

时间:2014-04-14 14:57:45

标签: java while-loop

package interf;

public class NumberPrinter {

  public interface Printer {
    public void print (int idx);
  }

  public static void print (Printer p) {
    for (int i = 0; i < 4; i++) {
        p.print(i);
    }
  }

  public static void main(String[] args) {
    while(true){
      System.out.println("hi-1");

      print(new Printer() {

        @Override
        public void print(int idx) {
          while(true){
              System.out.println(idx);
          }
        }
      });
    }
  }
}

为什么它只打印0 0 0 为什么它不打印System.out.println(&#34; hi-1&#34;);

2 个答案:

答案 0 :(得分:2)

代码(固定为make system System时)打印“hi-1”然后打印很多0(永远),因为你的内部打印方法中有一个while(true)循环

外部while(true)循环永远不会被执行多次,因为你的代码在这个内循环中被“卡住”,所以你永远不会多次看到“hi-1”。

答案 1 :(得分:0)

注释掉第二个while循环并将system.out.println的第一个字母大写,你将获得无限循环:

hi-1
0
1
2
3
hi-1
0
1
2
3
...

package interf;

public class NumberPrinter {

  public interface Printer {
    public void print (int idx);
  }

  public static void print (Printer p) {
    for (int i = 0; i < 4; i++) {
        p.print(i);
    }
  }

  public static void main(String[] args) {
    while(true){
      System.out.println("hi-1");

      print(new Printer() {

        @Override
        public void print(int idx) {
          //while(true){
              System.out.println(idx);
          //}
        }
      });
    }
  }
}