📄 1_java学习笔记.txt
字号:
2) 调用超类构造器。
14. 继承(Polymorphism)
答:1) 一个对象变量可以指向多种实际类型的现象;
2) 它是一个运行时申明。
15. instanceof操作符
答:1) Boolean类型;
2) 判断某个实例是否属于指定类/接口
16. casting
答:1) 把一种类型强制转换成另一种类型的过程被称为类型转换(casting);
2) 进行转换的惟一原因在于有时在暂时忽视对象实际类型之后,需要使用实际对象的全部功能;
3) 要养成在类型转换之前先判断它是否能成功的编程习惯(使用instanceof);
4) 应尽量少用类型转换和instanceof操作符。
17. 方法重写(overridden)
答:1) 名称、参数列表和返回类型相同;
2) modifier不能越来越窄;
3) 异常抛出不能越变越宽;
2004-8-23 星期一 晴
高级语言特性(上)
1. 静态字段和方法
答:1) 静态字段:每个类中只存在一个这样的字段,反之,类的每一对象都有自己一份对这个实例字段的拷贝;
2) 静态方法:能不通过对象直接访问; 不能访问非静态变量; 不能被非静态方法重写;
2. 初始化块
答:1) 只被执行一次;
2) 初始化块首先被运行,然后才是构造器的主体部分被执行。
3. 调用构造器后详细的执行过程
答:1) 初始化所有数据字段为默认值(0、0.0、false或null);
2) 按照在类声明中出现的次序依次执行所有字段初始化语句和初始化块;
3) 如果构造器的第一行代码调用了另一个构造器,则执行被调用的构造器主体;
4) 执行构造器主体。
4. final关键字
答:1) final类不能被继承;
2) final方法不能被改写;
3) final变量不能被改变;
5. 抽象类
答:1) 方法没有方法体,必须被声明为抽象方法; 例:abstract int getAge();
2) 一个类中包含有抽象方法必须声明为抽象类;
3) 抽象类不能实例化,但仍可以创建类的对象变量;
4) 能声明方法或类类型为抽象;
注:1) 抽象方法如同方法占位符,这些方法一定要在子类中实现;
2) 即使不含抽象方法,类也可被声明为抽象类。
6. 接口
答:1) 接口是抽象类的另外一种形式(没有实例变量的抽象类);
2) 在一个接口中所有方法都是抽象方法;
3) 接口中所有变量都必须被定义为final static;
4) 接口可以继承多个接口。
注:1) 接口中的方法自动被置为public, 因此,在接口中声明方法并不需要提供public关键字。但在实现接口时,必须把方法声明为public。
2004-8-24 星期二 晴
高级语言特性(中)
7. 访问控制
答:修饰符 内部类 相同包 子类 其它
public √ √ √ √
protected √ √ √
default √ √
private √
8. “==”操作符和equals()方法
答:1) “==”操作符确定两个引用是否指向相同对象;
2) equals()方法判断两个对象是否指向同一块内存区域(这种测试并没有太大用处,如果想测试对象是否相等,就需要覆盖equals方法,进行更有意义的比较);
9. toString()方法
答:1) 和equals()方法一样,toString()是Object类另外一个重要的方法;
2) 它返回一个代表该对象值的字符串。几乎每个类都会覆盖该方法,以便打印该对象当前状态的表示。
3) 无论何时对象同字符串相连接,那么就可以使用"+"操作符,这时Java编译器会自动调用toString方法获得对象的字符串表示。例:
Point p = new Point(10,20);
String message = "The current position is " + p;//自动调用p.toString()
10. 内部类
答:内部类是定义在其他类内部的类:
1) 内部类对象能够访问创建它的对象的实现-包括那些私有数据;
2) 内部类能够隐藏起来,不为同一包中的其他类所见;
3) 匿名内部类可以方便地定义运行时回调;
4) 所有内部类在编写事件程序时用起来很方便。
11. 静态内部类
答:1) 内部类的最简单形式;
2) 不能和外部类同名;
3) 被编译成一个独立的类文件;
4) 只能访问外部类的静态方法、静态实例变量(包括私有类型);
12. 实例内部类
答:1) 定义在类内部,没有使用static修饰符;
2) 像实例变量;
3) 能访问外部类的所有实例变量;
4) 在一个外部类里创建一个实例内部类实例:this.new Innerclass();
5) 在一个外部类外创建一个实例内部类实例:(new OuterClass()).new Innerclass();
6) 在一个内部类里访问一个实例内部类:Outerclass.this.member;
13. 局部内部类
答:1) 定义在方法里;
2) 最少的一种内部类;
3) 和局部变量类似, 不能被定义为public,protected,private和static;
4) 只能访问final型局部变量。
2004-8-25 星期三 晴
高级语言特性(下)
14. 匿名内部类
答:1) 没有类名;
2) 没有class关键字;
3) 没有继承和声明;
4) 没有构造函数;
15. 封装类
答:原始基本类型 包装类
boolean Boolean
byte Byte
short Short
char Character
int Integer
long Long
float Float
double Double
16. 集合接口类层次
答:
Collection
↑
|ˉˉˉˉˉˉ|
Set List Map
↑ ↑
| |
SortedSet SortedMap
1) Set: 集合类中不允许有重复对象;
2) SortedSet: 和Set接口同,但元素按升序排列;
3) List: 元素加载和移出时按照有顺序,可以保存重复对象。
4) Map: 存储了唯一关键字辨识的对象,不允许有重复关键字。
5) SortedMap: 和Map类同,但对象按他们关键字的升序排列。
17. 包括具体类在内的集合类层次
答:
Collection
↑
|ˉˉˉˉˉˉ|
HashSet LinkedList Hashtable
(Set) Vector, ArrayList Hashmap
(List) (Map)
↑ ↑
| |
TreeSet TreeMap
(SortedSet) (SortedMap)
18. 五个最常用的集合类之间的区别和联系
答:1) ArrayList: 元素单个,非同步,效率高,多用于查询
2) Vector: 元素单个,同步,线程安全,多用于查询
3) LinkedList:元素单个,多用于插入和删除
4) HashMap: 元素成对,非同步,元素可为空
5) HashTable: 元素成对,同步,元素不可为空
19. 反射
答:1) 确定一个对象的类;
2) 获得一个类的修改符、变量、方法、构器函数、和父类的相类信息;
3) 找出哪些常量和方法是从一个接口声明的;
4) 创建一个在运行时才知道名称的类;
5) 调用对象的方法;
2004-8-26 星期四 晴
异常
1. 异常的基本概念
答:1) 异常事件改变程序流程;
2) 当一个异常事件发生时,一个异常被抛出;
3) 响应处理异常的代码被称为exception handler;
4) exception handler捕获异常;
5) 异常处理能让你集中精力在一个地方解决问题,然后将处理错误的代码分开来放在另一个地方。
2. 捕获异常
答:1) 设置一个try/catch的代码块;
2) 如果try块内的任何代码抛出了由catch子句指定的异常,则
a. 程序跳过try块中的其他代码;
b. 程序执行catch从句中的处理器代码。
3) 如try块内没有抛出异常,直接跳过catch从句内容。
4) 如try块内抛出的异常没有在catch从句中指定, 则该方法会立即退出。
3. 处理异常
答:1) 应捕捉并处理那些已知如何处理的异常,而传递那些不知如何处理的异常;
2) 如想传递异常,必须在方法的定义中增加一个throws修饰符,以通知调用者可能会抛出一个异常;
3) 对子类方法抛出的异常不能超出超类方法throws指令的范围。如父类不抛出任何异常,在子类方法中必须捕捉每一个“已检查异常”。
4. 捕捉多个异常
答:1) 每个异常类型使用一个catch从句;
2) 如前面catch从句捕获异常,将直接跳过后面catch从句内容;
3) 建议按异常类型的子类->超类的顺序排列catch从句的先后顺序。
5. finally 声明
答:无论是否捕获异常,都会执行finally从句中的代码;
6. 异常调用栈
答:1. 哪个方法调用的代码发生异常,返回到哪个方法;
2. main方法调用的代码发生异常,返回到虚拟机。
7. 异常层次
答:1) 起源于Error的类代表不常用的环境(通常是硬件层面);
2) 应用程序不能够从Error中恢复正常;
3) 所有的Java异常都起源于Exception;
4) RuntimeExcepiton也称为未检查异常;
5) 未检查异常无须捕获;
6) 其它异常,也称为检查异常,必须处理
Object
↑
Throwable
↑
|ˉˉˉˉˉˉˉˉ|
Error Exception
| ↑
| |ˉˉˉˉˉˉˉ|
RuntimeException
8. 一些未检查的异常
答:1) java.lang.ArithmeticException 如:除0;
2) java.lang.NullPointerException 如:没初始化一个References便使用;
3) java.lang.ArrayIndexoutofBoundsException 如:调用一个有十个元素的Array的第十一个元素的内容;
4) java.lang.NumberFormatException 如:Integer.parseInt("a");
9. 写你自己的异常
答:1) 要做的仅仅是从Exception继承或者是从Exception的一个子类衍生出自己需要的类就可;
2) 习惯为每一个异常类提供一个默认的构造器以及一个包含详细信息的构造器。
10. 抛出你自己的异常
答:1) 在方法的定义中增加一个throws修饰符,以通知调用者可能会抛出一个异常;
2) 在方法中构造一个该类的实例,然后抛出该实例。
三个Java小笑话
1. 作为父亲的儿子,我是他的子类,我继承他的全部属性和方法,但为什么父亲会开车,我不会?开车这个方法也许是final类型。
2. 你们去二十家公司面试,也许没有一家会问你内部类(累不累)。虽然内部类很少用,但没人性的公司即使应聘成功,建议也别去。
3. 你今天早上出门的时候看了不该看的一幕,以致于一天没有干活。看到这种异常,你们的项目经理过来问你是否技术上碰到了问题(试图捕获异常)?你摇摇头(异常类型不对),然后你们的事务经理过来,你告诉他你在早上看到了自己最喜欢的Polo车竟然有最不喜欢的绿色。事务经理安慰你可将目标转为宝马,并允诺周末一起开他的宝马去海上田园兜风(捕获异常),你情绪大为好转并提出自动加班(异常得到处理,程序正常运转)。不幸的是,你们的事务经理刚好情绪也不好,他直接将你的情况反映给总经理(捕获异常,没处理直接抛出)。更不幸的是,也许你们公司的人事经理和项目经理刚好不在,这种情况被你们的头看到,他将你开除(首先被Exception捕获,粗略处理)。你被开除后,整个项目无法进行下去,最后公司被宣布解散。因为整个公司就你一个人。
2004-8-27 星期五 晴
创建图形用户界面
1. AWT
答:1) Abstract Window Toolkit(抽象图形工具);
2) 提供一系列的对象去创建图形用户界面;
3) 在java.awt包里包括三种类型的类:
a 组件: 可视化图形工具的基本类,包括容器;
b 容器: 一种可以装载其他组件的特殊组件;
c 布局管理器: 容器里用来定位(布置)用户界面组件的一种接口。
2. 创建图形用户界面步骤一:选择容器
答:1) 组件可被加入到容器;
2) 通常使用以下容器: Frame, Dialog, Applet, Panel;
Component
↑
Container
↑
|ˉˉˉˉˉˉ|ˉˉˉˉˉˉ|
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -