下面的示例代码为通过手工方式加载Oracle的JDBC驱动jar包,以便我们更清楚的区分两者之间的差异:
1 public static void main(String[] args) {
2 String filename = "file:///C:/oracle/product/10.2.0/db_1/jdbc/lib/ojdbc14.jar";
3 URL u = new URL(filename);
4 URLClassLoader cl = new URLClassLoader(new URL[]{u});
5 Class< > c = cl.loadClass("oracle.jdbc.driver.OracleDriver");
6 System.out.println(c.getClassLoader());
7 c.newInstance();
8 System.out.println("Over.");
9 }
复制代码
如果替换为我们熟悉的Class.forName()加载方式,见如下代码:
1 public static void main(String[] args) throws Exception {
2 String filename = "file:///C:/oracle/product/10.2.0/db_1/jdbc/lib/ojdbc14.jar";
3 URL u = new URL(filename);
4 URLClassLoader cl = new URLClassLoader(new URL[]{u});
5 Class< > c = Class.forName("oracle.jdbc.driver.OracleDriver");
6 System.out.println(c.getClassLoader());
7 System.out.println("Over.");
8 }
9 /* 输出结果均为:
10 sun.misc.Launcher$AppClassLoader@ad3ba4
11 Over.
12 */
复制代码
4. ProcessBuilder:
在实际开发中,我们常常为了节省开发成本和缩短开发周期,会充分利用操作系统为我们提供的shell命令来获取一些和系统相关的信息,同时导入他们的输出结果并加以分析,这样做不仅降低了开发的难度,也节省了大量的开发时间。这里我们将提供一段示例代码来演示Java的程序如何利用这些shell命令来完成自己的功能需求。
1 public class MyTest {
2 private static void execNotepadAndWait() {
3 try {
4 ProcessBuilder proc = new ProcessBuilder("notepad.exe", "testfile");
5 proc.start();
6 //阻塞父进程直到子进程结束。
7 proc.wait();
8 } catch (Exception e) {
9 System.out.println("Error executing notepad.");
10 }
11 }
12 private static void forkProcessAndGetInputStream() throws IOException {
13 //启动子进程
14 Process process = new ProcessBuilder("java","-h").start();
15 //从子进程中获取其输出信息作为当前程序的输入流。
16 InputStream is = process.getInputStream();
17 //以文本字符的方式读入,以便后面可以按行读取。
18 InputStreamReader isr = new InputStreamReader(is);
19 BufferedReader br = new BufferedReader(isr);
20 String line = null;
21 while ((line = br.readLine()) != null) {
22 System.out.println(line);
23 }
24 }
25 public static void main(String args[]) throws IOException {
26 forkProcessAndGetInputStream();
27 execNotepadAndWait();
28 }
29 }
复制代码
5. 正则表达式:
这里给出的基本都是Java中正则表达式的示例代码,至于基础的语法规则,只是通过在代码中加上适当的注释,再结合输出结果的方式予以介绍,如果确实需要系统学习的,网上有很多很多优秀的文章详细介绍了这方面的知识。好吧,现在让我们开始吧。
1) 通用的规则和使用方法:
1 public static void main(String[] args) {
2 //这里\表示转义符,双斜杠\\表示一个\,\w表示所有的字母,
3 //不分大小写,\s表示空格符,如" \n\r\t",\d表示数字
4 Pattern patt = Pattern.compile("(\\w+)\\s(\\d+)");
5 Matcher matcher = patt.matcher("Bananas 123");
6 matcher.lookingAt();
7 System.out.println("Name: " + matcher.group(1));
8 System.out.println("Number: " + matcher.group