第三天:基本数据类型、引用数据类型以及循环结构和流程控制

第三天 基本数据类型、引用数据类型以及循环结构和流程控制
今日内容介绍
引用数据数据类型(Scanner)
流程控制语句(if,switch,for,while,break,continue)
第1章流程控制语句
1.1 顺序结构
顺序结构是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的
总的来说:写在前面的先执行,写在后面的后执行

public class ShunXuDemo{
public static void main(String[] args){
System.out.println(“第一步”);
System.out.prinktln(“第二步”);
System.out.println(“最后一步”);
}
}
1.2 选择结构
选择结构也被称为分支结构,选择结构有特定的语法规则,代码要执行具体的逻辑运算进行判断,逻辑运算的结果有两个,所以产生选择,按照不同的选择执行不同的代码
1.2.1if语句
接下来要学习的if条件语句分为三种语法格式,每一种格式都有它自身的特点,下面我们分别进行介绍。
if语句是指如果满足某种条件,就进行某种处理。例如,小明妈妈跟小明说“如果你考试得了100分,星期天就带你去游乐场玩”。这句话可以通过下面的一段伪代码来描述。
如果小明考试得了100分
妈妈星期天带小明去游乐场
在上面的伪代码中,“如果”相当于Java中的关键字if,“小明考试得了100分”是判断条件,需要用()括起来,“妈妈星期天带小明去游乐场”是执行语句,需要放在{}中。修改后的伪代码如下:
if (小明考试得了100分) {
妈妈星期天带小明去游乐场
}
上面的例子就描述了if语句的用法,在Java中,if语句的具体语法格式如下:
if (条件语句){
执行语句;
……
}
上述格式中,判断条件是一个布尔值,当判断条件为true时,{}中的执行语句才会执行。if语句的执行流程如下图所示。

接下来通过一段代码,学习一下if语句的具体用法,IfDemo01.java
public class IfDemo01 {
public static void main(String[] args) {
int x = 5;
if (x < 10) {
x++;
}
System.out.println(“x=” + x);
}
}

在上述代码中,定义了一个变量x,其初始值为5。在if语句的判断条件中判断x的值是否小于10,很明显条件成立,{}中的语句会被执行,变量x的值将进行自增。从运行结果可以看出,x的值已由原来的5变成了6。
1.2.2if…else语句
if…else语句是指如果满足某种条件,就进行某种处理,否则就进行另一种处理。例如,要判断一个正整数的奇偶,如果该数字能被2整除则是一个偶数,否则该数字就是一个奇数。if…else语句具体语法格式如下:
if (判断条件){
执行语句1
……
}else{
执行语句2
……
}
上述格式中,判断条件是一个布尔值。当判断条件为true时,if后面{}中的执行语句1会执行。当判断条件为false时,else后面{}中的执行语句2会执行。

接下来通过一段代码,来实现判断奇偶数的程序,IfDemo02.java
public class IfDemo02 {
public static void main(String[] args) {
int num = 19;
if (num % 2 == 0) {
// 判断条件成立,num被2整除
System.out.println(“num是一个偶数”);
} else {
System.out.println(“num是一个奇数”);
}
}
}

上述代码中,变量num的值为19,模以2的结果为1,不等于0,判断条件不成立。因此会执行else后面{}中的语句,打印“num是一个奇数”。

1.2.3if…else if…else语句
if…else if…else语句用于对多个条件进行判断,进行多种不同的处理。例如,对一个学生的考试成绩进行等级的划分,如果分数大于80分等级为优,否则,如果分数大于70分等级为良,否则,如果分数大于60分等级为中,否则,等级为差。if…else if…else语句具体语法格式如下:
if (判断条件1) {
执行语句1
} else if (判断条件2) {
执行语句2
}

else if (判断条件n) {
执行语句n
} else {
执行语句n+1
}
上述格式中,判断条件是一个布尔值。当判断条件1为true时,if后面{}中的执行语句1会执行。当判断条件1为false时,会继续执行判断条件2,如果为true则执行语句2,以此类推,如果所有的判断条件都为false,则意味着所有条件均未满足,else后面{}中的执行语句n+1会执行。if…else if…else语句的执行流程如下图所示。

