目录
一、逻辑控制
1、分支结构(if、switch)
(1)if语句 的判断条件只能是布尔表达式( 结果是true和false,没有零和非零!)
(2)switch语句 括号内只能是以下类型的表达式:
基本类型 | byte、char、short、int( 不能是long!) |
引用类型 | String常量串、枚举类型 |
(3)不要遗漏 break 喔
2、循环结构(while、for、do while)
(1)while循环 的判断条件只能是布尔表达式( 结果是true和false,没有零和非零!)
(2)do while循环 最后的分号不要忘记
二、输入输出
1、输出
(1)基本语法
System.out.println(); //输出并且换行
System.out.print(); //仅输出
System.out.printf(); //类似C语言的输出
(2)printf 输出到控制台(还有很多,没必要记,需要的时候上CSDN查查就好啦)
转换符 | 类型 | 举例 | |
b | 布尔值 | ("%b",100) | true |
h | 散列码 | ("%h",100) | 64 |
% | 百分号 | ("%.2f%%",9.99f) | 9.99% |
2、输入
(1)循环输入格式
当循环输入多个数据的时候, idea 上使用 ctrl + d 来结束输入 (Windows 上使用 ctrl + z, Linux / Mac 上使用 ctrl + d)。
//IDEA 2022
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNextInt()){ //输入 3 这就是循环输入
int num = sc.nextInt();
System.out.println(num); //输出 3
}
}
}
三、方法
1、自定义方法
与C语言的 “函数” 类似。
public class Test {
public static void main(String[] args) {
System.out.println(add(2, 3));
}
//自定义方法
public static int add(int a,int b){
return a + b;
}
}
【注意】
- 修饰符:现阶段直接使用public static 固定搭配
- 返回值类型:如果方法有返回值,返回值类型必须要与返回的实体类型一致,如果没有返回值,必须写成 void
- 方法名字:采用小驼峰命名
- 参数列表:如果方法没有参数,()中什么都不写,如果有参数,需指定参数类型,多个参数之间使用逗号隔开
- 方法体:方法内部要执行的语句
- 在java当中,方法必须写在类当中
- 在java当中,方法不能嵌套定义
- 在java当中,没有方法声明一说
2、传值调用和传址调用
2.1 传值调用
Java的传值调用跟C语言类似,实参的值永远都是拷贝到形参中,形参和实参本质是两个实体
可以参考C 深入指针(1)-CSDN博客中传值调用部分。
2.2 传址调用
Java并没有&取地址操作符这些,那如果需要交换两个值该如何做呢?
Java中通过:传引用类型参数 (例如数组来解决这个问题)
public class TestMethod {
public static void main(String[] args) {
int[] arr = {10, 20}; //交换 arr[0] 和 arr[1] 的值
swap(arr);
System.out.println("arr[0] = " + arr[0] + " arr[1] = " + arr[1]);
}
public static void swap(int[] arr) {
int tmp = arr[0];
arr[0] = arr[1];
arr[1] = tmp;
}
}
//输出结果
//arr[0] = 20 arr[1] = 10
3、重载
在Java中,如果多个方法的名字相同,参数列表不同,则称该几种方法被重载了。
public class Test {
public static void main(String[] args) {
System.out.println(add(2, 3));
System.out.println(add(2.1, 3.9));
}
public static int add(int a,int b){
return a + b;
}
public static double add(double a,double b){
return a + b;
}
}
【注意】
- 方法名必须相同
- 参数列表必须不同(参数的个数不同、参数的类型不同、类型的次序必须不同)
- 与返回值类型是否相同无关
4、方法签名
在同一个作用域中不能定义两个相同名称的变量。比如:方法中不能定义两个名字一样的变量,那为什么类中就可以定义方法名相同的方法呢?
方法签名即:经过编译器编译修改过之后方法最终的名字。
具体方式:方法全路径名+参数列表+返回值类型,构成方法完整的名字。
3.1 具体操作
先对工程进行编译生成.class字节码文件,编译(Run)之后,跟着下面走
一直点下去,直到看到Test.class
输入:javap -v 字节码文件名字即可,比如我的是输入 javap -v Test
3.2 特殊符号说明
特殊字符 | 数据类型 |
V | void |
Z | boolean |
B | byte |
C | char |
S | short |
I | int |
J | long |
F | float |
D | double |
[ | 数组(以[开头,配合其他的特殊字符,表述对应数据类型的数组,几个[表述几维数组) |
L | 引用类型,以L开头,以;结尾,中间是引用类型的全类名 |
5、递归
有个例子可以很好的理解递归(反正就是自己调用自己)
//记得放在 类 中才能运行
//求 N 的阶乘
public static int funcN(int N){
if(N == 1){
return 1;
}
return N*funcN(N-1);
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
System.out.println(funcN(N));
}
完