Java之while循环、do while循环、for循环、嵌套循环和控制循环结构

循环结构:

当反复执行这个循环体时,需要在合适的时候把循环条件改为假,从而结束循环,否则循环将一直执行下去,形成死循环

 while循环语句

  • //语法
    [init_statement]
    while(test_expression)
    {
        statement;
        [iteration_statement]
    }

    注意:先判断循环条件,如果循环条件为真则执行循环体

do while 循环

  •  

    //语法
    [init_statement]
    do
    {
        statement;
        [iteration_statement]
    }while(test_expression);

    注意:先执行循环体,然后才判断循环条件,如果循环条件为真,则执行下一次循环,否则终止循环,do while循环的循环条件后必须有一个分号,用来表示循环结束,其循环体至少执行一次。

for循环

  •  for循环语句简洁,大部分情况下可以代替while循环、do while循环
  • public class InstanceCounter
    {
    	private static int numInstances = 0;
    
    	protected static int getCount(){
    		return numInstances;
    	}
    	private static void addInstance(){
    		numInstances++;
    	}
    
    	InstanceCounter(){
    		InstanceCounter.addInstance();
    	}
    
    	public static void main(String[] arguments){
    		System.out.println("starting with " + InstanceCounter.getCount() +  " instance");
    		for(int i = 0; i < 500; ++i){
    			new InstanceCounter();
    		}
    		System.out.println("Created " + InstanceCounter.getCount() + " instances");
    	}
    }

                                                                                                                                                    注意:for循环里面定义的变量只能作用于循环内,for循环终止外无法访问。可以使用一个变量tmp来保存循环变量i的值,使得程序更加清晰

嵌套循环

 把一个循环放在另一个循环体内,就可以形成嵌套循环,嵌套循环既可以是for循环嵌套while循环,也可以是while循环嵌套do while循环等等

