第一题
答案为B
解析
z=0时候,执行++x > 2,不成立,&&后面就不执行了,此时 x=1,y=0,k=0;
z=1时候,执行++x > 2,还不成立 ,&&后面就不执行了,此时 x=2,y=0,k=0;
z=2时候, 执行++x > 2,成立,继续执行 ++y > 2, 不成立 , &&后面就不执行了, 此时 x=3,y=1,k=0;
z=3时候,执行++x > 2,成立,继续执行++y > 2,不成立 , &&后面就不执行了, 此时 x=4,y=2,k=0;
z=4 时候,执行++x > 2,成立,继续执行 ++y > 2, 成立 , 继续执行k++>2 ,不成立,此时仍没有进入for循环的语句中, 但此时 x=5,y=3,k=1;
z=5时候,不满足条件了,整个循环结束,所以最好打印时候: x=5,y=3,k=1;
总结
我本以为该题考查了前加加还是后加加,然后我意识到无论前加加还是后加加,都不影响结果,该题主要考查了短路与短路的作用
第二题
答案为C
解析
第三题
该题选择D
解析
三元操作符类型的转换规则:
-
若两个操作数不可转换,则不做转换,返回值为Object类型
-
若两个操作数都是基本数据类型的值,则返回值类型为范围较大者
-
三元操作符如果遇到可以转换为数字的类型,会做自动类型提升,当都提升为基本数据类型时,然后将精度低的一边提升精度,然后根据问好左边的表达式的结果时true还是false,返回对应的值,此时返回值类型时Object
基本数据类型的范围
byte<short<int<long<float<double
总结
该题考察了三元运算符在填写不同类型的数时,返回值是什么以及执行的整个过程,先干了什么然后干了什么