流程控制和数组

Posted yfstudy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了流程控制和数组相关的知识,希望对你有一定的参考价值。

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

某段代码。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]的形式。也就是说,数组引用变量时访问堆内存中数组元素的根本方式。

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

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

将这个内存区回收。

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

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

   

 

以上是关于流程控制和数组的主要内容,如果未能解决你的问题,请参考以下文章

程序流程的控制数组和方法

流程控制和数组

流程控制与数组集合

流程控制和数组——5-数组类型

Java基础流程控制和数组

java学习笔记2(datawhale教程):运算符和表达式流程控制数组