1:
请选择适合下面方法的返回值类型:
ReturnType methodA(byte x, double y) {
return (long )  x / y * 2;
}
A. long
B. int
C. double
D. float
2:String str = null;                                              1       
if ((str != null) && (str.length() > 10))            2    
  { 
      System.out.println(“more than 10”);     
 } else if ((str != null) & (str.length() < 5))     5    
  {         
System.out.println(“less than 5”);     
 }     else { System.out.println(“end”); }       8  
哪些行将导致错误
A. 行1
B. 行2
C. 行5
D. 行8  

解决方案 »

  1.   

    1题我选A,返回的本来是double 的,但是强制转换成了long
    2选C,&和&&的区别!
      

  2.   

    1> C
         感觉应该是把 x 先转换为 long, 然后再进行运算的把...
    2> C
      

  3.   

    1:C double 64bit long 32bit 
    2:C 应该是&&
      

  4.   

    1.选C,return (long )  x / y * 2中只是把X的值转换成long类型,然而y是double,在运算过程中x,2的类型都要自动转换成double类型。最终返回类型便为double类型
    2.选C,(str != null) && (str.length() > 10)像C语言中的短路与一样,在执行中第一个表达式的值若是false,则第2个表达式将不执行。(str != null) & (str.length() < 5)中不管第一个表达式是true还是false,第2个表达式都要执行,这样便引发异常,str指向空值,调用str.length()便有异常产生。本人msn:[email protected],广交JAVA好友