`
he91_com
  • 浏览: 379369 次
文章分类
社区版块
存档分类
最新评论

JAVA从零单排2-----流程控制和数组

 
阅读更多

流程控制

Java提供了两种流程控制结构:分支结构和循环结构。Java提供if和switch两种分支语句,还提供了while、dowhile、for三种循环结构,除此之外,foreach循环可以更简单的来遍历集合、数组的元素。Java还提供break和continue来控制程序的循环结构。

1. if条件语句

if(条件)

{

如果条件为真,则执行此段代码

}


if(条件)

{

如果条件为真,则执行此段代码

}else{

如果条件为假,则执行此段代码

}


if(条件)

{

}ifelse{

}else{

}

2. switch分支语句

switch(expression)

{

case condition1:

……

break;

case condition2:

……

break;

default:;

……

}

每个case标签后的每个代码块都有一个break;语句。Switch先计算expression的表达式的值,然后与每个case标签后的值进行比较,一旦相等,开始执行case后边的代码,直到遇到brea才结束。注意,switch后的expression表达式的数据类型只能是byte、short、int、char类型。

3. while循环语句

while(test_expression)

{

}

每次循环之前,先对test_expression循环条件求值,如果循环条件为true,则运行循环体部分。使用while循环时,一定要保证循环条件有变成false的时候。

4. do while 循环语句

do while循环与while循环的区别在于:while循环是先判断循环条件,如果条件为真才执行循环体;而dowhile循环则先执行循环体,然后判断循环条件,如果循环条件为真,则执行下一次循环,否则中止循环。

do

{

statements;

[iteration_statements]

}

while(test_expression);

5. for循环语句

for([init_statements]; [test_expression]; [iteration_statement])

{

}

执行for循环时,先执行初始化语句init_statements,这个语句只在循环开始前执行依次。每次执行循环体之前,先计算test_expression循环条件的值,如果循环条件为true,则执行循环体部分代码,然后执行循环迭代语句iteration_statement。因此,对于for循环,循环条件总比循环体要多执行一次。

6. foreach循环

使用这个循环结构可以方便的遍历数组和集合。

for(typevariableName : array | collection)

{

}

注意:foreach循环不能给数组赋值!

7. 嵌套循环

当程序语带嵌套循环时,如果外层循环的循环条件允许,则开始执行外层循环的循环体,而内层循环将外层循环的循环体来执行—只是内层循环需要反复执行自己的循环体而已。当内层循环执行结束、且外层循环的循环体执行介绍,则再次计算外层循环的循环条件,决定是否再次开始执行外层循环的循环体。

l 使用break结束循环

break用于完全结束一个循环,跳出循环体。

l 使用continue结束本次循环

continue只是中止本次循环,开始执行下一次循环。

l 使用return结束方法

当使用return语句时,return后边的语句则不执行,直接结束整个方法。


数组类型

Java的数组要求所有数组具有相同的数据类型。一旦数组的初始化完成,则数组在内存中所占用的空间大小就被固定了,数组的长度也就固定了。即使把某个数组元素的数据清空,但它所占的空间依然被保留,依然属于该数组,数组的长度依然不变。

数组的初始化:

newType[] arrayName;

arrayName =newType[]{element1, element2, element3…};//静态初始化数组

arrayName = new Type[length];//动态初始化数组

int[][] b = new int[4][5];//二维数组

使用arrayName[index]来访问数组元素的值。index表示数组元素的索引值,数组索引从0开始。使用arrayName.length来访问数组的长度。

数组是一个引用数据类型,数组引用变量只是一个引用,数组元素和数组变量在内存里是分开存放的。数组元素存储在堆(heap)内存中,数组引用变量存储在栈(stack)内存中。

为什么有栈内存和堆内存之分?

答:当一个方法执行时,每个方法都会建立自己的内存栈,在这个方法内定义的变量将会逐个放入这块栈内存里,随着方法的执行结束,这个方法内存栈也将自然销毁了。因此,所有在方法中定义的变量都是放在栈内存中的;当我们在程序中创建一个对象时,这个对象将被保存到运行时数据区中,以便反复利用(因为对象的创建成本通常较大),这个运行时数据区就是堆内存。堆内存中的对象不会随着方法的结束而销毁,即使方法结束后,这个对象还可能被另一个引用变量所引用(方法的参数传递时很常见),则这个对象依然被销毁。只有当一个对象没有任何引用变量引用它的时候,系统的垃圾回收机制会在合适的时候回收它。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics