java实现可有括号的android计算器
写了一个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计算器的更多相关文章
- MTK Android 计算器Calculator输入暗码!77!+,启动工厂测试apk
Android8.0 计算器Calculator输入暗码!77!+,启动工厂测试apk 路径: packages/apps/ExactCalculator/src/com/android/calcul ...
- java中的反射机制在Android开发中的用处
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反 ...
- java攻城狮之路(Android篇)--MP3 MP4、拍照、国际化、样式主题、图片移动和缩放
一.MP3播放器 查看Android API文档可以看到MediaPlayer状态转换图: 练习: package com.shellway.mp3player; import java.io.Fil ...
- java攻城狮之路(Android篇)--BroadcastReceiver&Service
四大组件:activity 显示. contentProvider 对外暴露自己的数据给其他的应用程序.BroadcastReceiver 广播接收者,必须指定要接收的广播类型.必须明确的指定acti ...
- java攻城狮之路(Android篇)--Activity生命
一:Activity的激活 1.写一个类 extends Activity Activity是android的四大组件之一.Activity的激活分为显式意图激活和隐式意图激活.如果一个activit ...
- java攻城狮之路(Android篇)--ListView与ContentProvider
一.ListView 1.三种Adapter构建ListView ListView添加条目的时候, 可以使用setAdapter(ListAdapter)方法, 常用的ListAdapter有三种 B ...
- Android(java)学习笔记198:Android下的逐帧动画(Drawable Animation)
1.帧动画: 帧动画顾名思义,一帧一帧播放的动画就是帧动画. 帧动画和我们小时候看的动画片的原理是一样的,在相同区域快速切换图片给人们呈现一种视觉的假象感觉像是在播放动画,其实不过是N张图片在一帧一帧 ...
- Android(java)学习笔记196:Android中Menu的使用(静态和动态)
1.使用xml定义Menu(静态方法) 菜单资源文件必须放在res/menu目录中.菜单资源文件必须使用<menu>标签作为根节点.除了<menu>标签外,还有另外两个标签用于 ...
- Android(java)学习笔记199:Android中补间动画(Tween Animation)
本文主要简单介绍补间动画使用代码实现, 关于使用xml实现补间动画,可以参看:自定义控件三部曲之动画篇(一)——alpha.scale.translate.rotate.set的xml属性及用法 1. ...
随机推荐
- zendframework 2 链接数据库
相对于zf1,来说,zf2让我们对于数据库这方面的操作我的个人感觉是对于字段起别名简单了,但是对数据库的操作虽然配置写好的就基本不需要动了,但是还是比1的配置要繁琐, 还是那句话,大家可以去看看源码. ...
- 来看看Windows9到底是什么
今天有新闻一直在说windows 8.2 windows9,还给出了一张很有趣的图 我们就假设这张图是真的. 这张图透漏出两个信息 其一:开始菜单真的回来了. 不过还是不死心,绝不放弃开始屏,确实,开 ...
- 根据Excel的内容和word模板生成对应的word文档
Sub setname() Dim I As Integer Dim pspname As String Dim pspnumber As String Dim path As String Dim ...
- Git学习笔记(2)——版本的回退,和暂存区的理解
本文主要记录了版本的回退,以及工作区,暂存区概念的理解. //开始之前,先回顾上次的内容,修改文件如下,并提交到版本库. Git is a distributed version control sy ...
- Atitit RSA非对称加密原理与解决方案
Atitit RSA非对称加密原理与解决方案 1.1. 一.一点历史 1 1.2. 八.加密和解密 2 1.3. 二.基于RSA的消息传递机制 3 1.4. 基于rsa的授权验证机器码 4 1.5. ...
- js 图片轮播(一)
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- Java——List集合
package om.hanqi.test; import java.util.ArrayList; import java.util.List; public class Test01 { publ ...
- 在Ubuntu搭建.NET Core环境
Ubuntu16.04配置.net core环境 Ubuntu 16.04 desktop下载地址:http://www.ubuntu.com/desktop 本次是用vmware安装该系统. ...
- winform 程序制作自己的数字签名(续)
在上一篇文章<winform 程序制作自己的数字签名>中我们已经可以得到我们程序定制的数字签名了,但是比较讨厌的是每次编译之后,数字签名需要重新手动添加. 我们需要的是在程序编译时自动添加 ...
- TSql Top 用法
第一部分:TSql Top 有两种用法 1,限制查询结果集返回的行数或总行数的百分比. 当将 TOP 与 ORDER BY 子句结合使用时,结果集限制为前 N 个已排序行:否则,以未定义的顺序返回前 ...