Head First Java读书笔记
2.类与对象
P_41
全局对象表示方法:加上public, static, final;
Java程序中如果类非常多时,可以包装成jar文件
3.primitive主数据类型和引用
P_51
数据类型:boolean, char(0 ~ 65535), byte(-128 ~ 127)
4.方法操作实例变量
P_78
Java中所传递的所有东西都是值,方法传入的参数是引用对象的变量时,引用对象的变量所携带的时远程控制而不是对象本身,实际传入的是远程控制的拷贝。
如果有混合不同类型的值要返回时,需要用到ArrayList
P_81
将实例变量标记为private,将getter和setter标记为public
P_84
实例变量永远有默认值,局部变量没有默认值
P_86
== 判断两个引用对象是否引用到堆上的同一个对象
equals() 判断两个对象是否真的相等
7.继承与多态
方法的覆盖 Override,不能更改存取权限
方法的重载 Overload, 不能只改变返回值类型,可以更改存取权限
8.接口与抽象类
* 接口 interface
* 1.解决多重继承的问题。把全部的方法设为抽象的
* 2.接口方法是抽象的必须以;结尾,没有内容
* 3.>当你把一个类当做多态类型运用时,相同的类型必定来自同一个继承树,
* 而且必须是该多态类型的子类
* >当你使用接口来作为多态类型时,对象可以来自任何地方。
* 该对象必须是来自有实现此接口的类
* 4.将对象的状态保存在文件中,实现Serializable
* 让对象的方法以单独的线程执行,实现Runnable
* ########### 1.抽象类 abstract
* 1.抽象的类代表此类必须要被extend过,抽象的方法代表此方法一定要被覆盖过
* 2.抽象的方法没有实体
* 3.不能在非抽象类中拥有抽象方法
* 4.在第一个继承树下的第一个具体类必须实现所有抽象的方法
* 5.如果声明出一个抽象的方法,就必须将类也标记为抽象的。不能在非抽象类中拥有抽象方法
* 6.抽象类可以带有抽象和非抽象的方法
* abstract Animal --> abstract Canine --> Dog
* Canine可以实现Animal的抽象方法,让Dog不必实现这个部分
*
* 抽象方法的意义:就算无法实现出方法的内容,但还是可以定义出一组子型共同的协议
*
* ########### 2.根类 Object
* 所有类均继承于Object, 不是抽象类
* 1.包含的方法:equals(), getClass(), hashCode(), toString()
* 2.Object实例的应用时机:线程的同步化
* 3.用途:1.作为多态让方法可以应付多种类型的机制。
* 2.提供Java在执行期对任何对象都有需要的方法的实现程序代码(让所有的类都继承到)。
* 有一部分的方法与线程有关。
*
* ########### 3.运算符 instanceof
* if (o instanceof Dog) {
* Dog d = (Dog)o;
* }
9.构造器与垃圾收集器
1.如果我们没有调用super(), 编译器会帮我们加上super()调用
2.每个构造函数可以选择调用this()或super(),必须是第一行语句
3.null是代表“空”的字节组合。
4.对null引用使用圆点运算符会在执行期遇到NullPointerException
10.数字与静态
1.使类不能被初始化:
> 使用abstract标记类
> 使用私有的构造函数
2.取得新对象的方法: new, 序列化(deserialization), Java Reflection API
3.静态的方法不能调用非静态的变量,方法
4.可以用 引用变量 代替 类名称 调用 静态方法。但不推荐
> Duck d = new Duck();
String[] s = { };
d.main(s);
5.静态变量
> 被同类的所有实例共享的变量
> 静态变量会在该类的 任何对象创建之前,任何静态方法执行之前 就完成初始化
6.public static final double PI = 3.14...
> public 可供各方读取
> static 不需要Math实例
> final 一个被标记为final的变量代表它一旦被初始化之后就不会改动
> 常熟变量的名称应该要都是大写字母
7.final 值一旦被赋值就不能更改。
的方法不能被覆盖。
的类不能被继承。
> 类被标记为final,方法就不用标记了
> 如果类只有静态的方法,可将构造函数标记为 private 的以避免初始化
8.Math random(), abs(), round(), min(,), max(,)
9.Boolean, Character, Byte, Short, Integer, Long, Float, Double
* 静态初始化程序 static initializer 是一段在加载类时会执行的程序代码,
* 它会在其他程序可以使用该类之前就执行,所以很适合放静态final变量的起始程序
P_299
格式化
P_301
常用:%d, %f, %x, %c
日期:%tc, %tr, %tA %tB %td
P_307
静态import
11.异常处理
P_343
MidiEvent
12.图形用户接口
* 以add开头的Listener且取用listener接口参数的方法,
* eg. addKeyListener(KeyListener k)
* 有这种 method 的 class 就是 KeyEvent 的来源
Graphics: drawImage, drawLine, drawPolygon, drawRect, drawOval, fillRect, fillRoundRect, setColor
Graphics2D: fill3DRect, draw3DRect, rotate, scale, sheer, transform, setRenderingHints
P_368
总结