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. ...
随机推荐
- Angular实现递归指令 - Tree View
在层次数据结构展示中,树是一种极其常见的展现方式.比如系统中目录结构.企业组织结构.电子商务产品分类都是常见的树形结构数据. 这里我们采用Angular的方式来实现这类常见的tree view结构. ...
- 基础调试命令 - wt (watch and trace)
本文介绍windbg动态调试过程中一个非常有用的命令,wt的用法. wt命令 wt命令之所以称为wt是因为它是watch and trace的简称,即用来观察和跟踪的命令.这个命令一般用在动态调试而不 ...
- Linux 文件描述符和重定向
200 ? "200px" : this.width)!important;} --> 介绍 文件描述符是与文件输入.输出相关联的整数,在编写脚本时会经常使用标准的文件描述符 ...
- [每天默写一个算法]KMP
[每天默写一个算法]KMP 作业要求:默写String的KMP算法. KMP是经典的字符串匹配算法.复杂度为O(n+m) public static class StringKMP { /// < ...
- HTML5本地存储——IndexedDB(二:索引)
在HTML5本地存储——IndexedDB(一:基本使用)中介绍了关于IndexedDB的基本使用方法,很不过瘾,这篇我们来看看indexedDB的杀器——索引. 熟悉数据库的同学都知道索引的一个好处 ...
- C#高级二
编程小虾米大侠之梦 软件环境:win7 开发工具:vs 2010 平台:.NET 语言:C# 类库版本:.NET Framework 2.0 语言特点:强类型语言 规划知识点: 1..net fram ...
- ehcache2拾遗之copyOnRead,copyOnWrite
问题描述 缓存在提升应用性能,提高访问效率上都是至关重要的一步.ehcache也是广为使用的缓存之一.但是如果将一个可变的对象(如普通的POJO/List/Map等)存入缓存中,会导致怎样潜在的问题. ...
- VS2015的一些资料
http://blog.csdn.net/hk_5788/article/details/48466295 主要看一下js支持方面的,另外今天复习了promise,刚入职的时候看得有些问题,今晚抽时间 ...
- 解决服务器每次都要输入Enter PEM pass phrase
今天架设好Python的HTTPS云服务器, 发现每次连接都要Enter PEM pass phrase 把服务器端的key里面的key剥离掉就好了 openssl rsa -in server.ke ...
- 我心中的核心组件(可插拔的AOP)~分布式文件上传组件~基于FastDFS
回到目录 一些概念 在大叔框架里总觉得缺点什么,在最近的项目开发中,终于知道缺什么了,分布式文件存储组件,就是缺它,呵呵,对于分布式文件存储来说,业界比较公认的是FastDFS组件,它自己本身就是集群 ...