Java选择结构与循环结构的使用详解

 更新时间:2022年04月06日 17:15:24   作者:Teror  
循环结构是指在程序中需要反复执行某个功能而设置的一种程序结构。它由循环体中的条件,判断继续执行某个功能还是退出循环,选择结构用于判断给定的条件,根据判断的结果判断某些条件,根据判断的结果来控制程序的流程

前言

大家了解了Java中的变量、数据类型和运算符后,小编给大家介绍使用选择结构和循环结构解决问题。

一.选择结构

1.1 if选择结构的四种格式

1.1.1 基本if语句—单分支判断

	if(比较表达式){
		语句体;
	}
	/*
		执行流程是:判断比较表达式中的值,是true还是false,
		
		如果是true就执行大括号内的语句体,执行完语句体后会继续向下执行
		如果是false,就直接向下执行,不会执行大括号里面的语句体
	*/

1.1.2 基本if语句—双分支判断

	if(表达式){
		语句体1
	}else{
		语句体2
	}
	语句3
	/*
		执行流程是:判断比较表达式中的值,是true还是false,
		
		如果是true就执行语句1,执行完语句体1后会向下执行语句3;
		如果是false就执行else里面的语句2,执行完语句体2后继续向下执行语句3;
	*/

1.1.3 多重if语句

	if(表达式1){
		语句1
	}else if(表达式2){
		语句2
	}
	......
	else{
		语句n+1
	}
	语句n+2
	/*
		执行流程是:判断比较表达式中的值,是true还是false,
		
		如果是true执行语句1,执行完语句体1后会向下执行语句n+2
		
		如果是false就继续判断表达式2的值是true还是false,
		是true就执行比较表达式2后的语句体2,
		是false就继续向下在做比较表达式n的判断,
		
		直到所有else if里面的比较表达式值都是false,就执行else后的语句体
	*/

1.1.4 嵌套if语句

	if(表达式1){
		语句1
		if(表达式2){
			语句2
		}else{
			语句3
		}
	}else{
		语句4
	}
	语句5
	/*
		执行流程是:判断比较表达式中的值,是true还是false,
		
		如果是true执行语句1   再判断比较表达式2中的值,
		如果是true就执行语句2,执行完语句体2后会向下执行语句5
		如果是false就执行语句3,执行完语句体3后会向下执行语句5
		
		如果是false就执行语句4,执行完语句体4后会向下执行语句5
	*/

注意事项

  • 比较表达式不管简单还是复杂,结果都是boolean类型;
  • if语句控制的语句体如果是一条语句,大括号可以省略。
  • else后面如果没有if,是不会出现比较表达式的。
  • 四种if语句其实都是一个语句,只要有一个执行其他的都不执行。

1.2 switch选择结构

	switch(表达式){
		case 值1:
			语句1;
			break;
		case 值2:
			语句2;
			break;
		......
		default:
			语句n+1;
			break;
	}
	/*
		switch是关键字,声明一个switch语句。
		switch支持的数据类型:
			基本数据类型:byte, short, char, int
			包装数据类型:Byte, Short, Character, Integer
			枚举类型:Enum
			字符串类型:String(Jdk 7+ 开始支持)
			
		case:后面的值就是要和表达式进行比较的值;
		break:表示程序到这里中断,跳出switch语句;
		default:如果所有的情况都不匹配,就执行这里,相当于if语句中的else;
	*/

switch语句执行流程

  • 首先计算表达式的值。
  • 和每一个case进行匹配,如果有就执行对应的语句体,看到break就结束。
  • 如果没有匹配,就执行default的语句体n+1。

switch选择结构支持的数据类型

  • jdk1.5以前,只能是byte、short、int、char类型
  • jdk1.5以后,引入了枚举类型(enum类型)、包装数据类型(Byte、Short、Integer、Character)
  • jdk1.7以后,支持String类型,String类有一个hasCode方法,结果也是返回int类型

实际上,Switch在底层实现,目前只支持整型数据类型

注意事项

  • case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的
  • default可以省略,但是不建议,因为它的作用是对不正确的情况给出提示。
  • 遇到break或执行到最后就结束判断。

二.循环结构

2.1 while循环结构

public static void main(String[] args){
	//基本循环体:
	int i=0;
	while(i<=10){
		System.out.println(i);
		i++;
		//输出结果:0,1,2,3,4,5,6,7,8,9,10
	}
|
	where(循环条件){
		循环体语句;
	}
	//扩展循环体:
	where(循环条件){
		循环体语句;
		控制条件语句(break;continue;)
	}	

2.2 do-while循环结构

//基本循环体:
public static void main(String[] args){
	int i=0;
	do{
		System.out.println(i);
		i++;
		//输出结果:0,1,2,3,4,5,6,7,8,9,10
	}while(i>=10)
}
	do{
		循环体语句
	}while(循环条件)
//扩展循环体:
	do{
		循环体语句
		控制条件语句(break;continue;)
	}while(循环条件)	

2.3 for循环结构

public static void main(String[] args){
	for(int i=0;i<=10;i++){
		System.out.println(i);
		//输出结果:0,2,3,4,5,6,7,8,9,10
	}
}	
	
	for(初始化;条件判断;迭代部分){
		循环体语句;
	}
	
	执行流程:
		1:执行初始化语句
		2:执行判断条件语句
			如果这里是true,就继续
			如果这里是false,循环就结束
		3:执行循环体语句
		4:执行迭代部分语句
		5:回到判断条件

2.4 for-each循环结构

public static void main(String[] args){
	int[] array = {1,2,3,4,5,6,7};
	for(int i : array){
		System.out.println(i);
		//输出结果:1,2,3,4,5,6,7
	}
}	
	
	for(元素类型 元素名称 : 遍历对象){
		循环操作;
	}
	
}

