文章目录
- 第1章 Java程序设计概述
- 一.Java特性
- 1.健壮性
- 2.可移植性
- 3.多线程
- 第4章 对象与类
- 一.面向对象程序设计概述
- 1.使用预定义类
- 2.对象构造
- 第8章 泛型程序设计
- 1.类型擦除
- 2.泛型与虚拟机
- 3.Java获取泛型信息的方法
- 第9章 集合
注:本文仅对核心内容进行整理,部分内容缺失请查看原著
第1章 Java程序设计概述
一.Java特性
1.健壮性
- Java投入大量精力进行早期的问题检查、运行时动态的检测,并消除了有出错的倾向.
- Java是绝对安全的,因为永远不会存取一个“坏的”指针,造成内存分配的错误,也不必防范内存泄漏.
2.可移植性
- 基本数据类型的大小以及相关算法都做了明确说明
- Java类库定义了可移植的接口
3.多线程
- 在不同的机器上,调用多线程的代码完全相同,Java把多线程的实现交给了底层的操作系统或线程库来完成
第4章 对象与类
一.面向对象程序设计概述
1.使用预定义类
- 一个对象变量并没有实际包含一个对象,而仅仅引用了一个对象
####2.方法参数- 一个方法不能修改一个基本数据类型的参数
- 一个方法可以额改变一个对象参数的状态
- 一个方法不能让对象参数引用另一个新的对象
图示如下:
1.Java总是采用按值调用,方法得到的是所有参数值的一个拷贝,方法不能修改传递给它的任何参数变量的内容
2.方法得到的是对象引用的拷贝,对象引用及其他的拷贝引用同一个对象。所以改变的是对象的属性
3.方法得到的是对象引用的拷贝,如果进行交换也是两个对象拷贝之间的交换
2.对象构造
重载解析
编译器通过用各个方法给出的参数类型与特定方法调用所使用的值类型进行匹配来挑选对应的方法.
方法签名
要完整的描述一个方法,需要指出方法名以及参数类型(方法签名),返回类型不是方法签名的一部分.
第8章 泛型程序设计
1.类型擦除
无论何时定义一个泛型类型, 都自动提供了一个相应的原始类型 ( raw type )。原始类型的名字就是删去类型参数后的泛型类型名。擦除( erased) 类型变M, 并替换为限定类型(无限定的变量用 Object。)
擦除类型后得到的就是原始的类型
模板代码膨账
Java 泛型与 C++ 模板有很大的区别。C++ 中每个模板的实例化产生不同的类型,这一现象称为“ 模板代码膨账”。Java 不存在这个问题的困扰
2.泛型与虚拟机
- 虚拟机中没有泛型,只有普通的类和方法。
- 所有的类型参数都用它们的限定类型替换。
- 桥方法被合成来保持多态。(因为泛型擦除产生两个方法,一个入参为原始入参,一个为Object,而Object的这个方法会强制类型转换调用原始入参的方法,保证了多态)
- 为保持类型安全性,必要时插人强制类型转换。
3.Java获取泛型信息的方法
- Class 类:描述具体类型。
- TypeVariable 接口:描述类型变量(如 T extends Comparable<? super T>)
- WildcardType 接口 :描述通配符 (如?super T)
- ParameterizedType 接口:描述泛型类或接口类型(如 Comparable<? super T>)
- GenericArrayType接口:描述泛型数组(如 T[ ])
第9章 集合