随笔分类 -  Thiking In Java读书笔记

Thinking In Java 4th Edition Reading Notes
第15章 泛型
摘要:无论何时,只要你能做到,就尽量使用泛型方法。也就是说,如果使用泛型方法可以取代将整个类泛型化,那么就应该只使用泛型方法。对于一个static方法,无法访问泛型类的类型参数,所以如果static方法需要具有泛型能力,就必须使其成为泛型方法。要定义泛型方法只要将泛型参数列表置于返回值之前:public <T> void f(T x);就可以了。当使用泛型类时,必须在创建对象的时候指定类型参数的值,而是用泛型方法的时候,通常不必指明参数类型,因为编译器会为我们找出具体的类型。这称为:泛型推断(type argument inference)。在使用泛型方法的时候也可以显示的指明类型:Te 阅读全文

posted @ 2013-05-04 00:03 peter9606 阅读(198) 评论(0) 推荐(0)

第16章 数组
摘要:#placeholder# 阅读全文

posted @ 2013-05-04 00:02 peter9606 阅读(73) 评论(0) 推荐(0)

第14章 类型信息
摘要:14.2 Class对象Class类:java.lang.Class一个继承自java.lang.Object的模板类,RTTI的核心。每一个类都有一个Class类的对象,比如一个Teacher类,相应的就有一个Teacher的Class对象(程序启动前保存在Teacher.class文件中)。所有的类都是在对其第一次使用时,动态加载到JVM中的。Java程序在它开始运行前并非被完全加载,其各个部分是在必须时才加载的。比如对于一个Teacher类,类加载器首先检查Tearcher的Class对象是否已经加载。如果尚未加载,默认的类加载器就会根据类名查找.class文件(Tearcher.cla 阅读全文

posted @ 2013-05-03 23:58 peter9606 阅读(178) 评论(0) 推荐(0)

第13章 字符串
摘要:#本不想记录这一章的内容,但为了连贯性,列出不太熟悉的几个点#13.5 格式化输出printf和format的用法 1 import static java.lang.System.out; 2 public class Test { 3 public static void main(String args[]){ 4 out.printf("%s, %f, %d\n", "abc", 5.4, 3); 5 out.format("%s, %f, %d", "abc", 5.4, 3); 6 } 7 }/*Out 阅读全文

posted @ 2013-05-03 14:10 peter9606 阅读(154) 评论(0) 推荐(0)

第12章 通过异常处理错误
摘要:12.6 捕获所有异常12.6.1 栈轨迹java.lang.Throwable接口(java.lang.Excpetion实现了该接口)中的getStackTrace()方法返回栈轨迹的数组,我们来看一下它的使用。 1 import static java.lang.System.out; 2 public class WhoCalled { 3 static void f(){ 4 try { 5 throw new Exception(); 6 } 7 catch (Exception e) { 8 for(StackTraceElem... 阅读全文

posted @ 2013-05-03 12:55 peter9606 阅读(184) 评论(0) 推荐(0)

第11章 持有对象
摘要:#本章的题目翻译得太……叫容器不是更好么?#下面两幅图就是这一章节的完整阐述(来自http://en.wikipedia.org/wiki/Java_collections_framework)Collection ClassesMap Classes 阅读全文

posted @ 2013-05-03 00:37 peter9606 阅读(118) 评论(0) 推荐(0)

第10章 内部类
摘要:10.1 创建内部类此标题如若修改为:定义内部类并创建,我觉得更合适一些。定义内部类的方法:把类的定义置于外围类的里面创建内部类的方法:OuterClassName.InnerClassName innerClassInstance = outerClassInstance.new InnerClassName(Para list);Sample: 1 class OuterClass { 2 public class Inner1 { 3 public Inner1(String name) { 4 this.name = name; 5 ... 阅读全文

posted @ 2013-05-02 16:00 peter9606 阅读(180) 评论(0) 推荐(0)

第9章 接口
摘要:9.1 抽象类和抽象方法抽象类可以不含有任何抽象方法;含有抽象方法的类必须被声明为abstract。9.2 接口接口中可以含有域,隐含为static final(实际上也是Public的)。来看一下含有abstract class和interaface的继承体系的加载和初始化顺序。以下几条在书中没有讲到,中Java 6下试出来的:Interface中不能含有初始化块,标准的编译错误提示:The interface xxx cannot define an initinalizer.Interface中不能定义构造器。(因为interface中没有构造器和初始化块,所以interface中的域不 阅读全文

posted @ 2013-05-02 15:45 peter9606 阅读(115) 评论(0) 推荐(0)

第8章 多态
摘要:8.2 转机Java中除了static, final & private(private归为final一类)方法,都是动态绑定。域同样是静态绑定。8.3 构造器和多态8.3.3 构造器内部的多态方法的行为在C++中,应该避免在构造函数中调用virtual方法,因为这样的结果可能不是你想要的。同样在Java中,应当避免在构造器中调用static, final或者private以外的方法。如果在基类的构造器中调用了被导出类覆盖的方法,实际上是动态绑定在起作用,也就是基类中调用了导出类的行为。 1 import static java.lang.System.out; 2 class Bas 阅读全文

posted @ 2013-05-02 14:47 peter9606 阅读(138) 评论(0) 推荐(0)

第7章 复用类
摘要:7.2 继承语法如果基类没有默认构造函数,那么必须在Derive类的构造函数中显示调用Base类的带参构造函数。 1 import static java.lang.System.out; 2 class Base { 3 Base(String name){ 4 out.println("Base constructor"); 5 } 6 } 7 8 public class Derive extends Base { 9 Derive(){10 super("test"); /* If comment out this line, result a 阅读全文

posted @ 2013-05-02 13:44 peter9606 阅读(140) 评论(0) 推荐(0)

第6章 访问权限控制
摘要:6.1 包:库单元package语句必须是文件中的第一行非注释程序代码。6.2 Java访问权限修饰词类成员访问修饰符:Public,任何人都可以访问Protected,子类可访问+包访问权限(默认)包访问权限,同包中的类可访问Private,任何人都不可以访问6.4 类的访问权限public:public类的类名必须与编译单元的文件名相同(大小写敏感)包访问权限:相同目录下的所有不具有明确package声明的文件,都被视作是该目录下默认包的一部分。 阅读全文

posted @ 2013-05-02 11:29 peter9606 阅读(109) 评论(0) 推荐(0)

第5章 初始化与清理
摘要:5.2 方法重载Java的方法重载与C++一样,不能以返回值作为两个函数重载的区别。另外,后面的章节中会有介绍,Java存在一个叫做协变返回类型的:子类中的一个覆盖方法可以返回基类被覆盖方法返回值的子类。5.4 this关键字Java中this关键字同样代表正在调用方法的对象本身,是编译器为每个非static方法传递的第一个参数(隐藏传递,程序员感觉不到,与Java,C++这种隐藏传递相对的是,Python要求明确方法的第一个参数为self,也就是对象自己的引用。)Java中的this有一个更重要的用途,在构造函数里调用重载的其他构造函数。C++中,一个构造函数不可以调用另外一个构造函数,因为 阅读全文

posted @ 2013-05-02 09:59 peter9606 阅读(191) 评论(0) 推荐(0)

第4章 控制执行流程
摘要:4.4 Foreach可以用于实现了java.lang.Iterable接口的对象。4.7 带标号的break和continue为了方便跳出多层循环而设计,需要与VB和C中的GOTO语句区别的是,标号需要直接写在需要跳出的循环开始的前一行。View Code 1 import static java.lang.System.out; 2 public class HelloWorld{ 3 4 public static void main(String []args){ 5 for(int i = 0; i < 5; ++i) { 6 inn... 阅读全文

posted @ 2013-05-01 14:45 peter9606 阅读(163) 评论(0) 推荐(0)

第3章 操作符
摘要:3.4 赋值基本类型的赋值与C++/C一样View Code 1 import static java.lang.System.out; 2 public class HelloWorld{ 3 4 public static void main(String []args){ 5 int a = 3; 6 int b = a; 7 b = 5; 8 out.println("a : " + a + ", b : " + b); 9 }10 } 11 /*Output : 12 a : 3,... 阅读全文

posted @ 2013-05-01 12:54 peter9606 阅读(131) 评论(0) 推荐(0)

第2章 一切都是对象
摘要:2.1 用引用操纵对象相对于C++中操纵对象的方式(指针,引用和对象名),Java中操纵对象的方式较为单一,只存在引用操纵。但这里需要注意,Java中的引用与C++中的引用有着很大的不同,Java里的引用实质上由指针实现,可以看作是一个C++中的Smart Pointer。先来回忆一下C++中的引用与指针的区别 :引用必须总是指向一个对象,因此必须总是赋初始值。(A reference must always refer to an object, and therefore, must always be initlized.)指针并没有如上的限制,而且一个指针所指向的对象可以被重新指派,而 阅读全文

posted @ 2013-04-30 01:07 peter9606 阅读(333) 评论(0) 推荐(0)

导航