Thinking in Java学习心得体会与练习解答:第一至二章
本文上一次成稿是2014-07-09 20:35,暂不打算把这个系列做下去,先把以前的旧文发掉
最近入职,开始正式工作。公司主要开发语言是Java,之前并没有太多的使用经历,目前一方面参加公司的培训,另一方面是自学。本文记录了一些在自学《Thinking in Java》中的个人心得体会,并非书摘。为了强化学习效果,尽量完成每章的练习,并将解答附上。
(个人的学前基础:有一定的C使用经历、了解一般的面向对象概念和数据结构)
第一章
1.Iterator(迭代器、继承器、继续器)的作用在于,把对一个集合(泛指的数据容器,如set、vector)中对象的访问,与这个集合的实现细节进行隔离。这个做法将集合抽象成了一个序列,显然,是面向对象思想的体现。
2.单根结构是指,所有的类最终都是从一个基础类继承而来的。虽然牺牲了C++不使用这种方案所获得的“灵活性”,并产生了额外开销,但却是更“纯粹的面向对象编程”,并且比较省事。
3.垃圾收集器实际上是可以避免被使用的,比如在要求性能的场合中。
4.Exception与简单的函数返回错误值、设置标志位不同,是不能被忽略的,因而肯定能在某个地方被处理。Exception不属于OOP特性,它早于后者出现,尽管Java中Exception同样被抽象为对象。
5.开发前对系统进行描述的一个简单方法:让“名词”成为对象,让“动词”成为方法。
练习解答
本章没有练习。
第二章
1.C/C++与Java都可以使用大括号来确定变量作用域,但是Java不允许同一变量名的覆盖:
{ int x = 12; { int x = 96; /* illegal */ } }
2.static数据是可以直接通过类名访问的。
class StaticTest { Static int i = 47; } StaticTest st1 = new StaticTest(); StaticTest st2 = new StaticTest(); st1.i++; st2.i++; StaticTest.i++; //StaticTest.i = 50
练习解答
1.参照本章的第一个例子,创建一个“Hello,World”程序,在屏幕上简单地显示这句话。注意在自己的类里只需一个方法(“main”方法会在程序启动时执行)。记住要把它设为static 形式,并置入自变量列表——即使根本不会用到这个列表。用javac 编译这个程序,再用java 运行它。
分析:
一个简单的HelloWorld,注意文件编码问题,如果使用记事本编写,在Windows下使用默认的ANSI进行保存。
public class HelloWorld { public static void main(String[]agrs) { System.out.println("HelloWorld!"); } }
2.写一个程序,打印出从命令行获取的三个自变量。
分析:
代码如下。
public class HelloWorld { public static void main(String args[]) { System.out.println("Arg0:" + args[0] + " Arg1:" + args[1] + " Arg2:" + args[2]); } }
这里可以看出,Java的数组下标同样是从0开始的。
稍作改进可以将答案变得更通用,下面段代码可以输出任意合法个数的命令行参数。
public class HelloWorld { public static void main(String args[]) { for(int i=0;i<args.length;i++){ System.out.println(args[i]); } } }
3.找出Property.java 第二个版本的代码,这是一个简单的注释文档示例。请对文件执行javadoc,并在自己的Web 浏览器里观看结果。
分析:
代码原书里就有,这里不再赘述。javadoc执行的对象是*.java源码而不是编译后的*.class,这点需要注意。
另外有一个建议,不要将源码放在桌面上,否则javadoc生成的一系列html文件将会使你的桌面变得(更加)混乱。
4.以练习(1)的程序为基础,向其中加入注释文档。利用javadoc,将这个注释文档提取为一个HTML 文件,并用Web 浏览器观看。
第三章
1.逻辑操作符只能用于布尔型;
2.移位运算只能用于整数。
第五章
1.方法重载时,如果没有与传入参数类型直接对应的方法,可以把一个较小的参数类型提升到较大类型;反之则不行。
2.编写任意参数形式的构造器都会导致不自动创建默认构造器(无参数构造器)。
作者:五岳
出处:http://www.cnblogs.com/wuyuegb2312
对于标题未标注为“转载”的文章均为原创,其版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。