### JAVA笔记知识点详解
#### 一、Java.util.Random 类与随机数生成
在Java中,`java.util.Random` 类提供了一种方式来生成各种类型的随机数。这些随机数可以是整数、浮点数等基本数据类型。下面详细介绍如何使用 `Random` 类。
**1.1 创建 `Random` 对象**
```java
Random rand = new Random(); // 使用默认种子创建随机数生成器
```
**1.2 生成不同类型的随机数**
- **整数 (Integers)**
```java
int i = rand.nextInt(); // 获取一个随机整数
int n = 10;
i = rand.nextInt(n + 1); // 获取一个介于 0 和 n 之间的随机整数
```
- **字节数组 (Byte Arrays)**
```java
byte[] bytes = new byte[5];
rand.nextBytes(bytes); // 填充一个随机字节数组
```
- **布尔值 (Booleans)**
```java
boolean b = rand.nextBoolean(); // 获取一个随机布尔值
```
- **长整型 (Longs)**
```java
long l = rand.nextLong(); // 获取一个随机长整数
```
- **浮点数 (Floats)**
```java
float f = rand.nextFloat(); // 获取一个介于 0.0 和 1.0 之间的随机浮点数
```
- **双精度浮点数 (Doubles)**
```java
double d = rand.nextDouble(); // 获取一个介于 0.0 和 1.0 之间的随机双精度浮点数
```
**1.3 重复性随机数生成**
为了使随机数生成具有可重复性,可以使用相同的种子来创建两个 `Random` 对象:
```java
long seed = rand.nextLong();
rand = new Random(seed);
Random rand2 = new Random(seed);
```
这确保了 `rand` 和 `rand2` 生成的随机序列相同。
#### 二、对象类型转换
在Java中,将一个 `Object` 类型的对象转换为特定类型(如 `Boolean`)可以通过类型强制转换来实现。以下代码演示了如何将一个 `Object` 类型的返回值转换为 `Boolean` 类型:
```java
public boolean addAction(final LoginData_DWR loginData_DWR, final UserData_DWR userData_DWR) {
TransactionTemplate transactionTemplate = new TransactionTemplate(this.transactionManager);
Object object = transactionTemplate.execute(new TransactionCallback() {
public Object doInTransaction(TransactionStatus status) {
// ... 其他代码 ...
return flag; // 返回布尔值
}
});
return ((Boolean) object).booleanValue(); // 强制转换为 Boolean 并返回其值
}
```
#### 三、字符串分割与处理
在Java中,可以使用 `StringTokenizer` 类来将一个字符串分割成一系列子字符串(通常是单词)。下面的示例展示了如何使用 `StringTokenizer` 来处理字符串:
```java
String aString = "word1 word2 word3";
StringTokenizer parser = new StringTokenizer(aString);
while (parser.hasMoreTokens()) {
String token = parser.nextToken();
processWord(token); // 处理每个单词
}
```
这里,`processWord` 方法可以根据具体需求来定义,用于处理分割出的每个单词。
#### 四、创建自定义事件
在Java中,可以创建自定义事件机制以便在不同的类之间传递消息。这通常涉及到定义事件类、监听器接口以及注册和触发事件的逻辑。
**4.1 定义事件类**
事件类通常继承自 `java.util.EventObject`,并包含特定的信息。
```java
public class MyEvent extends EventObject {
public MyEvent(Object source) {
super(source);
}
}
```
**4.2 定义监听器接口**
监听器接口通常继承自 `java.util.EventListener`,并定义了一个或多个方法来响应事件。
```java
public interface MyEventListener extends EventListener {
public void myEventOccurred(MyEvent evt);
}
```
**4.3 注册和通知事件**
为了使某个类能够接收和处理事件,需要实现监听器接口,并将该实例注册到事件源。此外,事件源需要能够触发事件,通知所有已注册的监听器。
```java
// 示例:注册监听器
MyEventListener listener = new MyEventListener() {
@Override
public void myEventOccurred(MyEvent evt) {
// 处理事件
}
};
eventSource.addMyEventListener(listener);
// 示例:触发事件
eventSource.fireMyEventOccurred(new MyEvent(eventSource));
```
通过这种方式,可以轻松地在Java程序中实现事件驱动的架构。以上就是关于 `java.util.Random` 类的使用、对象类型转换、字符串分割处理以及自定义事件创建的主要知识点。