比如C中可以这么写:
1>5 ? printf("1") : printf("5");
可以正常编译运行。
但java好像不允许1>5这个写法,必须用变量来代替,比如:
int a = 1, b = 5; a>b 要这么写,
就算这样写了后,Eclipse会在b下面打红线说不能把int转换为boolean,
也就是说编译器没有把(a>b)这个当boolean,而是把b当成了boolean?
如果用括号括起来(a>b)?System.out.printf("1") : System.out.printf("5");
编译器又报错说让我把括号去掉。
那java的三元运算符是不是并不能完全的当成一个if else来用?好像没法让他进行输出操作?
System.out.println( 1 > 5 ? "a": "b");
java和c#是强类型的编程语言,不像c和c++,明明是要求写表达式的地方,还可以写个printf进去
三元运算符里面的每一项必须是个表达式,你可以写个函数,但是函数的返回值必须类型一致,否则需要强制转换,你写个无返回值的函数在里面那是肯定错误的
System.out.println( 1 > 5 ? "1": "5");
不就是这样吗
String val = (a > b) ? "1" : "5";
System.out.println(val);