public class IN0102 { public static void main(String[] args) { int a = 'a'; System.out.println(a);//97 float f = (float) 3.2; float sum =1.5f; int num=2; System.out.println((sum<2?1:num/sum));//1.0 System.out.println("------------------------------------------"); int x = 6; double d = 7.7; System.out.println((x>d) ? 8.0:9);//9.0 System.out.println("------------------------------------------"); System.out.println(false ? 3.0 : 1);//1.0 System.out.println( false ? 1 : 'a');//a System.out.println( false ? 1.0 : 'a');//97.0 System.out.println( true ? 98 : 'a');//b System.out.println( true ? 98.0 : 'a');//98.0 } }
JAVA条件表达式,注意以下几点:
1、如果冒号两边,是同一种类型,那么该条件表达式的值也是同一种类型。
2、如果其中一边的类型是byte、short或者char(暂且统称为X类型),而且另外一边是int常量(注意是常量),而且这个常量可以用X类型表示(也就是不溢出),那么,结果就是X类型。比如:
System.out.println( true ? 98 : 'a'); 输出: b
3、如果不符合上述情况的,则自动隐式转换,即小范围的转换成大范围的,低精度的转换成高精度的类型,最后的结果就是转换后的类型。比如:
System.out.println( false ? 1.0 : 'a'); 输出: 97.0
最好还是不要这样哈 一直在旁边提示dead code【无用代码】
关于for的执行顺序:
public class Delta { static boolean foo(char c) { System.out.print(c); return true; } public static void main( String[] argv ) { int i =0; for ( foo(‘A’); foo(‘B’)&&(i<2); foo(‘C’)){ i++ ; foo(‘D’); } } } //结果输出为:ABDCBDCB
break continue 加一个标号
public class IN0102 { public static void main(String[] args) { lab: for (int i = 0; i < 2; i++) { for (int j = 0; j < 10; j++) { if (j > 1) { continue lab; } System.out.println("continue"); } System.out.println("************"); } } }
continue
continue
continue
continue
public class IN0102 { public static void main(String[] args) { lab: for (int i = 0; i < 2; i++) { for (int j = 0; j < 10; j++) { if (j > 1) { break lab; } System.out.println("break"); } } } }
break
break