流程控制和数组

  不管是哪种编程语言,都有两种流程控制结构:分支结构和循环结构。分支结构用于实现根据条件来选择性的执行某段代码,循环结构则用于实现根据循环条件重复执行

某段代码。Java也提供了这两种流程控制结构,Java提供了if和switch两种分支语句;提供了while、do while和for三种循环语句。还有一种用于遍历的循环,使用foreach循环可以遍历集合、数组的元素。

一、分支结构

1.1if条件语句  

  if语句使用布尔表达式或布尔值作为分支条件来进行分支控制。

使用if...else语句时,一定要处理包含范围更小的情况。

1.2switch分支语句

  switch语句后面的控制表达式的数据类型只能是byte、short、int、long四种整数类型,在Java7之后能够支持string和枚举类型;使用switch分支语句时需要注意到case后代码块的break。

二、循环结构

  循环语句在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体。当反复执行这个循环体,需要在合适的时候把循环条件改为假,从而把循环结束,否则

循环将一直执行下去,形成死循环。

2.1while循环语句

while(test_expression){

  statement(iteration_statement)

}

2.2do while循环语句

do{

  statement;(iteration_statement)

}while(test_expression)

2.3for循环

for([init_statement];[test_expression];[iteration_statement]){

  statement;

}

2.4控制循环结构

使用break结束循环:某些时候需要在某种条件出现时强行终止循环,而不是等到循环条件为false的时候才终止循环。break用于结束一个循环,跳出循环体。不管是哪种循环,一旦在循环体中

遇到了break,系统将完全结束该循环,开始执行循环后的代码。

使用continue忽略本次循环剩下语句:continue是忽略本次循环剩下语句,接着开始下一次循环,并不会终止循环;而break是终止循环本身。

使用return结束方法:并不是专门用于结束循环的,return的功能是结束一个方法。

三、数组

  数组时编程语言中常见的一种数据结构,可以用于存储数据,每个数组元素放一个数据,通常可以通过数组元素的索引去访问数组元素,也可以为数组元素赋值和取出数组元素的值。

3.1数组特性

  数组也是一种类型:Java数组的数组元素具有相同的数据类型,一个数组里只能存储一种数据类型的数据,不能存储多种数据类型的数据。一旦数组的初始化完成,数组在内存中所占的空间将被

固定下来,因此数组的长度将不可改变。即使把某个数组元素的数据清空,但它所占的空间依然被保留,依然属于该数组,数组的长度依然不变。

  定义一个数组:type [ ] arrayName;数组是一种引用类型的变量,所以使用它定义一个变量时,仅仅表示定义了一个引用变量(也就是定义了一个指针,但是没有任何意义)。这个引用变量还没有指向

任何有效的内存,因此定义数组时不能指定数组的长度。只有对数组进行初始化后才可以使用。

  数组的初始化:Java语言中数组必须先初始化,才可以使用。初始化就是为数组的数组元素分配内存空间,并且为每个数组元素赋初始值。

数组的初始化有两种方式:

  1. 静态初始化:初始化时由程序员显式的为每个数组元素赋予初始值,由系统决定数组长度。arrayname=new type[]{element1,element2,element3};type[] arrayname={element1,element2};

2.动态初始化:初始化程序员只指定数组长度,由系统为每个数组元素分配初始值。arrayname=new type[length];

3.2foreach循环

  foreach循环是用来循环遍历集合和数组的,十分方便。不用获取数组和集合长度,无须根据索引来访问数组元素和集合元素,foreach循环自动遍历数组和集合的每个元素。

语法格式如下:for(type variableName: array|collection){

  自动迭代访问每个数组元素...

}

三、深入了解数组

  数组是一种引用数据类型,数组引用变量只是一个引用,数组元素和数组变量在内存里是分开存放的。下面将介绍数组在内存中的运行机制。

3.1内存中的数组

  数组引用变量只是一个引用,这个引用变量可以指向任何有效的内存,只有当引用变量指向有效的内存时,才可以通过数组变量访问数组元素。

  实际的数组对象被存储在堆内存中·;如果引用该数组对象的数组引用变量时一个局部变量,那么它存储在栈内存中。数组在内存中的存储如图所示,

  如图要访问堆内存中的数组元素时,则程序中只能通过p[index]的形式。也就是说,数组引用变量时访问堆内存中数组元素的根本方式。

  当一个方法执行时,每个方法都会创建自己的内存栈,在这个方法中声明的变量都会放到这个栈内存中,随着方法执行的结束,这个方法的内存栈也就会自然被销毁。所有方法定义的

局部变量都是放到栈内存中;在程序中创建一个对象后,这个对象被保存到运行时数据区中,这个区域就叫做堆内存。只有当堆内存没有一个引用变量去指向它时,系统的垃圾回收机制或

将这个内存区回收。

  定义并初始化一个数组后,在内存中分配了两个空间,一个用于存放数组的引用变量在栈内存中,一个用于存放数组的本身在堆内存中。引用变量在栈内存中就像是一个地址,通过访问