接下来通过一段代码,来实现对学生考试成绩进行等级划分的程序,
从键盘录入一个成绩进行判断,根据要求打印结果:
成绩在[0,60)打印该成绩为差
成绩在[60,70)打印该成为中
成绩在[70,80)打印该成绩为良
成绩在[80,100]打印该成绩为优
public class IFDemo {
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
int score=scan.nextInt();
if(score>=0 && score<60){
System.out.println(“打印成绩为差”);
}else if(score>=60 && score<70){
System.out.println(“打印成绩为中”);
}else if(score>=70 && score<80){
System.out.println(“打印成绩为良”);
}else if(score>=80 && score<=100){
System.out.println(“打印成绩为优”);
}
}
}
1.3选择结构switch
switch 条件语句也是一种很常用的选择语句,它和if条件语句不同,它只能针对某个表达式的值作出判断,从而决定程序执行哪一段代码。例如,在程序中使用数字1~7来表示星期一到星期天,如果想根据某个输入的数字来输出对应中文格式的星期值,可以通过下面的一段伪代码来描述:
用于表示星期的数字
如果等于1,则输出星期一
如果等于2,则输出星期二
如果等于3,则输出星期三
如果等于4,则输出星期四
如果等于5,则输出星期五
如果等于6,则输出星期六
如果等于7,则输出星期天
对于上面一段伪代码的描述,大家可能会立刻想到用刚学过得if…else if…else语句来实现,但是由于判断条件比较多,实现起来代码过长,不便于阅读。Java中提供了一种switch语句来实现这种需求,在switch语句中使用switch关键字来描述一个表达式,使用case关键字来描述和表达式结果比较的目标值,当表达式的值和某个目标值匹配时,会执行对应case下的语句。具体实现代码如下:
switch(用于表示星期的数字) {
case 1 :
输出星期一;
break;
case 2 :
输出星期二;
break;
case 3 :
输出星期三
break;
case 4 :
输出星期四;
break;
case 5 :
输出星期五;
break;
case 6:
输出星期六;
break;
case 7:
输出星期天;
break;
}

上面改写后的伪代码便描述了switch语句的基本语法格式,具体如下:
switch (表达式){
case 目标值1:
执行语句1
break;
case 目标值2:
执行语句2
break;
......
case 目标值n:
执行语句n
break;
default:
执行语句n+1
break;
}
在上面的格式中,switch语句将表达式的值与每个case中的目标值进行匹配,如果找到了匹配的值,会执行对应case后的语句,如果没找到任何匹配的值,就会执行default后的语句。switch语句中的break关键字将在后面的做具体介绍,此处,我们只需要知道break的作用是跳出switch语句即可。
需要注意的是,在switch语句中的表达式只能是byte、short、char、int类型的值,如果传入其它类型的值,程序会报错。但上述说法并不严谨,实际上在JDK5.0中引入的新特性enum枚举也可以作为switch语句表达式的值,在JDK7.0中也引入了新特性,switch语句可以接收一个String类型的值。
所有的switch能够实现代码功能,多重if一定能实现
多重if的适用场景:区间范围判断
适用场景:等值判断,
1、switch(变量)变量的数据类型只能是:byte/short/int/char/String–JDK1.7
2、case后面的常量不能发生重复!!!!!
3、case后面的常量一定与switch中的变量数据类型一致!!!

1.4数据类型转换
分为两类:
自动类型转换(又叫隐式类型转换):小范围的数据类型往大范围存,整数类型往小数类型存,自动转换。系统自动完成
char自动转换为int
自动类型转换的情况有 :
byte->short int long float double
short->int long float double
int-> long float double
long->float double
float–>double

char–>int

强制类型转换(又叫显式类型转换):大范围的数据类型往小范围存,小数类型往整数类型存,强制转换。开发人员实现
int强制类型转换为char
强制类型转换语法:目标类型 变量名=(目标类型)源类型;
发生数据类型转换前提:数据类型必须兼容。 数值之间可以发生数据类型转换
整数:byte-1 short-2 int-4 long-8
浮点:float-4 double-8

