java基础1
java基础
一、Scanner学习
1. 接收用户输入数据的方法
- next():获取一个字符串
- nextLine():获取一整行字符串
2. 判断用户是否有数据输入的方法
- hasNext():检查是否有非空字符
- hasNextLine():检查输入中是否还有linePattern
3. 建议方案
采用hasNextXxxx() 的话,后面也要用nextXxxx():
- 前面用
hasNextLine(),那么后面要用nextLine()来处理输入; - 前面要使用
hasNext(),那么后面要用nextInt()来处理输入。
二、结构
1. 顺序结构
2. 选择结构
- if 结构
if (条件表达式) {
语句块;
}
- if-else结构
if (表达式) {
语句块1;
} else {
语句块2;
}
- 多条件 if-else-if 语句
if(表达式1) {
语句块1;
} else if(表达式2) {
语句块2;
...
} else if(表达式n) {
语句块n;
} else {
语句块n+1;
}
- if嵌套使用
if(表达式1) {
if(表达式2) {
语句块1;
} else {
语句块2;
}
} else {
if(表达式3) {
语句块3;
} else if(表达式4) {
语句块4;
} else {
if(表达式n) {
语句块n;
} else {
语句块n+1;
}
}
}
- switch选择结构
switch(表达式) {
case 值1:
语句块1;
break;
case 值2:
语句块2;
break;
…
case 值n:
语句块n;
break;
default:
语句块n+1;
break;
}
3. 循环结构
- while循环
while(条件表达式) {
语句块;
}
- do-while循环
do {
语句块;
}while(条件表达式);
while 循环和 do-while 循环的不同处如下:
- 语法不同:与 while 循环相比,do-while 循环将 while 关键字和循环条件放在后面,而且前面多了 do 关键字,后面多了一个分号。
- 执行次序不同:while 循环先判断,再执行。do-while 循环先执行,再判断。
- 一开始循环条件就不满足的情况下,while 循环一次都不会执行,do-while 循环则不管什么情况下都至少执行一次。
- for循环
for(条件表达式1;条件表达式2;条件表达式3) {
语句块;
}
| 表达式 | 形式 | 功能 | 举例 |
|---|---|---|---|
| 条件表达式 1 | 赋值语句 | 循环结构的初始部分,为循环变量赋初值 | int i=1 |
| 条件表达式 2 | 条件语句 | 循环结构的循环条件 | i>40 |
| 条件表达式 3 | 迭代语句,通常使用 ++ 或 -- 运算符 | 循环结构的迭代部分,通常用来修改循环 变量的值 | i++ |
for 循环语句执行的过程为:
首先执行条件表达式 1 进行初始化,然后判断条件表达式 2 的值是否为 true,如果为 true,则执行循环体语句块;否则直接退出循环。最后执行表达式 3,改变循环变量的值,至此完成一次循环。接下来进行下一次循环,直到条件表达式 2 的值为 false,才结束循环。
for 语句中初始化、循环条件以及迭代部分都可以为空语句(但分号不能省略),三者均为空的时候,相当于一个无限循环。
for、do-while、while三者区别
| 名称 | 概念 | 适用场景 | 特点 |
|---|---|---|---|
| for | 根据循环次数限制做多少次重复操作 | 适合循环次数是已知的操作 | 初始化的条件可以使用局部变量和外部变量使用局部变量时,控制执行在 for 结束后会自动释放,提高内存使用效率。且变量在 for 循环结束后,不能被访问。先判断,再执行 |
| while | 当满足什么条件的时候,才做某种操作 | 适合循环次数是未知的操作 | 初始化的条件只能使用外部变量,且变量在 while 循环结束后可以访问先判断,再执行 |
| do-while | 先执行一次,在判断是否满足条件 | 适合至少执行一次的循环操作 | 在先需要执行一次的情况下,代码更加简洁。先执行一次,再判断 |
- 增强for循环
for(类型 变量名:集合) {
语句块;
}
三个注意点
- break:表示跳出当前层循环
- continue:表示跳出本次循环,进入下一次循环
- return:跳出当前方法的循环
三、方法重载
1. 定义
重载就是在一个类中,有相同的函数名,但形参不同的函数
2. 方法重载规则
- 方法名称必须相同
- 参数列表必须不同(个数不同、参数类型不同、参数排列顺序不同)
四、可变参数
public static void main(String[] args) {
double result = method(new double[]{1, 2, 3});
System.out.println(result);
}
public static double method(double... numbers) {
if (numbers.length == 0) {
System.out.println("您为输入值");
}
double max = numbers[0];
for (double number : numbers) {
if (number > max) {
max = number;
}
}
return max;
}
五、递归
包括两部分
- 递归头:什么时候不调用自身。如果没有头,则将陷入死循环
- 递归体:什么时候调用自身方法
public static void main(String[] args) {
int result = method(5);
System.out.println(result);
}
public static int method(int num) {
if (num == 1) {
return 1;
}
return num*method(num-1);
}
注意:递归一般选择数据比较小的数

浙公网安备 33010602011771号