Loading

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.注重这三点,均衡发展。

  • 技术
  • 管理(自己的时间
  • 沟通

 

posted @ 2013-10-27 09:14  asashadow  阅读(174)  评论(0)    收藏  举报