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;);
答案 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);
//}
}
});
}
}
}