1.5选择结构switch练习
接下来通过一个案例演示根据数字来输出中文格式的星期,如下所示。SwitchDemo01.java
public class SwitchDemo01 {
public static void main(String[] args) {
int week = 5;
switch (week) {
case 1:
System.out.println(“星期一”);
break;
case 2:
System.out.println(“星期二”);
break;
case 3:
System.out.println(“星期三”);
break;
case 4:
System.out.println(“星期四”);
break;
case 5:
System.out.println(“星期五”);
break;
case 6:
System.out.println(“星期六”);
break;
case 7:
System.out.println(“星期天”);
break;
default:
System.out.println(“输入的数字不正确…”);
break;
}
}
}

上述代码中,由于变量week的值为5,整个switch语句判断的结果满足第17行的条件,因此打印“星期五”,例程中的default语句用于处理和前面的case都不匹配的值,将第3行代码替换为int week = 8

1.6循环结构
1.6.1循环语句while
while循环语句和选择结构if语句有些相似,都是根据条件判断来决定是否执行大括号内的执行语句。区别在于,while语句会反复地进行条件判断,只要条件成立,{}内的执行语句就会执行,直到条件不成立,while循环结束。while循环语句的语法结构如下:
while(循环条件){
执行语句
………
}
在上面的语法结构中,{}中的执行语句被称作循环体,循环体是否执行取决于循环条件。当循环条件为true时,循环体就会执行。循环体执行完毕时会继续判断循环条件,如条件仍为true则会继续执行,直到循环条件为false时,整个循环过程才会结束。
while循环的执行流程如下图所示。

接下来通过一段代码,来实现打印1~4之间的自然数,WhileDemo.java
public class WhileDemo {
public static void main(String[] args) {
int x = 1; // 定义变量x,初始值为1
while (x <= 4) { // 循环条件
System.out.println("x = " + x); // 条件成立,打印x的值
x++; // x进行自增
}
}
}

在上述代码中,x初始值为1,在满足循环条件x <= 4的情况下,循环体会重复执行,打印x的值并让x进行自增。因此打印结果中x的值分别为1、2、3、4。
大家要注意的是,代码x++用于在每次循环时改变变量x的值,从而达到最终改变循环条件的目的。如果没有这行代码,整个循环会进入无限循环的状态,永远不会结束。
1.6.2循环语句for
for循环语句是最常用的循环语句,一般用在循环次数已知的情况下。for循环语句的语法格式如下:
for(初始化表达式; 循环条件; 操作表达式){
执行语句
………
}
在上面的语法结构中,for关键字后面()中包括了三部分内容:初始化表达式、循环条件和操作表达式,它们之间用“;”分隔,{}中的执行语句为循环体。
接下来分别用①表示初始化表达式、②表示循环条件、③表示操作表达式、④表示循环体,通过序号来具体分析for循环的执行流程。具体如下:
for(① ; ② ; ③){

}
第一步,执行①
第二步,执行②,如果判断结果为true,执行第三步,如果判断结果为false,执行第五步
第三步,执行④
第四步,执行③,然后重复执行第二步
第五步,退出循环
接下来通过一个案例对自然数1~4进行求和,如下所示。ForDemo01.java
public class ForDemo01 {
public static void main(String[] args) {
int sum = 0; // 定义变量sum,用于记住累加的和
for (int i = 1; i <= 4; i++) { // i的值会在1~4之间变化
sum += i; // 实现sum与i的累加
}
System.out.println("sum = " + sum); // 打印累加的和
}
}

上述代码中,变量i的初始值为1,在判断条件i<=4为true的情况下,会执行循环体sum+=i,执行完毕后,会执行操作表达式i++,i的值变为2,然后继续进行条件判断,开始下一次循环,直到i=5时,条件i<=4为false,结束循环,执行for循环后面的代码,打印“sum=10”。
为了让初学者能熟悉整个for循环的执行过程,现将上述代码运行期间每次循环中变量sum和i的值通过表2-11罗列出来。
表2-1sum和i循环中的值
循环次数 sum i
第一次 1 1
第二次 3 2
第三次 6 3
第四次 10 4
1.6.2.1for循环案例 for循环实现1-5之间数据求和