这个地址就可以访问到地址上的东西堆内存,访问到其中的数据。没有这个引用变量的地址时,是无法访问到堆内存的,只有通过数组引用变量才能访问到。

  

原文地址:https://www.cnblogs.com/yfstudy/p/9464253.html

时间: 2024-10-08 11:41:40

流程控制和数组的相关文章

Java图式(第三章 流程控制、数组)

Java图式(第三章 流程控制.数组) 1.分支语句 1)if-else语句 2)switch语句 2.循环语句 1)while语句 while返回值不是1/0,必须是布尔表达式 2)do-while语句 3)for语句 4)continue/break语句 标号是对语句块/循环命名.eg:A:循环 continue A:直接终止标记的外循环 3.数组(引用类型) 1)声明时不确定大小 2)引用:下标引用,无指针 3)实例化(存储单元分配)语句:new 4)数组初始化:不要求每一维一样大 4.字

05 Java 流程控制与数组

作者:thoughtInShare 出处:http://www.cnblogs.com/thoughtInShare 欢迎转载,也请保留这段声明.谢谢! 1,流程控制=顺序结构+分支结构+循环结构 (1)分支结构=if+switch (2)循环结构=while+do while ()+for (3)控制循环结构=break(结束整个循环)+continue (结束本次循环)+return(结束整个方法) (4)return并不是专门用来控制循环结构的,return的功能是结束一个方法;而不管re

Java基础(二)流程控制和数组

流程控制 break结束多重循环 public static void main(String[] args) { outer: for(int i = 0; i < 5; i++) { for(int j = 0; j < 3; j++) { System.out.println("i的值为:" + i + " j的值为:" + j); if(j == 1) { break outer; } } } } //输出: //i的值为:0 j的值为:0 //

流程控制与数组、集合

1.流程图 流程图中的形状: (椭圆形)开始和结束:表示程序的开始或结束,一个流程图中,只能出现一个开始和一个结束 (矩形)步骤:表示功能中的每一个步骤 (平行四边形)输入和输出:表示输入和输出 (菱形)判断:表示判断,将产生两种判断结果,真或假 (箭头):连接其他图形,表示程序的流向 2.流程控制语句: ①if判断 ②switch选择 ③循环:while循环        do while循环        for循环        foreach循环 3.数组默认值: 数字类型,默认值为0b

第四章.流程控制与数组

流程控制结构: 分支结构 根据分支条件来选择性的执行某段代码. if: switch: case语句后面只能是byte.short.char.int四种整型类型,枚举类型和Java.lang.String类型(从Java 7才允许). default语句不省略. break: break语句可以结束switch语句.while.do while.for语句但是结束不了if语句. Java中海油一种break标签,可以结束外层循环: 1 public class BreakTest2{ 2 pub

流程控制、数组与集合

今天来写写这两天学习的一些比较重要的内容.首先让我们进入流程图,流程图顾名思义就是画流程的图,它是使用标准化的图形方案,分析某些复杂功能的实现步骤.标准化的意思就是用特定的图像,它的形状有:椭圆(代表开始或结束,只能有一个开始和结束).长方形(代表功能中的每一个步骤).四边形(代表输入和输出).菱形(代表判断,将产生两种结果,真和假).箭头符号(连接其他图形,表示程序的流向).使用它的工具有很多,最好还是手绘就行了,方便又快捷. 接着学习了if判断语句,它的格式:                

疯狂JAVA——第四章 流程控制与数组

4.5 数组类型 数组也是一种类型.它本身是引用类型.例如int是一种基本类型,int[]就是引用类型. 两种定义数组的方式: 1.type[] arrayName; 2.type arrayName[]; 通常推荐第一种写法,这种方法既容易理解,也符合定义变量的语法. 如果访问数组元素时指定的索引值小于0,或者大于等于数组的长度,编译程序不会出现任何错误,但运行时会抛出异常 4.5.5foreach循环 String[] books={"三国演义","西游记",&

第四章 流程控制和数组

笔记: 用 break 结束循环( 可以跳到标号处 ) 用 continue 忽略本次循环到剩下语句( 也可以跳到标号处 ) 使用 return 结束方法 -> 数组类型 数组也是一种数据类型,它本身是一种引用类型 定义的时候一般使用  type[] arrayName,这种方式是比较易于理解和正规的 数组必须初始化才可以使用 初始化: 静态初始化 arrayName = new type{element1,element2,element3...} 动态初始化 arratName = new

【疯狂Java讲义学习笔记】【流程控制与数组】

[学习笔记]1.switch语句后的expression表达式的数据类型只能是byte.short.char.int四个整数类型.String(Java 7后才支持)和枚举类型. 2.数组的长度不可变,定义数组时候不能指定数组的长度.为数组分配空间的时候一定要进行初始化,数组初始化的方法有两种,第一种是静态初始化,在数组中直接为每个数组元素赋上初值,另一种是动态初始化,在初始化的时候指定数组的长度,由系统来为每个元素指定初值.注意的是两种初始化不能够同时使用,即既指定数组的长度,同时又为每个元素