控制循环结构

  •  break:不管是哪种循环,一旦在循环体中遇到break,系统将完全结束该循环,开始执行循环后的代码。通常紧跟在break之后的标签,必须在break所在循环的外层循环之前定义才有意义
  • continue:忽略本次循环剩下的语句,接着开始下一次循环,并不会终止循环
    public class Continue {
    	public static void main(String[] args)
    	{
    		outer:
    			for(int i = 0 ; i < 5 ; i++)
    			{
    				for(int j = 0 ; j < 4 ; j++)
    				{
    					System.out.println("i的值为:" + i + " j的值为:" + j);
    					if(j == 1)
    					{
    						continue outer;
    					}
    				}
    			}
    	}
    }

                                                                                                                                                                  说明:continue后紧跟一个标签,用于直接跳过标签所标识循环的剩下语句,重新开始下一次循环。循环变量j的值将无法超过1,因为j等于1时,continue outer语句就结束了外层循环的档次循环,直接开始下一次循环,内层循环没有机会执行完成

  • return:结束一个方法,而不是专门用于结束循环的。一旦在循环体内执行到一个return语句,return语句就会结束该办法,询函自然也随之结束

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
顺序结构   •顺序结构就是程序从上到下一行一行地执行,间没有任何判断和跳转。   •如果main方法多行代码之间没有任何流程控制,则程序总是从上向下依次执行,排在前面的代码先执行,排在后 面的代码后执行。 分支结构Java提供了两种常见的分支控制结构: –if语句:使用布尔表达式或布尔值作为分支条件来进行分支控制。 –switch语句:用于对多个整型值进行匹配,从而实现分支控制。 if条件语句 •if条件语句的3种形式: • ▲ if (logic expression) { statements…} • ▲ if (logic expression) { statements…} • else { statements…} • ▲ if (logic expression) { statements…} • else if (logic expression) { statements…} • …//可以有0个或多个else if 语句 • else { statements…} //最后的else语句也可以省略 •注意:if、else、else if 后条件执行体要么是一个花括号括起来的语句块,则这个语句块整体作为条件执行体; 要么是以分号为结束符的一行语句,甚至可能是一个空语句(空语句就是一个分号)。 If语句常见的错误 •如果if、else、else if后的执行体只有一行语句时,则可以省略花括号,但我们最好不要省略花括号,因为保留花 括号会有更好的可读性,且还可以减少发生错误的可能。 •对于if 语句,还有一个很容易出现的逻辑错误,这个逻辑错误并不属于语法问题,但引起错误的可能性更大。如 后面程序TestIfError.java我们想打印的是年人,但打印出来的结果是青年人。 • 对于任何的if else 语句,表面上看起来else后没有任何条件,或者else if后只有一个条件,但这不是真相:因为 else的含义是“否则”,else本身就是一个条件!else 的隐含条件就是对前面条件取反。 switch分支语句 •可以省略case后代码块的花括号 ◆使用break;语句,防止case穿透 ◆default可以省略,但不推荐省略 ◆switch语句控制表达式的类型只能是byte、short、char、int、String(JDK7新增)和枚举 Switch语句容易导致的错误 •switch语句后的expression表达式的数据类型只能是byte、short、char、int、String类型和枚举; •小心省略了case后代码块的break;时所引入的陷阱。 循环结构Java支持3种基本的循环语句: –while 循环语句 –do while 循环语句 – for 循环语句 while & do while 循环语句 ★ while 循环的语法格式如下: [init_statements] while (test_expression) { statements; [iteration_statements] } ★ 执行过程:先判断逻辑表达式的值,若为true 则执行其后面的语句,然后再次判断条件并反复 执行,直到条件不成立为止。 ★ do while 循环的语法格式如下: [init_statements] do {   statements; [iteration_statements] }while (test_expression); ※注意:do while 循环循环条件必须有一个分 号,这个分号表明循环结束。 ★ 执行过程:先执行语句,再判断逻辑表达式的 值,若为true,再执行语句,否则结束循环 控制循环条件 •使用循环时,一定要保证循环条件有变成false的时候,如果循环条件永远为true,那就是死循环。使用while循   环时还有一个陷阱,while循环条件后紧跟一个分号。 •do while 循环语句里,即使test_expression循环条件的值开始是假,do while循环也会执行循环体。因此,   do while循环循环体至少执行一次。 本文原创作者:pipi-changing 本文原创出处:http://www.cnblogs.com/pipi-changing/ for 循环语句 •for ([inint_statements] ; [test_expression] ; [iteration_statements]){ statements } •★ 执行过程:首先计算表达式1,即init_statements,接着执行表达式2,即test_expression,若表达式2的 值为true,则执行语句(statements),接着执行表达式3,即iteration_statements,再判断表达式2的值; 依次重复下去,直到表达式的值=false,则结束for循环。因此,for循环循环条件(表达式2)比循环体(语 句)要多执行一次。 •注意:for循环循环迭代语句并没有与循环体放在一起,因此即使在执行循环体时遇到continue语句结束本次 循环循环迭代语句一样会得到执行。 for循环指定多个初始化语句 •for 循环允许同时指定多个初始化语句,循环条件也可以是一个包含逻辑运算符的表达式。但只能有一个声明语   句,因此如果需要在初始化表达式声明多个变量,那么这些变量应该有相同的数据类型。 •初学者使用for循环时也容易犯一个错误,他们以为只要在for后的括号内控制循环循环迭代语句就万无一失,   但实际情况则不是这样的。 for循环的分号 •for 循环圆括号只有两个分号是必须的,初始化语句、循环条件、迭代语句部分都可以省略,如果省略了循环   条件,则这个循环条件默认是true,将会产生一个死循环。 •使用for循环时,还可以把初始化条件定义在循环体之外,把循环迭代语句放在循环体内,这种做法将非常类似前   面的while循环嵌套循环 •各种基本类型的循环都可以作为外层循环,各种基本类型的循环也可以作为内层循环。 •假设外层循环循环次数为n次,内层循环循环次数为m次,那么内层循环循环体实际上需要执行n*m次。 •实际上,嵌套循环不仅可以是两层嵌套,还可以是三层嵌套,四层嵌套…… break语句 •break用于完全结束一个循环,跳出循环体。不管是哪种循环,一旦在循环遇到break,系统将完全结束循   环,开始执行循环之后的代码。 •break不仅可以结束其所在的循环,还可结束其外层循环。此时需要在break后紧跟一个标签,这个标签用于标 识一个外层循环Java的标签就是一个紧跟着英文冒号(:)的标识符。且它必须放在循环语句之前才有作用。 continue 语句 •continue的功能和break有点类似,区别是continue只是止本次循环,接着开始下一次循环。而break则是 完全循环。 return语句 • return关键字并不是专门用于跳出循环的,return的功能是结束一个方法。 •一旦在循环体内执行到一个return语句,return语句将会结束该方法,循环自然也随之结束。与continue和 break不同的是,return直接结束整个方法,不管这个return处于多少层循环之内。 数组类型 •在任何已有类型后加上方括号[ ],又变成一种新类型,这种类型统称为数组类型,所有的数组类型又称为引用类 型,所以又称引用类型。 •Java的数组要求所有数组元素具有相同的数据类型。因此,在一个数组,数组元素的类型是唯一的,即一个数 组里只能存储一种数据类型的数据,而不能存储多种数据类型的数据。 •一旦数组的初始化完成,数组在内存所占的空间将被固定下来,因此数组的长度将不可改变。即使把某个数组 元素的数据清空,但它所占的空间依然被保留,依然属于该数组,数组的长度依然不变。 •Java的数组既可以存储基本类型的数据,也可以存储引用类型的数据。 •值得指出的是:数组也是一种数据类型,它本身是一种引用类型。 定义数组 •Java语言支持两种语法格式来定义数组: –type[ ] arrayName; –type arrayName[ ]; •对于这两种语法格式,一般推荐使用第一种格式。因为第一种格式不仅具有更好的语意,也具有更好的可读性。 •数组是一种引用类型的变量,因此使用它定义一个变量时,仅仅表示定义了一个引用变量(也就是定义了一个指   针),这个引用变量还未指向任何有效的内存,因此定义数组时不能指定数组的长度。 •※注意:定义数组时不能指定数组的长度。 数组的初始化 •静态初始化:初始化时由程序员显式指定每个数组的初始值,由系统决定需要的数组长度。 •动态初始化:初始化时程序员指定数组长度,由系统为数组元素分配初始值 动态初始化 •arrayName = new type[ length]; 在上面的语法,需要指定一个int整型的length参数,这个参数指定了数组的长度,也就是可以容纳数组元素的 个数。 使用数组 •数组最常用的用法就是访问数组元素,包括对数组元素赋值和访问数组元素的值,访问数组元素是通过在数组引用变 量后紧跟一个方括号([ ]),方括号里是数组元素的索引值。 •Java语言的数组索引是从0开始的,也就是说,第一个数组元素的索引值为0,最后一个数组元素的索引为数组长度 减1。 •如果访问数组元素进指定的索引小于0,或者大于等于数组的长度,编译程序不会出现任何错误,但运行时出现异 常:java.lang.ArrayIndexOutOfBoundsException:2(数组索引越界异常),在这个异常提示信息后有一个int 整数,这个整数就是程序员试图访问的数组索引。 •所有数组都提供了一个length属性,通过这个属性可以访问到数组的长度,一旦获得了数组的长度后,就可以通过循 环来遍历该数组的每个数组元素。 JDK1.5 提供了foreach循环 •从JDK1.5 之后,Java提供了一种更简单的循环:foreach循环,这种循环遍历数组和集合更加简洁。使用 foreach循环遍历数组和集合元素时,无须获得数组和集合长度,无须根据索引来访问数组元素和集合元素, foreach循环自动遍历数组和集合的每个元素。 •当使用foreach循环来迭代输出数组元素或集合时,通常不要对循环变量进行赋值,虽然这种赋值在语法上是允 许的,但没有太大的意义,而且极容易引起错误。 深入数组 •数组元素和数组变量在内存里是分开存放的。 实际的数组元素是存储在堆(heap)内存;数组引用变量是一个引用类型的变量,被存储在栈(stack)内存 。 •如果堆内存数组不再有任何引用变量指向自己,则这个数组将成为垃圾,该数组所占的内存将会被系统的垃圾 回收机制回收。因此,为了让垃圾回收机制回收一个数组所占的内存空间,则可以将该数组变量赋为null,也就切 断了数组引用变量和实际数组之间的引用关系,实际数组也就成了垃圾。 数组长度不可变 •只要类型相互兼容,可以让一个数组变量指向另一个实际的数组,这种操作会产生数组的长度可变的错觉。 •但由于数组变量整体赋值导致的数组的长度可以改变,只是一个假相。 基本类型数组的初始化 •对于基本类型数组而言,数组元素的值直接存储在对应的数组元素,因此,初始化数组时,先为该数组分配内 存空间,然后直接将数组元素的值存入对应数组元素, TestPrimitiveArray 引用类型数组的初始化 引用类型数组的数组元素是引用,因此情况变得更加复杂:每个数组元素里存储的还是引用,它指向另一块内存, 这块内存里存储了有效数据。 没有多维数组 •Java语言提供了多维数组的语法,但多维数组实质上还是一维数组。 Java语言里的数组类型是引用类型,因此,数组变量其实是一个引用,这个引用指向真实的数组内存。数组元素 的类型也可以是引用,如果数组元素的引用再次指向真实的数组内存,这种情形看上去很像多维数组。 •定义二维数组的语法: •type[ ] [ ] arrName; TestTwoDimension 我们可以得到一个结论: 二维数组是一维数组,其数组元素是一维数组;三维数组也是一维数组,其数组元素是二维数组;四维数组还是一维数 组,其数组元素是三维数组……从这个角度来看,Java语言里没有多维数组。
适用人群: Java夜校班视频教程适合:java零基础编程入门学员,java编程爱好者、IT爱好者,跨行和跨专业的学员。 课程概述: 动力节点java夜校班视频教程特色: 1. 由浅入深、注重原理【现场画:内存分析图】。 2. 课程包含: JDK安装、开发环境搭建,java编程基础知识,分支语句、循环语句、封装、继承、多态等并配备相应练习题,希望对大家有所帮助。 PS:只做java是动力节点的战略布局,让每位初学者顺利入门是动力节点零基础班老师的使命,学员的顺利就业才是动力节点的荣耀,希望我们一起融入到java 的世界里,加油!!! 教程目录: (0);目录文件数:57个 ├─(1) 001-Java夜校视频教程-EditPlus安装及基本使用.avi ├─(2) 002-Java夜校视频教程-常用的快捷键.avi ├─(3) 003-Java夜校视频教程-计算机的组成.avi ├─(4) 004-Java夜校视频教程-软件的分类.avi ├─(5) 005-Java夜校视频教程-常见DOS命令.avi ├─(6) 006-Java夜校视频教程-Java语言发展史.avi ├─(7) 007-Java夜校视频教程-Java语言特点.avi ├─(8) 008-Java夜校视频教程-计算机语言发展史.avi ├─(9) 009-Java夜校视频教程-JDK的安装及环境变量的配置.avi ├─(10) 010-Java夜校视频教程-Java程序的组成部分.avi ├─(11) 011-Java夜校视频教程-Java程序输出语句.avi ├─(12) 012-Java夜校视频教程-Java程序注释.avi ├─(13) 013-Java夜校视频教程-public class和class区别.avi ├─(14) 014-Java夜校视频教程-回顾上次课所讲内容.avi ├─(15) 015-Java夜校视频教程-标识符.avi ├─(16) 016-Java夜校视频教程-关键字和保留字.avi ├─(17) 017-Java夜校视频教程-字面值.avi ├─(18) 018-Java夜校视频教程-进制及进制之间的转换.avi ├─(19) 019-Java夜校视频教程-变量.avi ├─(20) 020-Java夜校视频教程-变量常见的错误.avi ├─(21) 021-Java夜校视频教程-变量的分类.avi ├─(22) 022-Java夜校视频教程-基本数据类型.avi ├─(23) 023-Java夜校视频教程-数据类型之间的转换.avi ├─(24) 024-Java夜校视频教程-回顾上次课所讲内容.avi ├─(25) 025-Java夜校视频教程-课后练习题.avi ├─(26) 026-Java夜校视频教程-转义序列符.avi ├─(27) 027-Java夜校视频教程-算术运算符.avi ├─(28) 028-Java夜校视频教程-连接运算符.avi ├─(29) 029-Java夜校视频教程-赋值运算符.avi ├─(30) 030-Java夜校视频教程-关系运算符.avi ├─(31) 031-Java夜校视频教程-逻辑运算符.avi ├─(32) 032-Java夜校视频教程-三目运算符.avi ├─(33) 033-Java夜校视频教程-键盘输入.avi ├─(34) 034-Java夜校视频教程-回顾之前所讲内容.avi ├─(35) 035-Java夜校视频教程-课后练习题.avi ├─(36) 036-Java夜校视频教程-if.avi ├─(37) 037-Java夜校视频教程-随机数.avi ├─(38) 038-Java夜校视频教程-if else.avi ├─(39) 039-Java夜校视频教程-多重选择结构.avi ├─(40) 040-Java夜校视频教程-if嵌套.avi ├─(41) 041-Java夜校视频教程-嵌套if例题.avi ├─(42) 042-Java夜校视频教程-回顾之前所讲内容.avi ├─(43) 043-Java夜校视频教程-课后练习题.avi ├─(44) 044-Java夜校视频教程-switch case.avi ├─(45) 045-Java夜校视频教程-for循环.avi ├─(46) 046-Java夜校视频教程-for循环总结.avi ├─(47) 047-Java夜校视频教程-while循环.avi ├─(48) 048-Java夜校视频教程-do while循环.avi ├─(49) 049-Java夜校视频教程-循环使用break.avi ├─(50) 05-打Java夜校视频教程-印九九乘法表.avi ├─(51) 050-Java夜校视频教程-循环使用continue.avi ├─(52) 051-Java夜校视频教程-break与continue区别.avi ├─(53) 052-Java夜校视频教程-回顾上次课所讲内容.avi ├─(54) 053-Java夜校视频教程-课后练习题.avi ├─(55) 054-Java夜校视频教程-三种循环异同点.avi ├─(56) 055-Java夜校视频教程-双重循环.avi ├─(57) 056-Java夜校视频教程-打印等腰三角形.avi
第1章 编程语言与Java基础知识 1 1.1 编程语言基础知识 1 1.1.1 程序、软件与应用程序 1 1.1.2 编程语言的种类 2 1.1.3 低级语言 2 1.1.4 高级语言 3 1.1.5 程序是如何执行的 3 1.2 Java基础知识 6 1.2.1 Java平台 6 1.2.2 Java语言的版本 6 1.2.3 Java编程语言的特点 8 1.3 Java语言的开发环境 8 1.4 搭建Java开发环境 9 1.4.1 安装与设置JDK 9 1.4.2 安装与启动Eclipse IDE 12 习题 15 第2章 构建Java应用程序 16 2.1 如何构建应用程序 16 2.1.1 如何编写程序代码 16 2.1.2 程序设计的基础 17 2.1.3 算法 18 2.2 构建Java应用程序 19 2.2.1 构建第一个Java程序 19 2.2.2 使用Eclipse IDE构建第2个Java程序 21 2.2.3 使用书的范例项目 24 2.3 Java程序结构与基本输出 24 2.4 Eclipse IDE的项目管理与使用 26 2.4.1 切换工作空间 26 2.4.2 Eclipse IDE的项目管理 27 2.4.3 Eclipse IDE的基本使用 29 2.5 良好的Java程序代码编写风格 32 2.5.1 程序语句 32 2.5.2 程序块 33 2.5.3 程序注释 33 2.5.4 避免太长的程序代码 33 2.5.5 程序代码缩排 33 学习评估 34 第3章 变量、数据类型与运算符 35 3.1 变量与数据类型基础 35 3.2 变量的命名与声明 35 3.2.1 Java的命名语法 36 3.2.2 变量的声明 37 3.2.3 赋值语句 38 3.2.4 常量的声明与使用 40 3.3 Java的数据类型 40 3.3.1 整数类型 41 3.3.2 浮点型 42 3.3.3 布尔型 43 3.3.4 字符型 43 3.4 Java的表达式 45 3.4.1 运算符的优先级 46 3.4.2 算术运算符 46 3.4.3 递增和递减运算 48 3.4.4 关系与条件运算符 49 3.4.5 位运算符 51 3.4.6 指定运算符 54 3.5 数据类型的转换 54 3.5.1 宽化数据类型转换 54 3.5.2 窄化数据类型转换与类型转换运算符 56 习题 57 第4章 流程控制结构 58 4.1 流程控制与UML活动图 58 4.1.1 UML活动图 58 4.1.2 流程控制的种类 59 4.2 程序块与控制台基本输入 60 4.2.1 程序块 60 4.2.2 控制台的基本输入 62 4.3 条件控制语句 63 4.3.1 if条件语句 63 4.3.2 if/else条件语句 64 4.3.3 switch条件语句 65 4.3.4 ?:条件运算符 68 4.4 循环控制语句 69 4.4.1 for循环语句 69 4.4.2 前测式的while循环语句 71 4.4.3 后测试的do/while循环语句 72 4.4.4 break和continue关键字 73 4.5 嵌套循环 74 习题 76 第5章 类方法 78 5.1 过程与函数基础 78 5.2 类方法 78 5.2.1 创建Java类方法 79 5.2.2 类方法的参数传递 81 5.2.3 类方法的返回值 83 5.2.4 值传递与引用传递 84 5.3 类变量和变量作用域 86 5.3.1 Java的类变量 86 5.3.2 Java的变量作用域 87 5.4 递归程序设计 89 5.4.1 递归方法概述 89 5.4.2 递归的阶乘函数 89 5.5 Math类及其类方法 91 5.5.1 求随机数、最大和最小值 91 5.5.2 Math类的数学常量和方法 92

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值