读Java编程艺术之笔记(接口、带标签的break和continue)
接口:只规定静态常量,方法签名和返回类型,是抽象类完全抽象化的体现,本质是抽象。
public interface InterfaceName{ public static final varType CONSTENT_NAME = value; public abstract returnType methodName(argumentList); }
其中修饰变量的public static final,其中修饰方法的public abstract都可以省略不写。
Java不允许多重继承,即通过extends只能继承一个类,但Java允许“继承”多个接口,implements interface1, interface2, ...
带标签的break和continue,只能用于循环中,且在“嵌套”循环的情况下才有意义。
例:
jmp1: if(condition==true){ while(i<5){ i = a.doSomething(); if(i<0) break jmp1;//直接跳转到someNum=i } ... } someNum=i;
jmp2: switch(select){ case 'a': for(int x=10; x>0; x--){ statements if(condition == true) break jmp2;//直接跳转到obj.doSomething() } case 'b': statements ... } obj.doSomething();
continue用在循环中,不执行continue之后的语句跳入下一次迭代;带标签的continue用在嵌套循环中,跳入外循环的下一次迭代,例
//这段代码是打印出20以内的素数
int n=2; outerloop: while(n<=20){ for(int x=2; x<=n-1; x++){ if(n%x == 0){ n++; continue outerloop; } } system.out.print(n+"\t"); n++; }
需要注意的是,continue语句对while循环的循环变量不会像for循环那样自动更新,所以在上面代码中continue outerloop;之前加入对循环变量的更新,即,n++;