当前位置: 首页 > news >正文

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++;
}

执行流程

  1. 先判断条件
  2. 条件为真时执行循环体
  3. 执行后重复条件判断

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 方法封装优势

  1. 消除重复代码
  2. 降低维护成本
  3. 提高可测试性
  4. 增强可读性

五、常见问题

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; // 会改变原始数组
}

总结

  • 基本类型参数传递值副本
  • 引用类型参数传递对象引用

六、实践建议

  1. 遵循"高内聚低耦合"原则
  2. 单一职责原则:一个方法只做一件事
  3. 合理使用参数校验
  4. 为复杂方法添加注释说明
  5. 优先考虑使用标准库方法
http://www.dtcms.com/a/268566.html

相关文章:

  • 国产MCU学习Day10——CW32F030C8T6模拟电压比较器全解析
  • 【EGSR2025】材质+扩散模型+神经网络相关论文整理随笔
  • springsecurity03--异常拦截处理(认证异常、权限异常)
  • 【机器学习深度学习】多分类评估策略:混淆矩阵计算场景模拟示例
  • Rust 注释
  • OpenAI要开发能聊天的AI版Office挑战微软?
  • 【Spring】Spring Boot + OAuth2 + JWT + Gateway的完整落地方案,包含认证流程设计
  • window 服务器上部署前端静态资源以及nginx 配置
  • 揭秘图像LLM:从像素到语言的智能转换
  • 创意Python爱心代码
  • 基于Flink 1.20、StarRocks与TiCDC构建高效数据处理链路教程
  • linux如何下载github的一个项目
  • stm32与tp-linkv2接线、解决识别不到芯片问题
  • C++ -- string类的模拟实现
  • Go的标准库http原理解析
  • 【论文阅读】Few-Shot PPG Signal Generation via Guided Diffusion Models
  • Web Worker:让前端飞起来的隐形引擎
  • 第0章:开篇词 - 嘿,别怕,AI应用开发没那么神!
  • 【PaddleOCR】数据合成工具 Style-Text安装与使用案例介绍
  • 【机器学习笔记 Ⅲ】3 异常检测算法
  • 4D-VLA:具有跨场景标定的时空视觉-语言-动作预训练
  • Linux运维安全新范式:基于TCPIP与SSH密钥的无密码认证实战
  • 【保姆级图文详解】探秘 Prompt 工程:AI 交互的关键密码
  • C++多线程网络编程:助力高并发服务器性能提升
  • 无人机精准降落辅助系统核心技术解析
  • 一文讲清楚React Fiber
  • RAG 相关概念学习
  • VMware 17.0.2-21581411 安装教程(附详细步骤+序列号激活指南)
  • 【牛客算法】 小红的奇偶抽取
  • kotlin+MongoTemplate的时间类型为is_date类型 pymongo如何处理