学习Java的笔记(4)
91、包命名:小写字母,使用顺序反过来的域名。
92、包内的类需声明为public,否则不属于此包的方法无法使用它。
93、采用JAR文件方便维护和安装,一个JAR文件往往包含多个包,Sun J2SE所提供的标准类放在rt.jar中
。
94、J2SE提供工具软件jar来生成JAR文件:
jar cvf <jar file> <class file>
jar cmvf <manifest> <jar file> <class file> 用m来包含自定义的说明(manifest)文件
Manifest.mf。
95、将创建的包输入进来:用import com.mycompany.shape.*;非import com.mycompany.shp;另外还需将
此JAR文件包含在类路径中,在Windows中需要设置:SET CLASSPATH=.;shapr.jar。或者可以使用:java
-classpath <class path> <class file>
96、由于和对象相关的变量属于引用类型,使用obj1=obj2;obj1只是得到一份obj2应用的副本,而不是
obj2对象本身。
97、使用clone()来复制一个对象,clone()从Object类继承。obj1=obj2.clone();obj2必须是可复制的
。
98、为了使一个用户自定义的类对象可被复制,必须使用接口Cloneable,并声明一个public方法clone()
来执行复制工作。
99、若要完成深度复制(deep copy)(包含所参考的对象和其相关的对象),则需根据对象间的阶层关系
一层层地复制下去。
100、Reflection又称introspection,因为它允许执行中地Java程序来进行自我检查,可以得到一个对象
所属类定义的成员及相关的数据,这是Java特有的功能。
101、Reflection提高像功能指针一样的功能,可在程序执行时才动态提高所以执行的类对象方法名称与
所要输入的参数。
102、首先得到一个Class对象,有两种方法
由既存类对象,使用getClass()得到一个类对象,如obj.getClass();
使用Class.forName(String className)
103、其次,使用Class提供的方法来得到该类的相关数据
String getName(); 用来得到该类的名称
Method[] getDeclaredMethods(); 得到所有在该类内所声明的方法名称
Method[] getMethods(); 得到所有在该类的方法名称,包含由父类继承的方法
Method getMethod(String methodName, Class[] parameterTypes); 得到一个Method对象
104、最后,使用Method所提供的方法来执行所要执行的方法
Object invoke(Object methodObj,Object[] parameters); 发生错误时,生成
InvocatioTargetException
105、利用Reflection功能来执行类内的方法时,方法的输入数据类型是较特殊的地方,语法为:
typeName.class,如int[]为int[].class,int为int.class,String为String.class。输入的参数必须为对
象(Object)
106、为了知道一个Java程序的执行效率,以提供改进程序的方法,Java提供了Java profiling的功能。
java -Xrunhprof:help 用于查询Java profiling可供使用的选项。如,了解程序中各种方法执行时间的
比例,可使用java -Xrunhprof:cpu=times className。会产生一个java.hprof.txt文件。
107、Throwable是所有Java程序中错误处理的父类,有两种资类:Error和Exception。
108、Error:表示由JVM所侦测到的无法预期的错误,由于这是属于JVM层次的严重错误,导致JVM无法继
续执行,因此,这是不可捕捉到的,无法采取任何恢复的操作,顶多只能显示错误信息。
109、Exception:表示可恢复的例外,这是可捕捉到的,因此,当例外发生时,可采取一些恢复的行动。
110、例外的处理方式之一:如果要忽略程序中可能发生的例外,而交由其他程序处理,可将这些例外直
接返回所调用的程序,而所调用的程序必须处理这些例外或是将它们再往上返回所调用的程序。
111、例外的处理方式之二:如果要再程序中直接处理这些例外,则可使用try...catch(...finally)的
方式。
112、finally可以省略。如果使用,finally内的程序一定会被执行,一般用来进行最后的清理工作,如
关闭所打开的系统资源。
113、Throwable所提供的方法:
String toString():代表该Throwable对象的字符串表示法。
String getMessage():返回和该对象相关的错误信息。
void printStackTrace():将例外生成所发生的途径显示出来。
void printStackTrace(PrintStream out):输出到一个PrintStream的数据流中,借此可将信息
写到一个文件。
void printStackTrace(PrintWriter out):输出到一个PrintWriter的数据流中。
114、try...catch也是一种区段式的构架,对子变量的可见范围也必须遵循同样的规则,有时为了让
catch(或finally)区段能使用try区段内的变量,需要将变量声明再try...catch的区段外。
115、当程序需要捕捉数个不同的例外时,需要特别注意这些例外的顺序。应该按照类之间的阶层关系放
置,越是基本的类越需放在后面的catch()区段。
116、一个例外类至少需要包含一个默认的构造函数(用来显示默认的信息)及一个以String对象为参数
的构造函数(用来显示用户提供的自订信息)。
117、C/C++只能提供字节流,在Java中,还有字节(byte)流和字符(character)流之分。
118、字节流:OutputStream提供的方法:
void write(int b):写入一个字节的数据
void write(byte[] buffer):将数组buffer的数据写入流
void write(byte[] buffer,int offset,int len):从buffer[offset]开始,写入len个字节的数
据
void flush():强制将buffer内的数据写入流
void close():关闭流
119、InputStream提供的方法:
int read():读出一个字节的数据,如果已达文件的末端,返回值为-1
int read(byte[] buffer):读出buffer大小的数据,返回值为实际所读出的字节数
int read(byte[] buffer,int offset,int len)
int available():返回流内可供读取的字节数目
long skip(long n):跳过n个字节的数据,返回值为实际所跳过的数据数
void close():关闭流
120、字符流。Reader、Writer类中提供的方法与字节流相同,只是参数内的byte[]需改为char[]
- 上一篇: 学习Java的笔记(3)
- 下一篇: java io读取文件到String