🐵本篇文章将对Java的分支结构、循环结构以及方法的部分知识点进行讲解
Java的分支结构、循环结构和C语言基本一致,这里只做简单介绍
1. 分支结构↔️
1.1 if语句
if (布尔表达式) {
...
} else if (布尔表达式) {
...
} else {
...
}
if () {
if () {
...
} else {
...
}
}
else只和最近的if匹配
1.2 switch语句
switch(表达式) {
case 常量值1:{
语句1;
break;
}
case 常量值2:{
语句2;
break;
}default:{
内容都不满足时执行语句;
break;}
switch括号内的表达式类型只能是:1.基本类型:byte、char、short、int;2.引用类型:String常量串、枚举类型
2. 循环结构🔁
2.1 while循环
while(布尔表达式) {
循环语句;
}
2.2 for循环
for(表达式①;布尔表达式②;表达式③) {
表达式④;
}
2.3 do while循环
do {
循环语句;
} while(循环条件);
3. 输出与输入
3.1 输出到控制台
System.out.println(输出内容); //输出内容自带'\n'
System.out.print(输出内容); //输出内容不带'\n'
System.out.printf("输出格式", 输出内容); //和C语言用法基本一致
int a = 10;
System.out.println(a);
System.out.print(a);
System.out.printf("%d\n", a);
3.2 从键盘输入
1. 单个输入
import java.util.Scanner; //导包,相当于C语言的头文件
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);//scan是自己命名的
int num = scan.nextInt(); //输入一个整数
float f = scan.nextFloat(); //输入一个小数
String s = scan.nextLine(); //输入一行字符串
scan.close(); //Scanner使用完后要调用关闭方法
}
2. 循环输入
public static void main(String[] args)
Scanner sc = new Scanner(System.in);
while(sc.hasNextInt()) { //这里是以输入int型数据为例
int num = sc.nextInt();
System.out.println(num);
}
}
Scanner的用法前期先这样记,后期会进行讲解
4. 方法
4.1 方法的定义
修饰符 返回值类型 方法名称(参数类型 形参, ...){
方法体代码;
return 返回值; //如果返回类型为void,则不写return,或者可以写成return;
}
1. 修饰符现阶段先用public static
2. 在Java中方法必须写在类当中、方法不能嵌套定义
3. 方法没有声明这一说法,所以方法写在main方法前还是main方法后都可以,前提是在类中
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
int ret = add(a, b); //方法的调用,a、b为实参
System.out.println(ret);
}
public static int add(int x, int y) { //x、y为形参
return x + y;
}
4.2 形参和实参
public static void main(String[] args) {
int a = 10;
int b = 20;
swap(a, b);
}
public static void swap(int x, int y) {
int tmp = x;
x = y;
y = tmp;
}
和C语言一样,方法的形参是实参的一份临时拷贝,在上述代码中,只是将a和b的值传给了形参x和y,因此在swap方法中交换x和y的值并不会影响a和b
4.3 方法的重载
两个方法的方法名相同,而方法的参数列表(形参的类型、个数、顺序至少有一项不同)不同时,称这两种方法被重载了
public static void main(String[] args) {
int a = 1;
int b = 2;
System.out.println(add(a, b));
double c = 1.0;
double d = 2.0;
System.out.println(add(c, d));
}
public static int add(int x, int y) {
return x + y;
}
public static double add(double x, double y) {
return x + y;
}
5. 递归
5.1 递归定义
在一个方法内部调用自身的过程称作递归
比如下面的代码:求3!
public static void main(String[] args) {
System.out.println(fac(3)); //打印结果为6
}
public static int fac(int n) {
if (n == 1) {
return 1;
}
int tmp = n * fac(n - 1); //在fac方法中调用了自身
return tmp;
}
5.2 递归过程:
方法在不断调用自己的过程就是"递"的过程,在这一过程会不断在栈上创建函数栈帧,在"归"的过程就是不断销毁函数栈帧的过程