码迷,mamicode.com
首页 > 其他好文 > 详细

总结几段有迷惑性的代码

时间:2015-09-15 14:17:42      阅读:105      评论:0      收藏:0      [点我收藏+]

标签:

(1)看看下面代码输出什么。

public class _T {
  public static void main(String[] args) {
    boolean m = false;
    if(m = true) //m会被赋值为true,而且if判断会得到被赋的值true,即if成立
    System.out.println("False");
    else
    System.out.println("True");
  }
}

 

结果输出False,并且m被赋值为true.在Java中,比较是否相等用==,=是赋值符号。

(2)以下的结果是什么,正常运行?编译错误?空指针异常?

public class KingA {

  public static void haha(){
    System.out.println("haha");
  }
  public static void main(String[] args) {
    ((KingA)null).haha();
  }

}

结果:正常运行。null可以强制转换为任何类的类型,并调用其静态方法。但调用其非静态方法会抛空指针异常。

(3)以下代码输出结果是A.结果是:finally6       B.finally结果是:6   C.结果是:6finally

public class TestFinally {
  public static void main(String[] args){
  System.out.println("结果是:"+getSome());
}
  public static int getSome(){
    try{
      return 6;
    }

    finally{
      System.out.print("finally");
    }
  }
}

答案:B。先执行完getSome(),再执行System.out.println,而在getSome()中,先finally再return。

(4)以下输出什么,返回值是什么类型

public class Conditional{
  public static void main(String args[ ]){
    int x=5;
    System.out.println("value is "+ ((x>4) ? 9:9.9));
  }
}

答案 9.0,类型为double。因为在三目运算符中,double类型值9.9参与了运算,所以返回结果是double类型。

总结几段有迷惑性的代码

标签:

原文地址:http://www.cnblogs.com/Neymar/p/4809963.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!