Java基础:随机数生成、循环结构与方法封装详解
一、随机数生成
1.1 Random类使用
import java.util.Random; |
public class RandomDemo { |
public static void main(String[] args) { |
Random random = new Random(); |
int randomNum = random.nextInt(100); // 生成0-99的随机整数 |
System.out.println("随机数:" + randomNum); |
} |
} |
关键点:
- 需要导入
java.util.Random
包 nextInt(bound)
参数指定上限(不包含)- 常见错误修正:变量名拼写、数据类型大小写
1.2 扩展应用场景
// 生成1-100的随机数 |
int num = random.nextInt(100) + 1; |
// 生成随机布尔值 |
boolean flag = random.nextBoolean(); |
二、循环结构
2.1 while循环
int count = 0; |
while (count < 5) { |
System.out.println("循环次数:" + (count+1)); |
count++; |
} |
执行流程:
- 先判断条件
- 条件为真时执行循环体
- 执行后重复条件判断
2.2 do-while循环
int num = 0; |
do { |
System.out.println("至少执行一次"); |
num++; |
} while (num < 3); |
与while的区别:
- 保证循环体至少执行一次
- 条件判断在循环体之后
三、方法封装
3.1 方法定义语法
[修饰符] 返回值类型 方法名(参数列表) { |
// 方法体 |
return 返回值; // 非void必须包含 |
} |
组成部分:
- 修饰符:public/private/static等
- 返回值类型:基本类型/引用类型/void
- 参数列表:形式参数(可选)
- return语句:结束方法并返回值
3.2 完整方法示例
public class MathUtils { |
// 生成指定范围的随机数 |
public static int generateRandom(int min, int max) { |
Random random = new Random(); |
return random.nextInt(max - min + 1) + min; |
} |
// 判断奇偶数 |
public static String checkOddEven(int num) { |
return (num % 2 == 0) ? "偶数" : "奇数"; |
} |
} |
3.3 方法调用方式
// 静态方法调用 |
int randNum = MathUtils.generateRandom(1, 100); |
String result = MathUtils.checkOddEven(randNum); |
// 非静态方法需要实例化对象 |
MathUtils utils = new MathUtils(); |
utils.nonStaticMethod(); |
四、提高代码复用性
4.1 代码复用示例
未封装版本:
// 生成三个随机数 |
int a = random.nextInt(100); |
int b = random.nextInt(100); |
int c = random.nextInt(100); |
封装后版本:
public static List<Integer> generateNumbers(int count) { |
List<Integer> list = new ArrayList<>(); |
Random random = new Random(); |
for (int i=0; i<count; i++) { |
list.add(random.nextInt(100)); |
} |
return list; |
} |
// 调用 |
List<Integer> nums = generateNumbers(3); |
4.2 方法封装优势
- 消除重复代码
- 降低维护成本
- 提高可测试性
- 增强可读性
五、常见问题
5.1 返回值类型匹配
// 错误示例:返回值类型与return值不匹配 |
public static double getPI() { |
return 3.14; // 正确:double类型 |
// return "3.14"; 错误:字符串无法赋值给double |
} |
5.2 参数传递机制
public static void changeValue(int num) { |
num = 100; // 不会改变原始值 |
} |
public static void changeArray(int[] arr) { |
arr[0] = 99; // 会改变原始数组 |
} |
总结:
- 基本类型参数传递值副本
- 引用类型参数传递对象引用
六、实践建议
- 遵循"高内聚低耦合"原则
- 单一职责原则:一个方法只做一件事
- 合理使用参数校验
- 为复杂方法添加注释说明
- 优先考虑使用标准库方法