活动地址:CSDN21天学习挑战赛
文章目录
1.if 语句
- 语法格式1:
if(布尔表达式){
//语句;
}
- 语法格式2:
if(
布尔表达式){
// 语句1
}else{
// 语句2
}
- 语法格式3:
if(
布尔表达式1){
// 语句1
}else if(布尔表达式2){
// 语句2
}else{
// 语句3
}
2.switch 语句
- 基本语法:
switch(表达式){
case 常量值1:{
// 语句1;
break;
}
case 常量值2:{
//语句2;
break;
}
...
default:{
内容都不满足时执行语句;
[break;]//可要可不要
}
}
- 执行流程:
- 先计算表达式的值
- 和
case
依次比较,一旦有对应匹配的就指向指向该项语句,直到遇到break
停止。 - 当表达式的值没有与任何所列项匹配时,执行
default
。
- 例如🌰:
- 注意:
- 多个
case
后的常量值不可以重复 switch
的括号内只能是以下类型的表达式- 基本类型:
byte、char、short、int
,不能是long
类型 - 引用类型:
String
常量字符串、枚举类型。
- 基本类型:
switch
支持嵌套使用。
3.循坏结构
3.1 while 循坏
- 基本语法:
循环条件为
true
,则执行循坏语句,否则结束循坏。
while(循环条件){
循环语句;
}
3.2 break
break
的功能是让循坏提前结束(只能结束当前break
所在的一层循坏里)
3.3 continue
continue
:跳过这次循坏,立即进入下一次循坏
- 执行到
continue
语句的时候, 就会立刻进入下次循环(判定循环条件), 从而不会执行到下方的打印语句。
3.4 for循坏
- 基本语法:
for(表达式①;布尔表达式②;表达式③){
//语句④;
}
- 表达式1: 用于初始化循坏变量初始值,在循坏最开始时执行,且 执行一次
- 表达式2: 循环条件,满则循环继续,否则循环结束。
- 表达式3: 循环变量更新方式
- 执行过程: ①②③④—>②③④—>②③④—>②③④—>②③④—>②③④—>…—>②为false,循环结束。
4. 输入输出
4.1 输入
- 使用
Scanner
从键盘上读取字符串/整数/浮点数
2.使用Scanner
需要导入import java.util.Scanner; 包
- 例如🌰:循环输入
- 注意事项: 当循环输入多个数据的时候, 使用 ctrl + z 来结束输入 (Windows 上使用 ctrl + z, Linux / Mac 上使用 ctrl+ d) 。
4.2 输出
-
println
输出的内容自带\n
,print
不带\n
(\n
转义字符表示换行) -
printf
的格式输出方式和C语言的printf
基本如出一辙。
5. 方法
5.1 方法的定义
定义方法的格式:
修饰符 返回值类型 方法名称 (参数类型 参数){
//方法体;
return 返回值;
}
- 注意:
- 修饰符: 目前知识有限,直接使用
public static
固定搭配。 - 返回值类型: 如果方法有返回值,返回值类型必须与返回的类型一致,如果没有返回值,必须把返回值类型写成
void
。 - 方法名:采用小驼峰命名,如:
testAdd
- 参数列表:如果方法没有参数,
()
中什么也不写,如果有参数,需指定参数类型,多个参数之间使用逗号隔开。 - 方法体:方法内部要执行的语句。
- 在
java
中,方法必须写在类当中。 - 在
java
中,方法不能嵌套定义。 - 在
java
中,,没有方法声明。
5.2 方法调用
- 定义方法的时候,不会执行方法的代码,只有在
main
方法中调用的时候才会执行。 - 一个方法可以被多次调用。
5.3 实参和形参的关系
- 形参的名字可以随意取,形参只是方法在定义时需要借助的一个变量,用来保存方法在调用时传递过来的值。
- 实参的值永远都是拷贝到形参中,形参和实参本质是两个实体。
5.4 方法的重载
在
Java
中如果多个方法的名字相同,参数列表不同,则称该几种方法被重载了。
- 方法名必须相同。
- 参数列表必须不同:参数个数不同、参数的类型不同、参数的次序必须不同。(满足任意条件即可)
- 与返回值类型是否相同,没有关系。
6. 递归
概念:一个方法在执行的过程中,调用自身,就称为
“递归”
递归的必要条件:
- 将原有的问题划分为其子问题。(子问题必须要与原问题的解法相同,也就是大事化小)
- 递归要有结束条件。
- 调用栈:.
- 方法调用的时候,会有一个
栈
这样的内存空间描述,当前的调用关系,称为调用栈
- 每一次的方法调用就称为一个
栈帧
,每个栈帧
中包含了这次调用的参数是哪些,返回到哪里继续执行等信息。
- 例子🌰:递归求N的阶乘
5 阶乘:1×2×3×4×5=120.
- 画图理解🍊:
7. 数组
7.1 数组的创建、初始化及访问
数组的初始化分为:静态初始化和动态初始化。
类型[] 数组名 = {元素列表};//静态 创建并赋值
类型[] 数组名 = new int[10];//动态 创建10个int型内存
数组名 = {元素列表};//初始化
静态初始化:
类型[] 数组名 = {元素列表}
- 在创建数组时,不知道指定数据元素个数,而直接将具体的数据内容进行指定。
- 静态初始化虽然没有指定数组的长度,编译器在编译时会根据
{}
中元素的个数来确定长度。 {}
中数据类型必须与[]
前数据类型一致。- 静态初始化时可以简写,省去后面的
new int []
。 - 如果没有对数组进行初始化,数组中元素默认为
0
。 - 引用类型,默认值为
null
。
动态初始化
// 类型[] 数组名 = new 类型[];
int[] arr = new int[10]//开辟10个元素空间,先不赋值,后期可以再赋值,此谓动态
- 动态初始化时,在创建数组时,直接指定数组中的元素个数。
访问数组:
- 数组在内存中是一段连续的空间,下标都是从
0
开始,依次递增,可以通过下标访问数组合法长度内的任意元素。 - 数组可以通过
数组名.length
来获取数组的长度 - 数组是引用类型,数组名存放的是,元素在堆上开辟的空间地址
- 引用数据类型创建的变量,一般称为对象的引用,其空间中存储的是对象所在空间的地址。
- 引用变量并不直接存储对象本身,可以简单理解成存储的是对象在堆中空间的起始地址。通过该地址,引用变量便可以去操作对象。有点类似C语言中的指针。
- 数组是在堆上存取数据,那么就可以作为方法返回值,参数,从而修改
main
方法中数组的数据。 - 所谓
引用
,就是存了在堆区上的一个地址,进行方法传参时,只需要传一个地址,避免了对这个数组的拷贝重新开辟空间。
7.2 数组转成字符串
Java
中提供了Java.util.Arrays
包,其中包含了一些操作数组的常用方法。(有兴趣可以自己试一试)
数组转成字符串,就是用了这个包里的,Arrays.toString()
方法。
7.3 null
null
在java表示空引用,耶就是一个不指向对象的引用。- 当不知道给数组初始化为什么时,可以给数组初始化为
null
。 null
表示一个无效的地址,因此不能对这个内存进行任何读取操作,否则会抛出NullPointerException.
程序异常。null
和0
号地址没有任何联系。
记得三连喔~ 👍👍🏻👍🏿