JAVANOTES 知识管理(记录易犯及所犯错误)
知识管理(记录易犯及所犯错误)
28.
如何遍历HashMap:
最快的方法:(其他请看./算法合辑/如何遍历HashMap)
- public static void printMap(Map mp) {
Iterator it = mp.entrySet().iterator();
while (it.hasNext()) {
Map.Entry pairs = (Map.Entry)it.next();
System.out.println(pairs.getKey() + " = " + pairs.getValue());
it.remove(); // avoids a ConcurrentModificationException
}
}
27.
mouseListener
mouseMotionListener记得分别添加。
26.
catch到某Exception之后,程序还会往下执行。并不会退出。
25.
NullPointerException。
(某个对象 没new出来,就调用了它的某个方法)
打印相关信息。
使用debug
24.
已经在类里面声明了某变量。TextField tf1;
方法里面给此tf1初始化的时候,不要再在前面写TextField。(TextField tf1 = new TextField();)
要不然编译的时候不出错,运行的时候却总不对。
23.
模式:
- 管家(门面) (调停者)『持有对方引用』
- 观察者『事件监听模型』
22.
- Button
-
TextField
-
在一个类里,想访问另外一个类里面的事件源对象,可以用这个事件的getSource()方法。最后再强制转换成所需对象。
-
password: setEchoChar();
-
21.
继承重写,一定去copy。
【实现接口的时候,敲错了,编译时会出错】
20.
阻塞式:如果没有×××,他就在那里傻傻的等待。
19.
catch到Exception,退出,比较好。【再考虑】
18.
TestSync.java测试失败。
D:\Java\sxt\Thread>javac TestDeadLock.java
TestDeadLock.java:66: 需要
';'
sychronized(o1) {
^
TestDeadLock.java:73: 需要 ';'
sychronized(o2)
{
^
TestDeadLock.java:79: 需要 ';'
sychronized(o2)
{
^
TestDeadLock.java:86: 需要 ';'
sychronized(o1) {
^
4 错误
原因:synchronized写错了。
17.
面试题:
写一个死锁程序。
生产者消费者。
16.
- 某类的对象如果想能够存入(硬盘、网络),那么这个类必须实现[java.io Interface] Serializable接口(标记性接口)
- 用List来存某类的对象,当调用java.util.Collections(List的常用方法在这个类中)的sort方法时,这个类必须实现[java.lang Interface] Comparable 接口。
15.
readUTF();
writeUTF();
网络上传输时会用到。
14.
D:\Java\sxt\Collection\TestCollection.java
注意:TestCollection.java 使用了未经检查或不安全的操作。
注意:要了解详细信息,请使用 -Xlint:unchecked
重新编译。
【用了泛型,这提示自动消失】
13.
注意了解 系统提供的类 其equals方法有没有重写
还有hashCode方法。
两个对象equals,其hash码相同。
要是重写equals方法时,一定记得重写hashCode方法。
这个对象当作 “键”,(索引)的时候,有用。
12.
可能出现的错误,让它尽早暴露。
能在编译是暴露的就别留到运行时。【11中的】
11.
枚举类型:
写游戏时,定义某个物体只能往四个方向运动,用1, 2, 3, 4,来控制。这样可以。
但是如果不小心定义成了5,编译也不会出错。但运行起来就出错,还不容易查找。
用枚举就不会出这种难找的错误啦。
10.
File.getParentFile()
- 返回类所在目录的 上层路径名
- 如果打包了,那就是包目录 的上层
finally通常用于进行资源的清除工作,如关闭打开的文件,删除临时文件
9.
- 一边写,一边找思路。
- 一点一点的解决。
- 经常打印一些东西,对调试程序有帮助。
- 先实现基本功能,再考虑健壮&简洁
D:\Java\sxt\FrequentlyUsedClasses\ArrayParser.java
8.
1. 对象不要提前声明,尽量在使用前声明,减少JVM的消耗.
2. 尽量避免显式调用System.gc().
3.
尽早将不使用的引用对象设置为null,这样可以加速GC的工作.
4.
尽量少用finalize函数,finalize函数是Java程序提供一个释放空间的机会,但是会加大GC的工作量.
5.
尽量避免在类构造函数里面创建初始化大量的对象,防止再调用构造器时造成不必要的内存浪费.
6.
数据结构对GC的回收比较复杂,全局的变量和一些静态的方法容易造成悬挂,造成内存浪费.
7.
尽量在合适的场合使用对象池技术复用对象来提高系统性能,但是要注意内存池大小不要设置过大.
7.
int[][] a = {{3, 4}, {2, 5, 7}, {8, 2, 5}};
int[][] aBak = new
int[3][];
System.arraycopy(a, 0, aBak, 0, a.length);
是二维数组,也可以copy。(copy地址,指向数组)
copy完成之后,指向的是相同的数组。
6.
良好的编程习惯:
A。throws异常的时候,如果抛出了两个,而且两个是父子类关系,那最好也都写上。(别人知道你抛两种异常,catch住了会做不同的处理)(良好的编程习惯)
B。先把程序写通,再考虑健壮性。(如果怕忘,可先记笔记。)
C。常用的功能封装到方法里。那样就不必每次用到的时候都重写了。
5.
难查的错误:
A。重写失败(用copy的方法去避免)
B。if 后面千万别按个 ; ,出错,还查不出来。
4.
再回教室时,复习学习第七章后面一部分
3.
byte b1=1,b2=2;
float f1=1.2f,f2=123;
byte
b=b1-b2;//可能损失精度。整数型(1,25,67)默认int型,运算时自动转换。
float
f3=f1-f2;//f1是float型,1.2f已经告诉电脑了。123默认int型,可以自动转换到float型。
2.
编写子类时一定不要忘了extends xxx
1.
java HelloWorld(运行的是这个类,而不是类文件,所以加上class的扩展名会出错)
0.注重这三点,均衡发展。
- 技术
- 管理(自己的时间)
- 沟通

浙公网安备 33010602011771号