java易错经典试例

java易错经典试例

ID:37710748

大小:30.50 KB

页数:8页

时间:2019-05-29

java易错经典试例_第1页
java易错经典试例_第2页
java易错经典试例_第3页
java易错经典试例_第4页
java易错经典试例_第5页
资源描述:

《java易错经典试例》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、一.switchpublicclassTestSwitch{publicstaticvoidmain(String[]args){inti=2;switch(i){case1:System.out.println(1);case2:System.out.println(2);case3:System.out.println(3);default:System.out.println(4);}}}结果:234分析:少了break;所以2以下的case和default都执行了一遍。二、Equals和

2、==运算符代码:Java代码publicstaticvoidtest(){Stringx="hello";Stringy="world";Stringz=newString("helloworld");Stringa="helloworld";System.out.println("x+yequalsz:"+(x+y).equals(z));System.out.println("a==z:"+(a==z));System.out.println("x==hello:"+(x=="hello")

3、);System.out.println("a==helloworld:"+(a=="hello"+"world"));System.out.println("a==x+y:"+(a==(x+y)));}结果:x+yequalsz:truea==z:falsex==hello:truea==helloworld:truea==x+y:false分析:1.String.equals()方法比较的是字符串的内容,所以(x+y).equals(z)为true.2.“==”比较的是String实例的引用

4、,很明显a和z并不是同一个String实例,所以(a==z)为false.3.根据常量池的知识,容易得知(x=="hello")和(a=="hello"+"world")都为true.(常量池指的是在编译期被确定并被保存在已编译的.class文件中的一些数据。它包含了关于方法、类、接口等,当然还有字符串常量的信息。也就是所谓的持久代。)4.那么(a==(x+y))为什么是false呢?这点暂点有点不大清楚。初步认为是x+y是引用相加,不能放入常量池。三、Override覆盖代码:Java代码pu

5、blicclassParent{publicstaticStringsay(){return"parentstaticsay";}publicStringsay2(){return"parentsay";}}publicclassChildextendsParent{publicstaticStringsay(){return"childstaticsay";}publicStringsay2(){return"childsay";}}publicclassOverrideTest{public

6、staticvoidmain(String[]args){Parentp=newChild();System.out.println(p.say());System.out.println(p.say2());}}结果:parentstaticsaychildsay分析:1.我们创建了一个Parent类的实例。变量p的数据类型为Parent类但是它仍旧是Child类的一个实例。因为Child类覆盖了Parent类的方法say2(),所以p.say2()调用为子类的方法。2.为什么p.say()却

7、是调用父类Parent的方法呢?因为Java中规定“实例方法被覆盖,静态方法被隐藏”.关于Override的一些规则:用子类的静态方法隐藏父类中同样标识的实例方法是不合法的,编译器将会报错;用子类的实例方法覆盖父类中同样标识的静态方法也是不合法的,编译器同样会报错;带关键字final的方法(静态和实例方法)都不能被覆盖;实例方法能够被覆盖;抽象方法必须在具体类中被覆盖。四、Java强类型代码:Java代码publicclassType{publicstaticvoidmain(String[]a

8、rgs){doublei=5.0;doublej=1/4+3/4+i+12/6.0+3/4+1/4;System.out.println(j);}}结果:7.0分析:Java是强类型的stronglytype,它支持8种基本数据类型。通过对这些基本数据类型用法的严格检查Java编译器能够及时地在开发过程中捕捉到许多简单细微的错误。基本数据类型的转换可以隐性地发生,所以转换时会有精度损失。由于1/4和3/4发生隐性类型转换,精度损失,不会生成0.25和0.75,所以有分号的数都为0。五、假构造函数

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。