写了一个android版的计算器,可以计算带括号的表达式,不过前提是:正确的表达式才行

小缺陷是没有做表达式括号的控制,现在还没有想到好的控制方式

 package javaAdvanced;

 import java.io.IOException;
import java.io.PrintWriter; /**
* 类加载器学习
*
* @author cuiH
* Date: 13-12-6
*/
public class ClassLoaderTest {
public static void main(String[] args) {
System.out.println(ClassLoaderTest.class.getClassLoader().getClass().getName());
/**
* result:sun.misc.Launcher$AppClassLoader
* AppClassLoader 加载的
*/ System.out.println(System.class.getClassLoader());
/**
* result:null
* 加载器为null,说明是由bootstrap加载器进行加载的
*/ ClassLoader loader = ClassLoaderTest.class.getClassLoader();
while (loader != null) {
System.out.println(loader.getClass().getName());
loader = loader.getParent();
}
System.out.println(loader);
/** http://www.cnblogs.com/sosoft/
* result:
* sun.misc.Launcher$AppClassLoader [加载classPath各种jar包下面类]
* sun.misc.Launcher$ExtClassLoader [加载 Ext下面的各种jar包]
* null(Bootstrap)[加载rt.jar]
* 说明三个类加载器的父子关系
*/
} /**
* web项目中的一个类加载器的测试(Tomcat中servlet DoGet方法的加载器)
* org.apache.catalina.loader.WebappClassLoader
* org.apache.catalina.loader.StandardClassLoader
* sun.misc.Launcher$AppClassLoader
* sun.misc.Launcher$ExtClassLoader
*
* 两个apache 两个java
* 这个放到web项目下好用。
*/
protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
ClassLoader loader = this.getClass().getClassLoader();
while (loader != null) {
out.println(loader.getClass().getName() + "</br>");
loader = loader.getParent();
}
out.close();
} } /**
* jvm默认三个类加载器 http://www.cnblogs.com/sosoft/
* 类加载器本质也是一个类
* java虚拟机第一个加载器是BootStrap,加载其他类加载器,然后加载类
*
* 默认的三个BootStrap ;AppClassLoader;ExtClassLoader
*
* 类加载器的委托方式:
* 加载方式:首先向上委托,,追寻到Bootstrap,上面有的话,直接加载,没有的话向下寻找。
* 因此自己写的System类无法被加载,因为找到最上面,就直接加载system类了
*/ /**
* 编写字节的类加载器
* 模板方法的设计模式
*
* 父类里有loaderClass方法
*
* 子类1(自己的代码)
* 子类2(自己的代码)
*
* 子类1和子类2的流程一样,但是具体实现方法不一样。
* 因此,将实现流程的代码写在父类中,具体的实现代码由子类实现
* 例如JDK中,ClassLoader.loaderClass使用的就是模板方法
*
* ClassLoader.loaderClass方法包括三步流程:
* 一:findLoaderClass()检查是否加载
* 二:父类加载器中调用 loaderClass方法
* 三: findClass查找类。
*
* 因此:要想写一个自己的类加载器,只需要覆盖findClass便可以实现
*/