注意事项

  • 判断条件语句无论简单还是复杂,结果是boolean类型。
  • 循环体语句如果是一条,可以省略大括号,但是不建议。
  • 有分号就没有左大括号,有左大括号就没有分号。
  • 一定要修改控制条件,否则会出现死循环。
  • 在解决问题时,对于循环次数确定的情况,通常选用for循环结构;对于循环结构次数不确定的情况,通常选用while和do-while循环结构。
  • for-each增强for循环在遍历数组过程中不能修改数组中某元素的值。
  • for-each仅适用于遍历,不涉及有关索引(下标)的操作。

执行循序

  • while循环结构:先进行条件判断,再进行循环体。如果条件不成立,退出循环。
  • do-while循环结构:先进行条件判断,循环体至少执行一次。
  • for循环结构:先执行初始化部分,再进行条件判断,然后执行循环体,最后进行迭代部分的计算。如果条件不成立,跳出循环。
  • for-each循环结构:先定义变量,在把数组赋值给变量,在进行遍历。

三.控制语句

(1)break:中断的意思

A:用在循环和switch语句中,离开此应用场景无意义。

B:作用

  • a:跳出单层循环
  • b:跳出多层循环,需要标签语句的配合

(2)continue:继续

A:用在循环中,离开此应用场景无意义。

B:作用

  • a:跳出单层循环的一次,可以继续下一次

(3)return:返回

A:用于结束方法的。

B:一旦遇到return,方法就不会在继续往后执行。

小结:在循环结构中break语句用于终止某个循环,程序跳转到循环体外的下一条语句.

continue语句用于跳出本次循环,进入下一次循环的语句

以上就是Java选择结构与循环结构的使用详解的详细内容,更多关于Java 选择结构 循环结构的资料请关注脚本之家其它相关文章!

相关文章

  • Java中ThreadLocal避免内存泄漏的方法详解

    Java中ThreadLocal避免内存泄漏的方法详解

    ThreadLocal是Java中的一个线程本地存储机制,它允许每个线程拥有一个独立的本地存储空间,用于存储该线程的变量,本文主要介绍了ThreadLocal如何避免内存泄漏,需要的朋友可以参考下
    2023-05-05
  • Java自动拆箱空指针异常的解决

    Java自动拆箱空指针异常的解决

    这篇文章主要介绍了Java自动拆箱空指针异常的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • SpringBoot整合Xxl-Job的完整步骤记录

    SpringBoot整合Xxl-Job的完整步骤记录

    这篇文章主要给大家介绍了关于SpringBoot整合Xxl-Job的完整步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • jvm之java类加载机制和类加载器(ClassLoader)的用法

    jvm之java类加载机制和类加载器(ClassLoader)的用法

    这篇文章主要介绍了jvm之java类加载机制和类加载器(ClassLoader)的用法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • 轻轻松松吃透Java并发fork/join框架

    轻轻松松吃透Java并发fork/join框架

    fork/join是一个工具框架 ,本文详细的介绍了fork/join框架的具体使用,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • 关于Spring自定义XML schema 扩展的问题(Spring面试高频题)

    关于Spring自定义XML schema 扩展的问题(Spring面试高频题)

    今天给大家分享一道spring高频率面试题关于Spring自定义XML schema 扩展的问题,今天以spring整合dubbo的实例给大家详细讲解下,感兴趣的朋友跟随小编一起看看吧
    2021-05-05
  • Java二维数组实现数字拼图效果

    Java二维数组实现数字拼图效果

    这篇文章主要为大家详细介绍了Java二维数组实现数字拼图效果,控制台可以对空格进行移动,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • 使用jpa原生sql@Query操作增删改查

    使用jpa原生sql@Query操作增删改查

    这篇文章主要介绍了使用jpa原生sql@Query操作增删改查,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • 全面解析Java中的HashMap类

    全面解析Java中的HashMap类

    HashMap类为Java提供了键值对应的map类型,本文将从源码角度全面解析Java中的HashMap类,同时包括其各种常用操作方法等,欢迎参考与借鉴
    2016-05-05
  • 图解如何在Spring Boot中使用JSP页面

    图解如何在Spring Boot中使用JSP页面

    这篇文章主要介绍了图解如何在Spring Boot中使用JSP页面,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07

最新评论