day1
int a = 7 / 2;double b = 7 / 2;
这里先计算为3,然后再变为 double 3.0
double c = 7 / 2.0;这里运算数有小数,直接3.5
int age = 20;boolean isAdult = age >= 18;
这里后边 == 是判断是否相等的这里 boolean 的赋值
System.out.println("是否成年:" + isAdult);Java 中使用 + 来连接
System.out.println(5 + 2 + "Java");7Java
System.out.println("Java" + 5 + 2);Java52
Java 源代码(.java) ↓ javac 编译Java 字节码(.class) ↓ JVM 执行程序运行day2
最开头import java.util.Scanner;创建Scanner scanner = new Scanner(System.in);最末尾`Scanner` 使用了输入资源。小程序结束时,通常可以写:scanner.close();if 后端开发用途以后会在后端项目中用它判断:- 用户名和密码是否正确- 用户有没有操作权限- 参数是否有效- 数据是否存在- 任务是否已经完成
switch适合根据一个变量的不同确定值,执行不同操作 switch 和 if 的选择- 判断具体固定值:优先考虑 `switch`- 判断范围:通常使用 `if / else if`- 判断多个复杂条件:通常使用 `if / else`所以成绩范围适合 `if`,任务状态编号适合 `switch`实际后端项目经常需要处理订单状态、任务状态和用户角色。以后学习枚举后,会使用枚举进一步管理这些状态。
switch(status){case1:语句break;case2:default:}
综合条件判断1. && || !取反2. 字符串内容比较,字符串内容不要使用 `==`,应该使用 `equals()`:![[Pasted image 20260906170657.png]]```实际开发用途后端登录流程通常需要同时判断多个条件:用户名 correct? andPassword correctwrong user versus wrong passwordday3
循环嵌套循环在普通业务代码中没有集合遍历常见,但它能训练执行顺序和逻辑分析能力
实际开发用途后面会使用循环:- 处理多名学生的成绩- 遍历数据库查询结果- 批量处理任务- 计算统计结果- 检查一组数据
`while` 通常适合不知道需要执行多少次,只知道结束条件的情况:正确的循环通常需要让某些数据逐渐接近结束条件。后端开发用途真实 REST API 通常会直接拒绝一次无效请求,而不是在服务器中等待用户反复输入。不过 `while` 仍然会用于:- 持续处理消息- 重试某项操作- 批量读取数据- 任务调度- 满足条件前持续处理
- `while`:可能一次都不执行- `do-while`:至少执行一次
break continue实际开发用途`break` 常用于:- 找到目标数据后停止查找- 达到处理上限后停止- 满足退出条件后结束循环`continue` 常用于:- 跳过无效数据- 跳过不符合条件的记录- 只处理需要的数据
循环嵌套 - 外层循环控制有多少行- 内层循环控制每行执行多少次 执行体在内循环中`break` 结束当前所在的最近一层循环,而不一定结束程序中的所有循环。 后端开发用途嵌套循环可能用于:
- 比较两组数据- 处理表格中的行和列- 生成组合- 检查重复关系
面 `for` 把初始化、循环条件和更新操作集中写在一处,因此次数明确时通常更紧凑。
- `continue`:跳过本轮尚未执行的代码,进入下一次条件判断。- `break`:立即结束当前所在的最近一层循环。
`while` 中使用 `continue` 时,要确保控制循环的变量仍然能够更新。day4
数组【开发必须掌握】- 数组的声明、创建和访问- 索引与长度- 使用循环遍历数组- 避免数组越界- 把代码封装进方法`array.length` 和字符串相关方法的区别数组长度System.out.println(scores.length);因此访问最后一项可以写:scores[scores.length - 1]
注意数组使用属性:scores.length这里没有括号。常见数组用法:查找最大最小值条件计数 查找指定元素数组Java的二维数组本质上是“数组里面放数组”,不同的行甚至可以拥有不同长度遍历时,内层条件推荐写:column < scoreTable[row].lengthfor (int row = 0; row < scoreTable.length; row++) { for (int column = 0; column < scoreTable[row].length; column++) scoreTable[row].length表示第row行的列数
row 行 column 列
方法基础
方法不只能在 `main` 中调用,也可以在其他方法中调用;方法定义在类体中、不能嵌套在另一个方法里。
int[][] data = { {10, 20, 30}, {40, 50}, {60, 70, 80, 90}};data[0].length遍历内层数组时,为什么应该使用 `data[row].length`,而不是固定使用 `data[0].length`?并不会让程序只遍历第一行。外层循环仍然经过所有行,但它会把第一行的长度3错误地用于每一行:
- 遍历第二行时尝试访问索引2,第二行只有索引0、1,因此越界。- 遍历第三行时只处理前三项,漏掉最后的90。所以内层循环应该使用:column < data[row].lengthday5
数组初始化,int[] score=new int[num];或者int[] score = {, , }
今天学习:- 方法参数- 方法返回值- 方法重载- 变量作用域- Java基础综合练- 第一阶段阶段测试【开发必须掌握】- 把数据传入方法- 从方法取得计算结果- 正确设计方法职责- 判断变量在哪里可以使用【面试高频】- 参数和返回值的作用- 方法重载的判断条件- 局部变量的作用域- Java是值传递还是引用传递——后续再深入
模块一:方法参数 4. 为什么需要参数没有参数时,一个方法只能处理固定数据。有参数后,同一个方法可以处理:- 不同学生- 不同成绩- 不同任务编号- 不同用户输入实际后端中常见的形式:Controller把请求参数传给Service方法Service把查询条件传给数据库方法
模块二:方法返回值`return` 的核心优势不是决定“什么时候调用”,而是调用者能保存结果,并继续判断、计算、组合或选择如何显示模块三:方法重载
什么是方法重载在同一个类中,可以定义多个同名方法,但它们的参数列表必须不同。
为什么需要重载多个方法完成相似任务时,可以使用统一的方法名:
实际后端中可能出现:根据数字ID查询用户根据用户名查询用户
可以通过以下方式重载:- 参数数量不同- 参数类型不同- 参数类型顺序不同只改变参数名,不算重载:只改变返回值类型,也不算重载:Java 会根据调用时传入的参数选择对应方法。
Java判断方法重载主要看方法名和参数列表。返回值类型不参与重载判断。如果两个方法都是 `calculateTotal(int, int)`,即使一个返回 `int`、另一个返回 `double`,参数列表仍然相同,编译器无法区分,因此会报方法重复定义。
变量作用域
`return` 可以把计算结果交给调用者,但不一定必须用变量接收,也可以直接输出:使用变量接收的好处是之后还能继续计算、判断或多次使用。1-5
Scanner 是一个类,scanner 变量保存的是对象的引用:
Scanner scanner = new Scanner(System.in);可以分成四部分理解:
Scanner scanner new Scanner(System.in)变量的类型 变量名 创建对象 调用构造方法为什么数组需要 new
即使数组中保存的是 int,数组整体仍然属于引用类型:
int[] scores = new int[10];int[] scores:声明一个整数数组变量。new int[10]:真正创建一个包含10个位置的数组。