java实现可有括号的android计算器的更多相关文章

  1. MTK Android 计算器Calculator输入暗码!77!+,启动工厂测试apk

    Android8.0 计算器Calculator输入暗码!77!+,启动工厂测试apk 路径: packages/apps/ExactCalculator/src/com/android/calcul ...

  2. java中的反射机制在Android开发中的用处

    JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反 ...

  3. java攻城狮之路(Android篇)--MP3 MP4、拍照、国际化、样式主题、图片移动和缩放

    一.MP3播放器 查看Android API文档可以看到MediaPlayer状态转换图: 练习: package com.shellway.mp3player; import java.io.Fil ...

  4. java攻城狮之路(Android篇)--BroadcastReceiver&Service

    四大组件:activity 显示. contentProvider 对外暴露自己的数据给其他的应用程序.BroadcastReceiver 广播接收者,必须指定要接收的广播类型.必须明确的指定acti ...

  5. java攻城狮之路(Android篇)--Activity生命

    一:Activity的激活 1.写一个类 extends Activity Activity是android的四大组件之一.Activity的激活分为显式意图激活和隐式意图激活.如果一个activit ...

  6. java攻城狮之路(Android篇)--ListView与ContentProvider

    一.ListView 1.三种Adapter构建ListView ListView添加条目的时候, 可以使用setAdapter(ListAdapter)方法, 常用的ListAdapter有三种 B ...

  7. Android(java)学习笔记198:Android下的逐帧动画(Drawable Animation)

    1.帧动画: 帧动画顾名思义,一帧一帧播放的动画就是帧动画. 帧动画和我们小时候看的动画片的原理是一样的,在相同区域快速切换图片给人们呈现一种视觉的假象感觉像是在播放动画,其实不过是N张图片在一帧一帧 ...

  8. Android(java)学习笔记196:Android中Menu的使用(静态和动态)

    1.使用xml定义Menu(静态方法) 菜单资源文件必须放在res/menu目录中.菜单资源文件必须使用<menu>标签作为根节点.除了<menu>标签外,还有另外两个标签用于 ...

  9. Android(java)学习笔记199:Android中补间动画(Tween Animation)

    本文主要简单介绍补间动画使用代码实现, 关于使用xml实现补间动画,可以参看:自定义控件三部曲之动画篇(一)——alpha.scale.translate.rotate.set的xml属性及用法 1. ...

随机推荐

  1. 自制Unity小游戏TankHero-2D(5)声音+爆炸+场景切换+武器弹药

    自制Unity小游戏TankHero-2D(5)声音+爆炸+场景切换+武器弹药 我在做这样一个坦克游戏,是仿照(http://game.kid.qq.com/a/20140221/028931.htm ...

  2. C# socket编程实践——支持广播的简单socket服务器

    在上篇博客简单理解socket写完之后我就希望写出一个websocket的服务器了,但是一路困难重重,还是从基础开始吧,先搞定C# socket编程基本知识,写一个支持广播的简单server/clie ...

  3. jmx server 和jmx client

    启动jmx server 和jmx client,通过jconsole进入jmx server 然后通过其中远程进程,进入jmx client: 发现,两者可用的tab页不同, MBean的数量类型也 ...

  4. 爱上MVC~在Views的多级文件夹~续~分部页的支持

    回到目录 之前写的一篇文章,主要针对View视图,它可以放在N级目录下,不必须非要在views/controller/action这种关系了,而在程序运行过程中,发现分页视图对本功能并不支持,原因很简 ...

  5. Java中static的理解

    static表示"全局"或者"静态"的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念. 被static ...

  6. Atitit usrQBM1603短信验证码规范

    Atitit usrQBM1603短信验证码规范 短信验证码扩展至短信服务和验证码服务1 主要方法1 参考模板1 短信验证码扩展至短信服务和验证码服务 主要方法 Line 27: public cla ...

  7. salesforce 零基础学习(二十三)数据记录导出至excel(自定义报表导出)

    我们都知道,报表有个功能为导出excel,但是有的时候客户需求往往标准的报表达不到,比如导出excel,其中本月修改的数据字段标红,如下图所示. 这就需要我们去写VF来实现此功能. 需求:将数据表记录 ...

  8. python学习 数据类型之序列

    一.序列(本文使用python3.5)############################################################# 列表.元组 字符窜都是序列#特点:#1 ...

  9. js 四舍五入函数 toFixed(),小数位数精度

    js的加减乘除有时得到的结果的小数的位数非常大,这种结果非常难以读取,例如某两个数相乘得到的结果是:1.3921000000000001 这种结果小数的位数有点多,一般需要的结果是四舍无入的 1.39 ...

  10. IOS开发之控件篇UINavigationController第二章 - 标题

    1.什么是标题(Title) NavigationController里面的viewcontroller,每一页都会有一个标题,如图3r就是这个页面的标题 2. 如何设置标题 一般都会在这个Navig ...