成员变量和局部变量初始化:
成员变量若不显式初始化java会默认对其初始化:0,'\u0000',false,null...
局部变量必须显式初始化后才能使用,否则有编译期错误
关于方法overload:
[list]每一个重载的方法都必须有一个独一无二的的参数类型列表
形参顺序的不同也会导致参数列表的不同
返回值不能区分重载方法.(若有
涉及基本数据类型的重载:
关于this:
当对象调用一个方法时,编译器在幕后把所操作对象的引用作为第一个参数传递给这个方法.(若有
所以:this关键字只能在非静态的方法中使用,表示"调用方法的那个对象的引用".
此外,如果为this添加了参数列表,将产生对符合此参数列表的某个构造函数的明确调用,这让你可以在一个构造函数中调用另一个构造函数.
类的初始化顺序:
继承情况下:
静态方法或变量用类名直接调用,也可以用new出来的对象调用;
无论是用类名调用还是用对象调用静态方法,都不可访问非静态成员变量和方法(TIJ中的注释中写道:使用对象调用静态方法可以访问非静态成员变量和方法.但实验后发现不行)如下代码所示
垃圾回收器的几种工作机制:
可变参数列表:
在某些场合你的方法的参数个数或类型不确定,你可以使用"可变参数列表"
在SE5以前,你可以使用Object[] args来表示不确定的参数,但是在调用的时候你也需要将你的参数组合成一个Object数组,书中示例代码如下:
在SE5中可以用Object... args来表示可变参数列表(Object可以置换为其他的引用类型或基本类型),同时在调用这个方法的时候用不需要再显式地将你的参数组合成一个数组,自动包装机制(AutoBoxing)在需要的时候也会自动的执行.书中示例代码如下:
类似于printArray(Object... args)这样声明参数的方法接受空参数列表调用,例如printArray();所以当一系列的重载方法中包含拥有可变参数列表的方法时,很容易发生Method ambiguous的错误,所以在设计方法时要多加小心,经常的做法是在参数列表中增加一个非可变参数.
Eunmerated Types:
enum是SE5中新引入的关键字,用于声明枚举类型.枚举类型中的值一般使用大写表示,因为他们都是静态常量.
一般情况下你可以把一个enum类型当成一个类来对待.它有几个有用的方法:
成员变量若不显式初始化java会默认对其初始化:0,'\u0000',false,null...
局部变量必须显式初始化后才能使用,否则有编译期错误
关于方法overload:
[list]
int f(){ return 1; } void f(){};当你在程序中只调用f()时,编译器不能确定你调用的是哪个方法),所以:方法名和参数表的组合(不包含返回值)在一起唯一地标识某个方法.[/list]
涉及基本数据类型的重载:
- 如果传入的基本数据参数的类型"小于"重载方法所声明的形参,实际参数类型就会被提升.(若有方法void f(double d){};当调用f(5)时,在方法执行过程中int类型的5被自动提升为double.
- 如果传入的基本数据参数的类型"大于"重载方法所声明的形参,必须在调用时候做类型转换,否则编译报错(若有方法void f(int i){};double d = 5d;若调用f(d)编译报错,必须做显示类型转换f((int)d);因为这样可能导致信息丢失)
关于this:
当对象调用一个方法时,编译器在幕后把所操作对象的引用作为第一个参数传递给这个方法.(若有
Banana a = new Banana();// Banana有个方法void f(int i){}则a.f(5)在内部表示为Banana.f(a,5),如果你希望在方法内部获得对当前对象的引用,你可以使用this来表示.
所以:this关键字只能在非静态的方法中使用,表示"调用方法的那个对象的引用".
此外,如果为this添加了参数列表,将产生对符合此参数列表的某个构造函数的明确调用,这让你可以在一个构造函数中调用另一个构造函数.
类的初始化顺序:
- 静态变量
- 静态初始化块
- 变量
- 初始化块
- 构造器
继承情况下:
- 父类--静态变量
- 父类--静态初始化块
- 子类--静态变量
- 子类--静态初始化块
- 父类--变量
- 父类--初始化块
- 父类--构造器
- 子类--变量
- 子类--初始化块
- 子类--构造器
静态方法或变量用类名直接调用,也可以用new出来的对象调用;
无论是用类名调用还是用对象调用静态方法,都不可访问非静态成员变量和方法(TIJ中的注释中写道:使用对象调用静态方法可以访问非静态成员变量和方法.但实验后发现不行)如下代码所示
public class Test { int i = 0; static int test1(int a) { return a+=2; }; int test2() { return 0; }; public static void main (String args[]) { Test test = new Test(); test.test1(i);//编译错误:Cannot make a static reference to the non-static field i test.test1(test2());//编译错误:Cannot make a static reference to the non-static method test2() from the type Test } }
垃圾回收器的几种工作机制:
- Reference counting
- Mark-and-sweep
- Stop-and-copy
可变参数列表:
在某些场合你的方法的参数个数或类型不确定,你可以使用"可变参数列表"
在SE5以前,你可以使用Object[] args来表示不确定的参数,但是在调用的时候你也需要将你的参数组合成一个Object数组,书中示例代码如下:
// Using array syntax to create variable argument lists. class A {} public class VarArgs { static void printArray(Object[] args) { for(Object obj : args) System.out.print(obj + " "); System.out.println(); } public static void main(String[] args) { printArray(new Object[]{ new Integer(47), new Float(3.14), new Double(11.11) }); printArray(new Object[]{"one", "two", "three" }); printArray(new Object[]{new A(), new A(), new A()}); } } /* Output: (Sample) 47 3.14 11.11 one two three A@1a46e30 A@3e25a5 A@19821f *///:~
在SE5中可以用Object... args来表示可变参数列表(Object可以置换为其他的引用类型或基本类型),同时在调用这个方法的时候用不需要再显式地将你的参数组合成一个数组,自动包装机制(AutoBoxing)在需要的时候也会自动的执行.书中示例代码如下:
// Using array syntax to create variable argument lists. public class NewVarArgs { static void printArray(Object... args) { for(Object obj : args) System.out.print(obj + " "); System.out.println(); } public static void main(String[] args) { // Can take individual elements: printArray(new Integer(47), new Float(3.14), new Double(11.11)); printArray(47, 3.14F, 11.11); printArray("one", "two", "three"); printArray(new A(), new A(), new A()); // Or an array: printArray((Object[])new Integer[]{ 1, 2, 3, 4 }); printArray(); // Empty list is OK } } /* Output: (75% match) 47 3.14 11.11 47 3.14 11.11 one two three A@1bab50a A@c3c749 A@150bd4d 1 2 3 4 *///:~
类似于printArray(Object... args)这样声明参数的方法接受空参数列表调用,例如printArray();所以当一系列的重载方法中包含拥有可变参数列表的方法时,很容易发生Method ambiguous的错误,所以在设计方法时要多加小心,经常的做法是在参数列表中增加一个非可变参数.
Eunmerated Types:
enum是SE5中新引入的关键字,用于声明枚举类型.枚举类型中的值一般使用大写表示,因为他们都是静态常量.
public enum Spiciness { NOT, MILD, MEDIUM, HOT, FLAMING } ///:~
一般情况下你可以把一个enum类型当成一个类来对待.它有几个有用的方法:
- static values():按声明的顺序返回一个包含enum常量的数组
- ordinal():返回enum实例所包含的常量在enum声明中的位置.
- toString();返回enum实例所包含的常量的名字.
发表评论
-
UseCase驱动的过程
2008-10-26 15:26 0本章讨论理解问题和建立问题模型的方法,RUP推荐的方法就是Us ... -
以架构为中心的过程
2008-10-23 09:40 0模型的重要性 RUP有很大 ... -
动态结构:迭代开发
2008-10-22 09:15 0为什么要迭代: 两个常阻碍软件项目成功的错误假设: 错误假设 ... -
RUP导论:动态结构:迭代开发
2008-10-04 20:46 0本章描述RUP的生命周期结构,即整个开发过程是如何进行的. 迭 ... -
RUP导论:最佳软件开发实践
2008-10-03 22:51 0本章讨论最佳软件开发实践,并对RUP做了大体介绍. 软件 ... -
Array
2008-09-28 00:37 0数字与容器类的不同之处: 效率,类型,和装载原生数据类型的能力 ... -
Thinking in Java 笔记:Reflection
2008-09-21 21:11 1129反射的概念是由Smith在1982年首次提出的,主要是指程 ... -
Thinking in Java 笔记:RTTI
2008-09-21 21:09 1823RTTI即run-time type identifica ... -
Generics
2008-09-21 21:05 0泛型是Java SE 1.5的新特性,泛型的本质是参数化类 ... -
Thinking in Java 笔记:Inner Class
2008-09-15 14:08 1095将一个类的定义放在另一个类的定义内部,这就是内部类 当你生成 ... -
String
2008-09-12 10:55 0String 类被声明为final 所以它不能被继承 一个St ... -
Thinking in Java 笔记:Operators
2008-09-05 14:42 1418数学没学好,补充点数学 ... -
Thinking in Java 笔记:Everything is an Object
2008-09-05 14:41 1477无聊了,当当买了本原版的 Thinking in java 4 ...
相关推荐
Thinking in C: Foundations for Java & C++ by Chuck Allison produced by Bruce Eckel Chapter 1: Introduction and Getting Started40 MinutesStart Lecture Chapter 2: Fundamental Data Types41 ...
根据提供的文件信息,以下是对文件《Thinking in Java 4th Edition Annotated Solutions Guide》中所包含知识点的详细解释: 首先,文件标题《Thinking in Java 4th Edition Annotated Solutions Guide》指出了这是...
《Thinking in Java》第四版由布鲁斯·埃克尔(Bruce Eckel)撰写,他是MindView公司的总裁。这本书被广泛认为是学习Java编程语言的经典教材之一。从读者的反馈来看,《Thinking in Java》不仅覆盖了Java的核心概念...
### Thinking in Java 自学笔记——第二章 一切皆对象 #### 重要概念解析 ##### 2.1 用引用操纵对象 在Java中,一切都被视为对象,这意味着无论是字符串、数字还是其他数据类型都可以被视为对象来进行操作。当...
### Thinking in Java 读书笔记知识点总结 #### 一、万事万物皆对象 1. **对象存储位置** - **寄存器**:程序无法直接控制。 - **栈(Stack)**:存储基本类型数据和对象引用,但对象本身不在此处。 - **堆(Heap)...
读书笔记:Thinking in Java (Java 编程思想)
研讨课 Hands-on Java研讨课CD Thinking in Objects研讨课 Thinking in Enterprise Java Thinking in Patterns(with Java) Thinking in Patterns研讨课 设计咨询与复审 附录B 资源 软件 编辑器与IDE 书籍 分析与设计...
《Thinking in Java》是一本深度解析Java编程语言的经典著作,其深入浅出的讲解和丰富的实例使得读者能够全面理解Java的精髓。以下是对书中部分关键知识点的总结: 1. **Java 泛型**:泛型是Java SE 5.0引入的重要...
《Thinking in Java》是Bruce Eckel的经典之作,第四版(TIJ4)更是Java程序员必读的书籍之一。这本书深入浅出地介绍了Java语言的核心概念和技术,包括面向对象编程、集合框架、多线程、网络编程等众多主题。源码是...
《Thinking in Java》是Bruce Eckel的经典之作,它深入浅出地介绍了Java语言的核心概念和技术。这本书的练习题是学习Java的重要组成部分,因为它们能够帮助读者巩固理论知识并提升实践能力。以下是对"Thinking in ...
Thinking in Java 自学笔记——第一章 对象导论 本章节总结了面向对象程序设计(Object-oriented Programming, OOP)的基本概念和原则,以帮助读者更好地理解 Java 编程语言。以下是对标题、描述、标签和部分内容的...
《Thinking in Java》是Bruce Eckel的经典之作,第四版涵盖了Java编程语言的广泛主题,适合初学者和有经验的程序员。这本书深入浅出地讲解了Java的核心概念和技术,旨在帮助读者建立坚实的编程基础,并理解面向对象...
《王者归来之Thinking in Java读书笔记》是对Bruce Eckel的经典之作《Thinking in Java》第四版的深度学习与总结。这本书是Java程序员的必备参考书,它深入浅出地阐述了Java语言的核心概念和技术,旨在帮助读者理解...
《Thinking in Java》是Bruce Eckel的经典之作,被誉为学习Java编程的权威指南。该书以其深入浅出的方式,详尽地介绍了Java语言的核心概念和技术。第三版是此书的一个重要里程碑,它涵盖了Java语言的诸多关键特性,...
Thinking In Java-Java 编程思想(中英文版 第四版) Thinking In Java-Java 编程思想(中英文版 第四版)
《Thinking in Java》是一本备受推崇的Java编程教材,由Bruce Eckel撰写,被誉为Java学习者的必读之作。这本书深入浅出地介绍了Java语言的核心概念和技术,覆盖了从基础到高级的主题,对于有一定Java基础的读者来说...
《Thinking in Java》是Bruce Eckel的经典之作,第四版更是被广大Java开发者视为学习和进阶的重要参考书籍。这本书深入浅出地介绍了Java语言的核心概念和技术,包括面向对象编程、集合框架、多线程、网络编程、GUI...
在众多关于Java的学习材料中,《Thinking in Java》第二版以其独特的视角和方法论成为了一本备受推崇的教科书。 本书由Bruce Eckel所著,作为一本权威性的Java编程教程,它不仅仅是向读者介绍Java语言的语法和基础...
《Thinking in Java》是Bruce Eckel的经典编程教材,它深入浅出地介绍了Java语言的核心概念和技术。这本书以其详尽的解释、丰富的示例和实践性强的习题深受程序员喜爱。"Thinking in Java 习题答案"是配套的解答集,...