Scanner对象
- 可以通过Scanner类获取用户输入
- 基本语法:
Scanner sc = new Scanner(System.in);
- 通过Scanner类的next()和nextLine()方法获取输入的字符串,在读取前一般需要使用hasNext()与hasNextLine()判断是否还有输入的数据。
next()
- 一定要读取到字符后才可以结束输入。
- 对输入有效字符前遇到的空白,next()方法会自动将其去掉。
- 只有输入有效字符后才将其后面的空白作为分隔符或者结束符。
next()不能得到带有空格的字符串。
nextLine()
- 以Enter为结束符,返回输入回车前的所有字符。
- 可以获取空白。
close()
每次使用完Scanner类记得Scanner.close();
可以节约内存。
对数据类型要求
例如:
nextInt();要求输入整数,对应的有hasNextInt();
nextFloat();要求输入小数,对应的有hasNextFloat();
以此类推……
顺序结构
按照顺序依次执行
if选择结构
if单选择结构
语法:
if(布尔表达式){
//如果布尔表达式为true时要执行的语句
};
if双选择结构
语法:
if(布尔表达式){
//如果布尔表达式为true时要执行的语句
}else{
//如果布尔表达式为false时要执行的语句
};
if多选择结构
语法:
if(布尔表达式1){
//如果布尔表达式1为true时要执行的语句
}else if(布尔表达式2){
//如果布尔表达式2为true时要执行的语句
}else if(布尔表达式3){
//如果布尔表达式3为true时要执行的语句
……
……
……
}else{
//如果以上所有布尔表达式为false时要执行的语句
};
嵌套的if结构
允许套娃
switch多选择结构
switch case语句判断一个变量与一系列值中的某个值是否相等,每个值称为一个分支。
变量类型可以是byte、short、int、char或者字符串。
语法:
int a=new Scanner(System.in).nextInt();
switch (a){
case 1:
System.out.println("输入的1");
break;
case 2:
System.out.println("输入的2");
break;
case 3:
System.out.println("输入的3");
break;
default:
System.out.println("输入其他");
}
循环结构
while循环
语法:
while (循环条件布尔表达式){
//循环体执行的语句
}
只要布尔表达式的值为true就会一直执行
应该避免死循环
do……while循环
do {
//循环体执行的语句
}while (循环条件布尔表达式);
区别在于会至少会先执行 1次 后,再判断是否循环执行
for循环
已知循环次数的情况下选for循环
语法:
for(初始化;布尔表达式;迭代){
//执行的代码
}
for循环可以嵌套
示例九九乘法表:
for (int i=1;i<=9;i++){
for (int j = 1; j <= i; j++) {
System.out.print(j+"*"+i+"="+j*i+" ");
}
System.out.println("\n");
}
增强for循环
一般用来遍历数组
语法:
for(声明语句:表达式){
//执行的代码
}
示例遍历数组:
int[] array = {1, 2, 3, 4, 5};
for (int x : array) {
System.out.println(x);
}
break和continue
break结束整个循环
continue退出本次循环
方法
Java方法是语句的集合,它们在一起执行一个功能。
一个方法只完成1个功能,有利于后期的扩展。
方法的定义
- 修饰符:可选如public
- 返回值类型:如void
- 方法名:驼峰原则命名
- 参数类型:
- 形参:在方法被调用时用于接收外界输入的数据
- 实参:调用方法时实际传递给方法的数据
- 方法体:方法体具体语句,实现方法的功能
修饰符 返回值类型 方法名(参数类型 参数名){
……
方法体
……
return 返回值;
}
方法的调用
有返回值的当作赋值变量来传参调用
无返回值的直接调用
方法的重载
重载就是在一个类中,有相同的函数名称,但形参不同的函数
方法重载的规则:
- 方法名称必须相同
- 参数列表必须不同(个数不同或类型不同,排列不同也算)
- 方法的返回类型可以相同也可以不同
- 仅仅返回类型不同不足以成为方法的重载
可变参数
在方法声明中,在指定参数类型后加一个…号。
可变参数必须是方法的最后一个参数
方法的递归调用
递归就是方法自己调用自己
递归结构包括两部分:
- 递归头:什么时候不调用自身方法,如果没有递归头将陷入死循环
- 递归体:什么时候需要调用自身方法
常用与阶乘:
public static int f(int n) {
if (n == 1) {
return 1;
} else {
return n * f(n - 1);
}
}