随笔分类 -  Java

摘要:近日,学习了一下解释器模式(地址:http://www.cnblogs.com/cbf4life/archive/2009/12/17/1626125.html),作者用一个公式计算器的例子来阐述解释器模式,该计算器能完成加减法的计算: 1. 给定任意加减法公式,eg:a+b-c 2. 分别给定a b c的值 3. 计算公式的值本文通过改写这个例子,使这个公式计算器更加强大,增加了以下功能:A.支持括号符B. 支持乘除法等优先级不同的运算符C. 可扩展其他运算符,真正做到开闭原则1. 表达式 首先,要说的是表达式。表达式可以是一个变量,也可以是一个符号(比如加减乘除)。它们有一个相同点... 阅读全文
posted @ 2013-04-04 21:15 Alex_Monkey 阅读(943) 评论(0) 推荐(0) 编辑
摘要:vim有编辑器之神的美誉。 有一定的学习曲线,但是熟练之后真是让人爱不熟手啊。vim可以让人完全抛弃鼠标,所有操作全部通过命令实现,大大提高编码的效率。 废话不多说,下面我说一下我的实现: 1. vim3个模式: 一般模式,插入模式,以及命令模式。 一般模式:主要用于进行复制黏贴删除、定位光标等操作。 插入模式:进行编辑代码的模式。 命令模式:也称底行模式(命令会在底行显示)。主要用于打开、保存、关闭文件。 模式之间的切换如下图所示: 2. 设计 2.1 模式类簇 我们知道,不同的模式下有不同的行为。即对于相同的输入,不同的模式应当有不同的响... 阅读全文
posted @ 2013-03-08 14:45 Alex_Monkey 阅读(1155) 评论(0) 推荐(0) 编辑
摘要:内存管理: 内存分配和内存回收,都由JVM自动完成。可达、可恢复、不可达: 1. 以线程为起点(单线程则为Main线程),能够访问到的对象称为可达。 2. 当对象没有任何变量引用时,此时,对象处于可恢复状态;GC在回收该对象之前,会调用该对象finalize()方法(默认什么都不做),这个方法中,若此对象被重新引用,对象又处于可达状态;反之,则进入不可达状态,被GC回收。强引用:最常用的引用方式,处于可达状态时,绝不会被回收。软引用:SoftReference类,处于可达状态时,当内存不足,会被GC回收。弱引用:WeakReference类,处于可达状态时,无论内存充足与否,均会被GC回收。虚 阅读全文
posted @ 2012-10-23 13:27 Alex_Monkey 阅读(156) 评论(0) 推荐(0) 编辑
摘要:final用法:变量: 性质: 1.被final修饰过的变量,不能再改变。 2.必须显式初始化。 3.被final修饰过的变量,相当于“宏替换”,在编译时期确定变量的值。 初始化位置: 实例变量:3个位置:1.定义实例变量 2.非静态初始化块 3.构造函数 (编译后,归结在构造函数中) 类变量:2个位置:1.定义类变量 2.静态初始化快 (编译后,归结在静态初始化块中) 局部变量:1个位置:1.定义局部变量方法: 性质: 1. 不能被重写。类: 性质: ... 阅读全文
posted @ 2012-09-28 10:27 Alex_Monkey 阅读(187) 评论(0) 推荐(0) 编辑
摘要:1. JAVA数组为静态,即一旦初始化后,其长度是不可改变的。2. 数组变量是引用变量,并不是数组对象本身。3. 两种初始化方式: 动态初始化:指定数组的长度,初始值自动生成。 静态初始化:指定初始值,长度自动生成。4. JAVA中,引用变量本身无需初始化,引用变量所引用的对象是需要初始化的。5. 所有局部变量(基本类型变量、引用类型变量)都存于所在方法的栈内存中,引用变量所引用的实际对象(数组对象、Java对象)存放于堆内存中。 =》引用变量不一定存放于栈内存中,eg,3维数组 *易混淆:引用变量何时指代其本省,何时指代堆内存中其引用的对象? 未调用其方法或属性,指代其本身... 阅读全文
posted @ 2012-06-10 21:49 Alex_Monkey 阅读(268) 评论(0) 推荐(0) 编辑
摘要:三个概念:组件(component) 容器(Container) 布局管理器(LayoutManager)关系: 容器中放置组件,组件的排列方式可以通过布局管理器设置。用户设置布局管理器后,setLocation()等方法会被布局管理器覆盖;用户想亲自设置组件大小和位置,应取消容器的布局管理器setLayout(null);有三种类型的容器:Window,Panel,ScrollPane常用的有Frame,Panel,Applet1. Frame 生成一个窗口,一般不用Window, 而是用其子类Frame。 实例化后,Frame是不可见且无大小。故需调用setSize() setVisi.. 阅读全文
posted @ 2012-04-19 02:29 Alex_Monkey 阅读(7271) 评论(0) 推荐(4) 编辑
摘要:一. I/O流概述 输入输出处理是程序设计中非常重要的一部分,从键盘中读数据或从文件中读写数据等等。 java把这些不同类型的输入、输出源抽象为流(stream),用统一接口来表示,从而使程序简单明了。I/O中的Exception 进行I/O操作时可能会产生I/O例外,属于非运行时例外,应该在程序中处理。 如:FileNotFoundException, EOFException, IOExceptionjava.io包中有关文件处理包括: 类:File、FileInputStream、FileOutputStream、RamdomAccessFile和... 阅读全文
posted @ 2012-04-08 19:31 Alex_Monkey 阅读(607) 评论(0) 推荐(0) 编辑
摘要:捕获例外: Java产生例外对象后,将去寻找能够处理此例外的方法并交之处理,这一过程成为捕获(catch)。若找不到,运行时系统将终止抛弃例外: 一个方法若不知道如何处理出现的例外,可声明抛弃(throws)jdk中,每个包都定义了例外类,所有的例外类都直接或间接继承于Throwable类。java中的例外类可分为两大类: error exception 运行时例外 继承于RuntimeException的类都属于运行时例外,如算数(除零),数组越界等,由于例外产生的位置是未知的,java编译器允许程序员在程序 中不对它们作出处理。 非运行时例... 阅读全文
posted @ 2012-04-07 22:22 Alex_Monkey 阅读(1933) 评论(0) 推荐(0) 编辑
摘要:面向对象封装的原则 要求使对象之外的部分不能随意存取对象的内部数据,从而有效避免了错误对它的“交叉感染”,使软件错误能局部化,降低排错难度继承 所有的类都继承自java.lang.Object,一些常用的方法: equals():比较两个对象引用时否相同。 getClass():返回对象运行时所对应的类的表示,从而得到相应的信息 toString():返回对象字符串表示 finalize():用于在垃圾收集前清除对象 notify(), notifyall(), wait(): 用于多线程处理中的同步 子类(subclass)对父类(superclass... 阅读全文
posted @ 2012-04-05 12:03 Alex_Monkey 阅读(15864) 评论(1) 推荐(2) 编辑
摘要:简单数据类型包括: 整型(Interger): byte, short, int, long 浮点类型(Floating): float, double 字符类型(Textual): char 布尔类型(Logical): boolean复合数据类型包括: class interface 数组 String常量: 用final. eg: final int NUM = 100;变量: 局部变量、类变量、方法参数、例外处理参数简单数据间的优先数据关系: 低-->高: byte,short,char->int->long->float->double自... 阅读全文
posted @ 2012-04-03 23:35 Alex_Monkey 阅读(2272) 评论(0) 推荐(0) 编辑
摘要:概述: 完整的java源程序应该包括下列部分: package语句; import语句; public classDefinition; // 公共的类定义部分,至多只有一个公共类的定义,java语言规定该java源程序的文件名必须与该公共类名完全一致 classDefinition; // 类定义部分,可以有0个或多个 interfaceDefinition; // 接口定义部分,可以有0个或多个package java编译器为每个类生成一个字节码文件,且文件名与类名相同,这就会带来一个问题:同名的类会发生冲突。package便可管理类命名空间。 ... 阅读全文
posted @ 2012-03-31 19:19 Alex_Monkey 阅读(856) 评论(0) 推荐(0) 编辑
摘要:1. Java虚拟机 Java虚拟机的“机器码”保存在.class文件中,也称作字节码文件。 Java程序的跨平台是指字节码文件可在任何具有Java虚拟机的计算机或者电子设备上运行。 Java编译器将将源程序编译为.class文件。2. 无用内存自动回收机制3. 代码安全性检查机制 4. 全局变量 java不使用全局变量,而类中的公共变量、静态变量相当于类的全局变量。5. 数据类型的一致性 c语言在不同的平台上,简单数据类型如int等分配的字节数不同,而java对数据类型的位数分配总是固定的。字节码执行需要3个步骤: a. 类装载器(class loader)负责把类文件(.cla... 阅读全文
posted @ 2012-03-31 16:32 Alex_Monkey 阅读(379) 评论(0) 推荐(0) 编辑