# javac时的编码问题 javac Hello.java -encoding utf-8 # 打成jar包 jar cvf hello.jar Hello.class
基本数据类型 (4类8种) 逻辑型:boolean 文本型:char 整型: byte / short / int / long 浮点型:double / float 复合数据类型就(多种,他们都是从Object这个类继承下来的) String是一个类。字符串在java里是对象。在java SE 5中有三个类可以表示字符串 String对象表示的字符串是不能修改的。如果要对字符串修改,应该使用StringBuffer和StringBuilder类 如果是引用类型的变量,必须先得new一个对象出来 集合类 集合类是放在java.util.*;这个包里 集合类型主要有4种:set(集)、list(列表)、map(映射)和Queue(队列)。//队列为jdk5中的加上的 使用System.gc()手动回收 对于垃圾收集器来说还有一个值得一提的是finalize()这个方法,每一个对象都有一个finalize( )方法,这个方法是从Object类继承来的。它用来回收内存以外的系统资源,就像是文件处理器和网络连接器。该方法的调用顺序和用来调用该方法的对象的创建顺序是无关的。换句话说,书写程序时该方法的顺序和方法的实际调用顺序是不相干的。这只是finalize( )方法的特点。还有,每个对象只能调用finalize( )方法一次。如果在finalize( )方法执行时产生异常(exception),则该对象仍可以被垃圾收集器收集 static 子类不能重写父类的静态方法哦,也不能把父类不是静态的重写成静态的方法。想隐藏父类的静态方法的话,在子类中声明和父类相同的方法就行了 final 在类的声明中使用final 使用了final的类不能再派生子类,就是说不可以被继承了。有些java的面试题里面,问String可不可以被继承。答案是不可以,因为java.lang.String是一个final类。这可以保证String对象方法的调用确实运行的是String类的方法,而不是经其子类重写后的方法 在方法声明中使用final 被定义为final的方法不能被重写了,如果定义类为final的话,是所有的方法都不能重写。而我们只需要类中的某几个方法,不可以被重写,就在方法前加final了。而且定义为final的方法执行效率要高 在变量声明中使用final 这样的变量就是常量了,在程序中这样的变量不可以被修改的。修改的话编译器会抱错的。而且执行效率也是比普通的变量要高。final的变量如果没有赋予初值的话,其他方法就必需给他赋值,但只能赋值一次。 访问控控制 classpackagechildgenralpublic o o o oprotected o o o default o o private o 常见的几种流 字节流:传字节的。以8位字节为单位进行读写,以InputStream与OutputStream为基础类 字符流: 传字符的。以16位字符为单位进行读写,以Reader与Writer为基础类 文件流: 传文件的。属于节点流,对文件读写,传输。里面的类很多。 序列化:传对象的。一个对象怎么读啊,只有变成二进制才可以读,这就是序列化 ObjectInputStream和ObjectOutputStream 反射 这个概念是一个叫Smith的大师,由1982年提出来的。指的是一类应用,它们能够自描述和自控制。 applet <applet code="HelloApplet.class" width=150 height=150></applet> appletviewer hello.html