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.编写任意参数形式的构造器都会导致不自动创建默认构造器(无参数构造器)。

posted @ 2018-11-26 01:09  五岳  阅读(271)  评论(0编辑  收藏  举报
回到顶部