生活随笔
收集整理的這篇文章主要介紹了
java实现可有括号的android计算器
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
寫了一個android版的計算器,可以計算帶括號的表達式,不過前提是:正確的表達式才行
小缺陷是沒有做表達式括號的控制,現在還沒有想到好的控制方式
1 package javaAdvanced;
2
3 import java.io.IOException;
4 import java.io.PrintWriter;
5
6 /**
7 * 類加載器學習
8 *
9 * @author cuiH
10 * Date: 13-12-6
11 */
12 public class ClassLoaderTest {
13 public static void main(String[] args) {
14 System.out.println(ClassLoaderTest.
class.getClassLoader().getClass().getName());
15 /**
16 * result:sun.misc.Launcher$AppClassLoader
17 * AppClassLoader 加載的
18 */
19
20
21 System.out.println(System.
class.getClassLoader());
22 /**
23 * result:null
24 * 加載器為null,說明是由bootstrap加載器進行加載的
25 */
26
27
28 ClassLoader loader = ClassLoaderTest.
class.getClassLoader();
29 while (loader !=
null) {
30 System.out.println(loader.getClass().getName());
31 loader =
loader.getParent();
32 }
33 System.out.println(loader);
34 /** http://www.cnblogs.com/sosoft/
35 * result:
36 * sun.misc.Launcher$AppClassLoader [加載classPath各種jar包下面類]
37 * sun.misc.Launcher$ExtClassLoader [加載 Ext下面的各種jar包]
38 * null(Bootstrap)[加載rt.jar]
39 * 說明三個類加載器的父子關系
40 */
41 }
42
43 /**
44 * web項目中的一個類加載器的測試(Tomcat中servlet DoGet方法的加載器)
45 * org.apache.catalina.loader.WebappClassLoader
46 * org.apache.catalina.loader.StandardClassLoader
47 * sun.misc.Launcher$AppClassLoader
48 * sun.misc.Launcher$ExtClassLoader
49 *
50 * 兩個apache 兩個java
51 * 這個放到web項目下好用。
52 */
53 protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
throws javax.servlet.ServletException, IOException {
54 response.setContentType("text/html"
);
55 PrintWriter out =
response.getWriter();
56 ClassLoader loader =
this.getClass().getClassLoader();
57 while (loader !=
null) {
58 out.println(loader.getClass().getName() + "</br>"
);
59 loader =
loader.getParent();
60 }
61 out.close();
62 }
63
64 }
65
66 /**
67 * jvm默認三個類加載器 http://www.cnblogs.com/sosoft/
68 * 類加載器本質也是一個類
69 * java虛擬機第一個加載器是BootStrap,加載其他類加載器,然后加載類
70 *
71 * 默認的三個BootStrap ;AppClassLoader;ExtClassLoader
72 *
73 * 類加載器的委托方式:
74 * 加載方式:首先向上委托,,追尋到Bootstrap,上面有的話,直接加載,沒有的話向下尋找。
75 * 因此自己寫的System類無法被加載,因為找到最上面,就直接加載system類了
76 */
77
78
79 /**
80 * 編寫字節的類加載器
81 * 模板方法的設計模式
82 *
83 * 父類里有loaderClass方法
84 *
85 * 子類1(自己的代碼)
86 * 子類2(自己的代碼)
87 *
88 * 子類1和子類2的流程一樣,但是具體實現方法不一樣。
89 * 因此,將實現流程的代碼寫在父類中,具體的實現代碼由子類實現
90 * 例如JDK中,ClassLoader.loaderClass使用的就是模板方法
91 *
92 * ClassLoader.loaderClass方法包括三步流程:
93 * 一:findLoaderClass()檢查是否加載
94 * 二:父類加載器中調用 loaderClass方法
95 * 三: findClass查找類。
96 *
97 * 因此:要想寫一個自己的類加載器,只需要覆蓋findClass便可以實現
98 */ ?
轉載于:https://www.cnblogs.com/sosoft/p/3462115.html
總結
以上是生活随笔為你收集整理的java实现可有括号的android计算器的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。