欢迎来到天天文库
浏览记录
ID:8822977
大小:61.37 KB
页数:45页
时间:2018-04-08
《普开数据java学习心得之易犯错误》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、第1部分语法 程序员们总是被层出不穷的复杂问题所困扰假如我们最基本的开放工具——设计和编写程序的语言本身就是复杂的那么这个语言自己也会成为这些复杂问题的一部分而非它们的解决方案了 ——C.A.R.Hoare,TheEmperor’sOldClothes Java语言从C++派生而来并借鉴了ObjectiveCEiffelSmalltalkMesa和Lisp这些 语言的一些特性当使用其他语言的程序员转用Java来编程时他们很快就会发现Java的一些特性和自己以前所熟悉的语言非常相似因此这些程序员通常会认为这些特性在Java中和在以前所使用的语言中表
2、现一致其实完全不是这样这些想法在C++程序员中尤其普遍 这一部分重点强调了Java语言上经常会绊倒新手的陷阱和语言行为 本部分包括以下10个单元Item1什么时候被覆盖的方法并非真的被覆盖了本单元解释了调用子类的实例方法和静态方法之间的微妙差别 Item2String.equals()方法与==运算符的用法比较”本单元解释了这两种方法比较字符串的不同之处并指出了常量池是如何混淆这两种用法的。 第1部分语法 2t Item3Java是强类型语言本单元解释了基本类型的转换和提升的规则这对从C++ 转到Java的程序员尤为重要 Item4那是构造
3、函数吗本单元给出了一个经典的然而又非常简单的语言陷阱当我们培训新的Java学员时这个陷阱总是让学员们问出这样的问题编译器怎么会没发现它 Item5不能访问被覆盖的方法本单元又一次讨论了Java语言中的方法调用读完以后你将完全理解这个知识点 Item6避免落入隐藏变量成员的陷阱本单元讨论了这一最常见的陷阱所有Java语言的入门课程都应该提及这个问题并且和this引用一起讨论 Item7提前引用这一较短的单元向我们演示了什么是提前引用以及如何去避免它 Item8设计可继承的构造函数本单元是取自来之不易的实践经验对于每一个想开发可重用Java类的程序
4、员来说这个单元是必读的 Item9通过引用传递基本类型本单元对从C++转换到Java的程序员特别有价值它解答了在Java中传递引用的相关问题 Item10布尔运算符与短路运算符本单元解释了Java编程中另一个常见的陷阱使用逻辑运算符单元中也举了一个使用短路short-circuit运算符的清晰例子 Item1:什么时候被覆盖的方法并非真的被覆盖了好吧我承认本单元的标题确实带有一定的欺骗性虽然它的本意并非欺骗你而是 帮助你理解方法覆盖的概念想必你已经阅读了一两本这样的Java书籍它们在开头都指出了面向对象编程的3个主要概念封装继承和多态理解这3个
5、概念对于领会Java语言来 说至关重要而搞懂方法的覆盖又是理解继承概念的关键部分覆盖实例方法会在Item5谈到本单元介绍静态方法的覆盖如果你还不明白两者的区别那么Item1和Item5正适合你假如你已经急不可待地喊出不能覆盖静态方法那么你也许需要放松片刻再继续往下看不过在此之前先看看你是否能够猜出下面例子的 输出结果 Item1:什么时候被覆盖的方法并非真的被覆盖了 u3 这个例子摘自Java语言规范8.4.8.5节 01:classSuper 02:{ 03:staticStringgreeting() 04:{ 05:return
6、"Goodnight"; 06:} 07: 08:Stringname() 09:{ 10:return"Richard"; 11:} 12:} 01:classSubextendsSuper 02:{ 03:staticStringgreeting() 04:{ 05:return"Hello"; 06:} 07: 08:Stringname() 09:{ 10:return"Dick"; 11:} 12:} 01:classTest 02:{ 03:publicstaticvoidmain(String[
7、]args) 04:{ 05:Supers=newSub(); 06:System.out.println(s.greeting()+","+s.name()); 07:} 08:} 运行Test类的结果如下 Goodnight,Dick 要是你得出了同样的输出结果那么你或许对方法的覆盖有了较好的理解如果你的结果和答案不一致那就让我们一起找出原因我们先分析一下各个类Super类由方法greeting和name组成Sub类继承了Super类而且同样含有greeting和name方法Test类只有一个main方法 第1部分语法 4t
8、在Test类的第5行中我们创建了一个Sub类的实例在这里你必须明白的是虽然变量s的数据类型为S
此文档下载收益归作者所有