- 浏览: 324377 次
- 性别:
- 来自: 北京
最新评论
文章列表
这篇文章是在前面的“AWT事件总结”博客文章的基础上总结的,其实前面的讲到AWT事件就是一个典型的观察者模式使用场景(一个典型的应用示例),这样顺序的讲解目的是为了让我们能用AWT事件来深刻的理解观察者模式。
下 ...
AWT事件模型【重点】:
1、事件:描述发生了什么的对象。
2、事件源:事件的产生器。
3、事件处理器:接收事件、解释事件并处理用户交互的方法(归根结底是一个方法)。
---如果用户在用户界面层执行了一个动作(鼠标点击和按键),这将导致一个事件的发生。事件是描述发生了什么的对象。存在各种不同类型的事件类用来描述各种类型的用户交互。
事件源:
事件源是一个事件的产生者。例如,在Button组件上点击鼠标会产生以这个Button为源的一个ActionEvent。这个ActionEvent实例是一个对象,它包含关于刚才所发生的那个时间的信息的对象,这些信息包括:
getActionComma ...
这些代码都是自己写出来没有经过修改的
第一题(这个答案可能还有些地方没有考虑到,比如10001000的时候结果就差一个零):
package com.shengshiyuan.competition;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class DigitalConversion {
public void conversion(String str) {
// 首先用正则表达式判断是否都为数字
if (this.isNumeric(str)) {
...
ava中判断字符串是否为数字的方法:
1.用JAVA自带的函数
public static boolean isNumeric(String str){
for (int i = 0; i < str.length(); i++){
System.out.println(str.charAt(i));
if (!Character.isDigit(str.charAt(i))){
return false;
}
}
return true;
}
2.用正则表达式
首先要import java.util.regex.Pa ...
1. 异常(Exception)。
2. Java中的异常分为两大类:
a) Checked exception (非 Runtime Exception) 非运行时异常
b) Unchecked exception(Runtime Exception) 运行时异常
3. Java中所有的异常类都会直接或间接地继承自Exception。
4. RuntimeException类 ...
从Java 5.0版发布以来,5.0平台提供了一个正式的annotation功能:允许开发者定义、使用自己的annotation类型。此功能由一个定义annotation类型的语法和一个描述annotation声明的语法,读取annotation的API,一个使用annotation修饰的class文件,一个annotation处理工具(apt)组成。
在实际开发中,其实“注解”和“xm配置文件”是一个问题的两种解决手段,本质上是一回事,你掌握了配置文件来完成项目也行,掌握了注解来完成项目也行,具体使用哪种方式是根据项目统一要求的,公司的不同要求使用的方式也不同。
Annotation并 ...
泛型(Generics)【最重要】
类型安全的枚举(Type safe enums)
增强for循环(Enhanced For loop)
自动装箱拆箱(Autoboxing/unboxing)【纯粹是为了简化操作】
可变参数(Var args)
静态导入(Static import)【不宜使用太多,适可而止】
要使用静态成员(方法和变量)我们必须给出提供这个静态成员的类。使用静态导入可以使被导入类的所有静态变量和静态方法在当前直接可见,使用这些静态成员无需再给出他们的类名。
例如静态导入:
a) import static com.shengsiyuan.common.Common.Age;
b) import static com.shengsiyuan.common.Common.output;
表示导入Common类中的静态成员变量AGE以及静态方法output。注意:使用import static时,要一直导入到类中的静态成员变量或静态方法。
以下是静态导入的一个使用示例:
...
JDK1.5加入了一个全新类型的“类”—枚举类型。为此JDK1.5引入了一个新关键字enum。
【并不能说成是一个类,它的真正类型叫枚举,但是它和类又很像。】
我们可以这样来定义一个枚举类型
Public enum Color{
Red;
White;
Blue;
}
然后这 ...
可变参数使程序员可以声明一个接受可变数目参数的方法。注意,如果方法里面接收多个参数的话,可变参数必须是方法声明中的最后一个参数。
可变参数:可变参数本质上就是一个数组,对于某个声明了可变参数的方法来说,我们既可以传递离散的值,也可以传递数组对象。但如果将方法中的参数定义为数组,那么只能传递数组对象而不能传递离散的值。
可变参数必须要作为方法参数的最后一个参数,即一个方法不可能具有两个或两个以上的可变参数。
例如:
package com.shengshiyuan4;
public class TestVarargs {
private static int sum(in ...
自动装箱/拆箱大大方便了基本类型数据和它们包装类的使用。
自动装箱:基本类型自动转为包装类.(int >> Integer)
自动拆箱:包装类自动转为基本类型.(Integer >> int)
自动装箱/拆箱是针对8个原生数据类型以及它们对应的8个包装类来说的,针对于它们之间的这种关系来说的。
我们知道java里面只有8个原生数据类型不是对象,剩下的其他的全都是对象,这样就造成一种局面,有些时候我们需要将原生数据类型放入到集合里面去,这时候你就要new出来一个包装类型,把包装类型放进去,放进去之后然后进行操作,取出来,取出来之后再去调用对应的方法转换成 ...
泛型是JDK1.5中一个最重要的特征。通过引入泛型,我们将获得编译时类型的安全和运行时更小地抛出ClassCastException的可能。
在JDK1.5中,你可以声明一个集合将接收/返回的对象的类型。
泛型特点:只要编译的时候没有问题,执行的时候肯定没有问题。
泛型之前:
类别定义时的逻辑完全一样,只是里面成员变量的类型不同。
如果需要多个相似的类,需要定义多个文件,不同的只是变量的类型,而逻辑是完全一样的。
以后使用集合的时候必须要使用泛型(可以避免很多强制类型转换)
迭代器迭代过程中迭代器也要加上泛型
以下是各种集合类在遍历的时候使用泛型的标准写法,以后把这个作为标准都这么写 ...
下面讲解策略模式:
策略模式(Strategy Pattern)中体现了两个非常基本的面向面向对象涉及的原则:
--封装变化的概念
--编程中使用接口,而不是对接口的实现
策略模式的定义:
--定义一组算法,将每个算法都封装起来,并且使它们之间可以互换。
--策略模式使这些算法在客户端调用它们的时候能够互不影响地变化
策略模式的组成:
--抽象策略角色:策略类,通常由一个接口或者抽象类实现(例如Comporator接口)
--具体策略角色:包装了相关的算法和行为(例如Comporator接口的实现类)
--环境角色:持有策略类的引用,最终给客户端调用的(例如TreeSet或TreeMap, ...
标签库的作用和EL表达式的作用差不多,尽量减少jsp页面上的java代码量。
客户化JSP标签技术是在JSP1.1版本中才出现的,它支持用户在JSP文件中自定义标签,这样可以是JSP代码更加简洁。
这些可重用的标签能处理复杂的逻辑运算和事务,或者定义JSP网页的输出内容和格式。
创建客户化(自定义)JSP标签的步骤:
1、 创建标签的处理类。
2、 创建标签库描述文件。
3、 在JSP文件中引入标签库,然后插入标签,例如:<mm:hello/>
Servlet容器编译JSP网页时,如果遇到自定义标签,就会调用这个标签的处理类。
标签处理类必须扩展以下两个类之一:
--java ...