看看这两道题的运行结果,原因是?
2)以下程序的运行结果为:
1. public class Conditional {
2. public static void main(String args [] ) {
3. int x = 4;
4. System.out.println( "value is " +((x >4) ? 99.99 : 9));
5. }
6. }
A. 输出:value is 99.99
B. 输出: value is 9
C. 输出: value is 9.0
D. 在第4 行出现编译错误
4) 以下程序的输出结果为:
public class test {
public static void main(String args[]) {
int x=1,y=1,z=1;
if (x--==1&&y++==1||z++==1)
System.out.println("x="+x+",y="+y+",z="+z);
}
}
A. x=0,y=2,z=1
B. x=1,y=2,z=1
C. x=0,y=1,z=1
D. x=0,y=2,z=2

解决方案 »

  1.   

    ...最讨厌作业题了 明明可以写的很容易理解的 非要搞的看个半天的那种编程新手论坛 http://freshcoder.5d6d.com/
      

  2.   

    第一题 我开始选的B  结果运行完了是C   我猜测是因为? :运算法是一个三元运算符  会返回一个最高的类型  在这里因为有了99.99 所以要返回一个double型的   9就自动向上转型为double型的9.0第二题 你就记住了 a++  是没有改变a的值  在下一次运算的时候a的值变成了a+1  然后就是||是个短路操作符   选A
      

  3.   

    THE FIRST ONE IS :C
    THE OTHER ONE IS :A
      

  4.   

    第一道题中,(条件)?m :n ;  是三元运算,既然是运算就不难理解把 int 型的 9 转换为符点型的9.0了。
    第二道题中, 关键在 && 和 || 两个关系运算符的特点, 它们分别是“短路与”、“短路或”。“&&”时表示“&&”之前的表达式结果为true时仍要比较“&&”后面的表达式,只有都为true时,整个条件才为true。 而“||”而不一样,如果“||”之前的表达式结果为true时,就不会再计算“||”后在表达式而视整个条件为true,如果“||”前的的表达结果为false,才会继续计算“||”后面的表达式。所以上面题中x--和y++都会被执行,而z++则不会被执行,所以结果为x=0,y=2,z=1 
      

  5.   

    第一个题本来是选b的....后来在网上找了一下资料.....摘取一下
    如果第二个和第三个操作数具有相同的类型,那么它就是条件表达式的类型。换句话说,你可以通过绕过混合类型的计算来避免大麻烦。 
    如果一个操作数的类型是T,T表示byte、short或char,而另一个操作数是一个int类型的常量表达式,它的值是可以用类型T表示的,那么条件表达式的类型就是T。 
    否则,将对操作数类型运用二进制数字提升,而条件表达式的类型就是第二个和第三个操作数被提升之后的类
    来源是http://hi.baidu.com/lumber/blog/item/16504fcd742d8d550eb34536.html
    看一下就清楚了至于第二个,是一种优化的算法x--==1&&y++==1||z++==1这一行了,当执行完x--==1&&y++==1之后,结果就是true了,后面的不执行.....
    如果要让他执行好像是是用x--==1&y++==1|z++==1,这样的算法就是没有经过优化的.....
    我也刚学....借鉴一下,哈哈
      

  6.   

    第一个题目的答案是:C. 输出: value is 9.0 
    原因:首先(x >4) ? 99.99 : 9 ,根据不同基本数据类型的数值同时进行运算时的转换原则,9的类型将自动转换为double型,即9.0 ;
          然后,(x >4) 为false,所以输出9.0第二个题目的答案是:A. x=0,y=2,z=1 
    原因:首先(x--==1&&y++==1||z++==1) ,因为&&的优先级高于||,所以括号里面的真假判断是这样的:如果||前面的x--==1&&y++==1这个部分为真,
           那么后面的z++==1不管是真是假,都将不会被执行;
          其次是x--==1,这个对基础知识的要求比较高,其实x--==1这句首先是判断x==1,然后再x--,后面的y++==1以及z++==1也是同样的道理,
          因此,(x--==1&&y++==1||z++==1)是(true&&true||true) ,
         所以,根据上面所说的,z++==1其中z++将不会被执行 ,
          综上,x=0,y=2,z=1