Java API Using, Tips And Performance Tuning
时间:2025-07-11
时间:2025-07-11
Java 常用API的运用,效率及技巧
1. Java面向对象基本概念
2. System
3. String, StringBuffer
4. 数值,字符,布尔对象与简单类型的操作
5. Class, ClassLoader
6. Java IO系统
7. Java集合类
8. ResourceBundle, Properties
9. Exceptions
10. JDBC类库
11. 常用设计模式
--- 本文档旨在对我们常用的一些Java API做一些总结,
Java的类库。 技巧也就是前人经验的一种总结。
整理:张学军 目的是让我们能够正确有效的使用
1. Java面向对象基本概念
Java基本上是面向对象的程序设计语言, 除了一些简单类型(primitive)的变量以外, 一切都是对象, 程序是对象的组合, 每个对象都有自己的空间, 并且每个对象都有一种类型, 同一类所有对象都能接受相同的消息。 下面只对Java中对象的结构作简单的说明: 类(class): class是定义类的关键字, 类中包含类变量, 方法, 内部类, 内部接口等。 由class可以生成类的实例, 即一个个对象。 如果一个类的成员被定义成static的, 则这个成员不专属于任何对象, 而是属于这个类, 所有的对象共享这个成员。
抽象类(abstract class): 抽象类不能直接生成一个实例, 抽象类中必需有方法是abstract的, 抽象类的意思就是它实现了一部分的方法, 而定义为abstract的方法则需要在它的子类中去实现。
接口(interface): 接口可以理解为纯抽象的类, 它的每个方法都是未实现的, 它可以有成员变量, 但必须是static的。 一个类如果从这个接口继承(implements)则它必须实现这个接口的所有方法。
继承类用关键字:extends, 继承接口用关键字:implements。 一个类只能从一个类继承下来, 但可以从多个接口继承(类似于C++的多重继承)。 子类可以覆盖父类的方法(method), 但不能覆盖父类的成员变量(field)。 如果父类的方法为final或static的则不能被覆盖。类的初始化顺序是, 如果有父类, 则先初始化父类的field, 然后执行父类的构造函数, 如果子类没有显式的去调父类的构造函数则缺省的会去调父类的无参数构造函数。 然后是子类的field与构造函数的初始化。
public interface SuperInterface {
}
public Class SuperClass {
public SuperClass() { } System.out.println(“init SuperClass Constructor”); { } System.out.println(“init SuperClass field”); public staitc String SOME_FLAG = “1”; public void someMethod();
}
public Class SubClass extends SuperClass implements SuperInterface {
}
有以下test代码:
public class Test {
public void main(String[] args) {
}
}
则会输出:
init SuperClass field
init SuperClass Constructor
init SubClass field
init SubClass Constructor
run SubClass runMethod() SubClass sub = new SubClass(); sub. runMethod(); public void runMethod() { } System.out.println(“run SubClass runMethod()”); public void someMethod() { } System.out.println(“run SubClass someMethod()”); public SubClass() { } System.out.println(“init SubClass Constructor”); { } System.out.println(“init SubClass field”); public void runMethod() { } System.out.println(“run SuperClass runMethod()”);
以下章节所讲述到的常用的Java API就是一些Java自带的一些Class或Interface的用法。
2.System
System类位于package http://www.77cn.com.cnng下面, 凡是此package下面的类我们可以直接引用无需先import进来, 因为JVM缺省就load了这下面的所有class。
System包含了一些我们常用的方法与成员变量。 System不能被实例化, 所有的方法都可以直接引用。 主要作用大致有:
输入输出流:
(PrintStream) System.out (标准终端输出流),
(PrintStream) System.err(标准错误输出流),
(InputStream) System.in(标准输入流)。
我们还可以重定向这些流, 比如将所有的System.out的输出全部重定向至一文件
中去。
SystemsetOut(PrintStream) 标准输出重定向
System.setErr(PrintStream) 标准错误输出重定向
System.setIn(InputStream) 标准输入重定向
取当前时间:
System.currentTimeMillis() 所取到的时间是从1970/01/01以来1/1000秒计算的
long型值。这个值可以转换至Date或Timestamp值。 它一般还可以用来计算程
序执行的时间。例:
long beginTime = System. currentTimeMillis();
…
…
System.out.println(“run time = ” + (System. currentTimeMillis() – beginTime));
数组拷贝:
System.arraycopy(Object src, int src_position, Object dst, int dst_position, int length)
src: 源数组。
src_position: 源数组拷贝的起始位置。
dst: 目标数组
dst_position: 拷贝至目标数组的起始位置
length: 拷贝元素的长度
利用System.arraycopy进行数组的拷贝效率是最高的, 一般情况下我们自己很少
直接用到这个方法, 但在集合类的内部中都大量使用了这个方法。
例:
int[] array1 = {1, 2, 3, 4, 5};
int[] array2 = {4, 5, 6, 7, 8};
int array3 = new int[8];
System.arraycopy(array1, 0, array3, 0, 5);
System.arraycopy(array2, 2, array3, 5, 3);
此时array3 = {1, 2, 3, 4, 5, 6, 7, 8}
这比用for循环来进行赋值效率要高。
存取系统的Properties:
System.getProperties():取得当前所有的Properties, Properties将在后面的 …… 此处隐藏:9525字,全部文档内容请下载后查看。喜欢就下载吧 ……