【JavaSE笔记】——逻辑控制 if、for、while、输入输出、方法、递归、一维数组、二维数组


活动地址: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;]//可要可不要
}
}
  • 执行流程:
  1. 先计算表达式的值
  2. case 依次比较,一旦有对应匹配的就指向指向该项语句,直到遇到break停止。
  3. 当表达式的值没有与任何所列项匹配时,执行default
  • 例如🌰:
    在这里插入图片描述
  • 注意:
  1. 多个case后的常量值不可以重复
  2. switch 的括号内只能是以下类型的表达式
    • 基本类型byte、char、short、int,不能是long类型
    • 引用类型String常量字符串、枚举类型。
  3. switch支持嵌套使用。

3.循坏结构

3.1 while 循坏

  • 基本语法:

循环条件为true,则执行循坏语句,否则结束循坏。

while(循环条件){
循环语句;
}

在这里插入图片描述

3.2 break

break的功能是让循坏提前结束(只能结束当前break所在的一层循坏里)

在这里插入图片描述

3.3 continue

continue:跳过这次循坏,立即进入下一次循坏

  • 执行到 continue 语句的时候, 就会立刻进入下次循环(判定循环条件), 从而不会执行到下方的打印语句。

在这里插入图片描述

3.4 for循坏

  • 基本语法:
for(表达式①;布尔表达式②;表达式③){
	//语句④;
}
  1. 表达式1: 用于初始化循坏变量初始值,在循坏最开始时执行,且 执行一次
  2. 表达式2: 循环条件,满则循环继续,否则循环结束。
  3. 表达式3: 循环变量更新方式
  4. 执行过程: ①②③④—>②③④—>②③④—>②③④—>②③④—>②③④—>…—>②为false,循环结束。

在这里插入图片描述

4. 输入输出

4.1 输入

  1. 使用Scanner从键盘上读取字符串/整数/浮点数
    2.使用Scanner 需要导入import java.util.Scanner; 包

在这里插入图片描述

  • 例如🌰:循环输入

在这里插入图片描述

  • 注意事项: 当循环输入多个数据的时候, 使用 ctrl + z 来结束输入 (Windows 上使用 ctrl + z, Linux / Mac 上使用 ctrl+ d) 。

4.2 输出

  • println输出的内容自带\nprint不带\n\n转义字符表示换行)
  • printf的格式输出方式和C语言的printf基本如出一辙。

在这里插入图片描述

5. 方法

5.1 方法的定义

定义方法的格式:

修饰符 返回值类型 方法名称 (参数类型 参数){
	//方法体;
	return 返回值;
}
  • 注意:
  1. 修饰符: 目前知识有限,直接使用public static固定搭配。
  2. 返回值类型: 如果方法有返回值,返回值类型必须与返回的类型一致,如果没有返回值,必须把返回值类型写成void
  3. 方法名:采用小驼峰命名,如:testAdd
  4. 参数列表:如果方法没有参数,()中什么也不写,如果有参数,需指定参数类型,多个参数之间使用逗号隔开。
  5. 方法体:方法内部要执行的语句。
  6. java中,方法必须写在类当中。
  7. java中,方法不能嵌套定义。
  8. java中,,没有方法声明。

在这里插入图片描述

5.2 方法调用

  • 定义方法的时候,不会执行方法的代码,只有在main方法中调用的时候才会执行。
  • 一个方法可以被多次调用。

在这里插入图片描述

5.3 实参和形参的关系

  1. 形参的名字可以随意取,形参只是方法在定义时需要借助的一个变量,用来保存方法在调用时传递过来的值。
  2. 实参的值永远都是拷贝到形参中,形参和实参本质是两个实体。

5.4 方法的重载

Java中如果多个方法的名字相同,参数列表不同,则称该几种方法被重载了。

  1. 方法名必须相同。
  2. 参数列表必须不同:参数个数不同、参数的类型不同、参数的次序必须不同。(满足任意条件即可)
  3. 与返回值类型是否相同,没有关系。

在这里插入图片描述

6. 递归

概念:一个方法在执行的过程中,调用自身,就称为“递归”
递归的必要条件:

  1. 将原有的问题划分为其子问题。(子问题必须要与原问题的解法相同,也就是大事化小)
  2. 递归要有结束条件
  • 调用栈:.
  1. 方法调用的时候,会有一个这样的内存空间描述,当前的调用关系,称为调用栈
  2. 每一次的方法调用就称为一个栈帧,每个栈帧中包含了这次调用的参数是哪些,返回到哪里继续执行等信息。
  • 例子🌰:递归求N的阶乘

5 阶乘:1×2×3×4×5=120.

在这里插入图片描述

  • 画图理解🍊:

在这里插入图片描述

7. 数组

7.1 数组的创建、初始化及访问

数组的初始化分为:静态初始化和动态初始化。

类型[] 数组名 = {元素列表};//静态 创建并赋值
类型[] 数组名 = new int[10];//动态 创建10个int型内存
数组名 = {元素列表};//初始化

静态初始化:

类型[] 数组名 = {元素列表}

在这里插入图片描述

  1. 在创建数组时,不知道指定数据元素个数,而直接将具体的数据内容进行指定。
  2. 静态初始化虽然没有指定数组的长度,编译器在编译时会根据{}中元素的个数来确定长度。
  3. {}中数据类型必须与[]前数据类型一致。
  4. 静态初始化时可以简写,省去后面的new int []
  5. 如果没有对数组进行初始化,数组中元素默认为0
  6. 引用类型,默认值为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.程序异常。
  • null0号地址没有任何联系。

在这里插入图片描述

记得三连喔~ 👍👍🏻👍🏿

  • 20
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 23
    评论
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bushi橙子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值