zoukankan      html  css  js  c++  java
  • 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  */
  • 相关阅读:
    虚拟机中无法显示摄像头驱动问题
    格式化的打印输出
    adb 常用命令
    stl list 正确删除节点程序实例
    程序猿的终点?!!!
    奇迹是否会发生?乙肝从大三阳到小三阳到自愈!
    2014年誓言:干掉网页设计程序——Dreamweaver!
    Dreamweaver杀手!Illustrator终结者?Flash的末日?图形图像设计程序之网页版
    网页程序 vs 桌面程序
    x13 vs md5
  • 原文地址:https://www.cnblogs.com/sosoft/p/3462115.html
Copyright © 2011-2022 走看看