/*

  • 需求:求出1-5之间数据之和
  • 分析:
  •  A:定义求和变量,初始化值是0
    
  •  B:获取1-5之间的数据,用for循环实现
    
  •  C:把每一次获取到的数据,累加起来就可以了
    
  •  D:输出求和变量即可
    

*/
public class ForTest2 {
public static void main(String[] args) {
//定义求和变量,初始化值是0
int sum = 0;

	//获取1-5之间的数据,用for循环实现
	for(int x=1; x<=5; x++) {
		//把每一次获取到的数据,累加起来就可以了
		//sum = sum + x;
		/*
		 * 第一次:sum = 0 + 1 = 1
		 * 第二次:sum = 1 + 2 = 3
		 * 第三次:sum = 3 + 3 = 6
		 * 第四次:sum = 6 + 4 = 10
		 * 第五次:sum = 10 + 5 = 15
		 */
		sum += x;
	}
	
	//输出求和结果
	System.out.println("sum:"+sum);
}

}
1.6.2.2for循环实现1-10之间偶数和
package com.itheima_04;
/*

  • 需求:求出1-10之间偶数和
  • 分析:
  •  A:定义求和变量,初始化值是0
    
  •  B:获取1-10之间的数据,用for循环实现
    
  •  C:把获取到的数据进行判断,看是否是偶数
    
  •  	如果是,就累加
    
  •  D:输出求和结果
    

*/
public class ForTest3 {
public static void main(String[] args) {
//定义求和变量,初始化值是0
int sum = 0;

	//获取1-100之间的数据,用for循环实现
	for(int x=1; x<=10; x++) {
		//把获取到的数据进行判断,看是否是偶数
		if(x%2 ==0) {
			sum += x;
		}
	}
	
	//输出求和结果
	System.out.println("sum:"+sum);
}

}

1.6.3无限循环
最简单无限循环格式:
while(true){}

for(;😉{}
无限循环存在的原因是并不知道循环多少次,而是根据某些条件,来控制循环。
1.7跳转语句(break、continue)
跳转语句用于实现循环执行过程中程序流程的跳转,在Java中的跳转语句有break语句和continue语句。接下来分别进行详细地讲解。
1、break语句
当break出现在循环语句中,作用是跳出循环语句,执行后面的代码,接下来通过下面一段代码,实现将当变量x的值为3时,使用break语句跳出循环,代码如下所示。BreakDemo.java
public class BreakDemo {
public static void main(String[] args) {
int x = 1; // 定义变量x,初始值为1
while (x <= 4) { // 循环条件
System.out.println("x = " + x); // 条件成立,打印x的值
if (x == 3) {
break;
}
x++; // x进行自增
}
}
}
运行结果如下图所示。

图1-11运行结果
在上述带代码中,通过while循环打印x的值,当x的值为3时使用break语句跳出循环。因此打印结果中并没有出现“x=4”。
2、continue语句
continue语句用在循环语句中,它的作用是终止本次循环,执行下一次循环。接下来通过一个练习对1~100之内的奇数求和,ContinueDemo.java
public class ContinueDemo {
public static void main(String[] args) {
int sum = 0; // 定义变量sum,用于记住和
for (int i = 1; i <= 100; i++) {
if (i % 2 == 0) { // i是一个偶数,不累加
continue; // 结束本次循环
}
sum += i; // 实现sum和i的累加
}
System.out.println("sum = " + sum);
}
}

上述代码中,使用for循环让变量i的值在1100之间循环,在循环过程中,当i的值为偶数时,将执行continue语句结束本次循环,进入下一次循环。当i的值为奇数时,sum和i进行累加,最终得到1100之间所有奇数的和,打印“sum = 2500”。
在嵌套循环语句中,continue语句后面也可以通过使用标记的方式结束本次外层循环,用法与break语句相似,在此不再举例说明。

需要免费的java基础视频和java企业级开发视频以及项目实战(包含SSM框架详细讲解、activiti流程引擎、springboot、springcloud视频讲解和项目实战课程)可以添加qq:1743337375

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值