JAVA_学习笔记

-verbose:class  //查看类的加载顺序
类的加载:
bootstrap class loader //核心类加载器,由机器本地语言编写
extesion class loader //扩展的类加载器,用于加载jre/lib/ext下的jar包
application class loader //用于加载用户定义的类,application class loader 被 extesion class loader加载
URLClassLoader //用户加载网络类,例如applet程序
//java中有非常多的类加载器

ISO七层参考模型:
物理层、数据链路层、网络层、传输层、会话层、表示层、应用层
TCP/IP四层参考模型:
网络接口层、网络层、传输层、应用层

应用层协议:
telnet、ftp、http、dns、smtp、pop3

传输层协议:
TCP: 面向连接的可靠的传输协议,应用于高完整性的传输应用。
UDP:是无连接的,不可靠的传输协议,应用于视频传输等实时性高的应用,http是udp发送。

网络层协议:
ip

1. InputStream 和OutputStream,两个是为字节流设计的,主要用来处理字节或二进制对象,
2. Reader和 Writer.两个是为字符流(一个字符占两个字节)设计的,主要用来处理字符或字符串.
字符流处理的单元为2个字节的Unicode字符,分别操作字符、字符数组或字符串,而字节流处理单元为1个字节,操作字节和字节数组。

InputStream
FileInputStream
ByteArrayInputStream
FilterInputStream //过虑流类
DataInputStream
BufferedInputStream
LineNumberInputStream(开发java编译器使用)
PushbackInputStream(开发java编译器使用)
ObjectInputStream
PipcdInputStream
SquenceInputStream
StringBufferInputStream

OutputStream
FileOutpuStream
ByteArrayOutputStream
FilterOutputStream//过虑流类
DataOutputStream
BufferedOutputStream
PrintStream
ObjectOutputStream
PipcdInputStream

io缓冲区:在内存中分配一块区域,等区域满了之后再写入到硬盘
flush:强制缓冲区被写出
BufferedOutputStream 需要关闭,不然可能缓冲区未满导致字节没有被写入,而是在内存缓存区。
new BufferedOutputStream(new FileOutputStream("2.txt"),5); //5是字节数,一个汉字俩字节
DataOuputStream、DataInputStream 用于读写java中的基本数据类型
PipedInputStream、PipedOutputStream 用于输入和输出的管道
java采用unicode编码,unicode编码是用两个字节长度来表示数值

Reader
BufferedReader
LineNumberReader
CharArrayReader
FilterReader
PushbackReader
InputStreamReader //实现字节流转化为字符流
FileReader
PipedReader
StringReader

Writer
BufferedWriter
CharArrayWriter
FilterWriter
OutputStreamWriter//实现字节流转化为字符流
FileWriter
PipedWriter
PrintWriter
StringWriter

java采用unicode编码,而console(标准输入输出设备)的编码格式由操作系统决定,所有会产生乱码。

serializable时不会保存类非静态成员变量,如果类中有其它类的引用,那么其它类也被serializable
如果其它类没有实现serializable接口,则保存不成功。可以使用transient关键字排除其它类。

UML常用单词
realization 实现
association 联合
dependency 继承

线程睡眠是帮助其它线程运行的最好方法
线程睡眠到期会自动苏醒,并返回可运行状态,不是运行状态。
sleep()中指定的只是最短不运行时间。sleep不能保证睡眠到期后立即执行。
sleep是静态方法,只能对当前运行的线程睡眠。
线程睡眠时,它所持的任何锁都不会释放
Thread.yield()方法作用是暂停当前正在执行的线程对象,并执行其他线程。
大多数情况下yield()将导致线程从运行状态转到可运行状态,但也可能再次被jvm调用为运行状态

new StringBuffer(int length); //初始字节长度
Object.clone(); //需要派生类实现Cloneable接口、如果派生类中有其它引用类,则其它类也需要现实Cloneable接口.
String 类是不会被克隆的,因为它被声明为final

Arrays.binarySearch(a, key); //需要对象已经排序,String默认实现了Comparable<String>

在类中private或static自然就是final

Runtime.gc(); //显示调用java垃圾内存回收。gc会调用对象的finalize()

java中类只能单继承,但是接口可以同时继承多个接口

内部类文件名: OuterClassName$InnerClassName

静态内部类,可以有静态方法。非静态内部类,不能有静态方法

在try,catch,finally中,如果执行System.exit(0);finally将不会被执行

java中的位运算符: & | ^ ~
& 1 1
| 0 0
^ 1 0 、0 1
~ 取反
向左移相当于乘二 向右移相当于除二
posted @ 2011-12-23 15:24  microsoft_kk  阅读(372)  评论(0编辑  收藏  举报