Java程序猿之流程控制与数组

  分支语句

  if括号里的只能是一个逻辑表达式,即这个表达式返回的值只能是true或false。

  代码块用花括号括起来,一个代码块通常被当成一个整体来执行(除非遇到return、break、continue等关键字,或者遇到异常)。

  if……else语句有一条基本规则:总是优先把范围小的条件放在前面处理。

  switch语句由一个控制表达式和多个case标签组成,和if语句不同的是,switch语句后面的控制表达式的数据类型只能是byte、short、char、int四种整数类型,枚举类型和java.lang.String类型(从Java 7才允许),不能是boolean类型。

switch (expression){
   case conditionl:
   {
     statement(s);
     break;
   }
   …………       default;  {    statement(s);  }}

  每一个case标签后的每个代码块后都有一条break;语句,这个语句有极其重要的意义,Java的switch语句允许case后面没有break语句,但是这样做可能引入一个陷井,程序会一直执行下去。switch语句会先求出expression表达式的值,然后拿这个表达式和case标签后的值进行比较,一旦遇到相等的值,程序会执行case后面的代码,不再判断后面case、default标签的条件是否匹配。

  Java7增强了switch语句的功能,允许switch语句的控制表达式是java.lang.String类型的标量或表达式——只能是java.lang.String类型,不能使StringBuffer或StringBuilder这两种字符串类型。

  循环结构

  while语句

  while循环语法格式如下:

[init_statement]
while(test_expression);{
   statement;
   [iteration_statement];
} 

  while循环每次执行执行体前,先对text_expression循环条件求值,如果循环条件为true,则运行循环体部分。上面迭代语句总是位于循环体最后,只有当循环体执行之后,while循环才会执行迭代语句。

  while循环的循环体部分与迭代语句合并在一起,只有一行代码,可以省略后面的花括号,但不建议。如果省略掉花括号,那么循环条件控制到紧跟该循环条件的第一个分号处。

  使用while循环语句一定要保证循环条件有false的时候,否则这个循环将称为一个死循环。

int i= 0;
while (i < 10);{
    System.out.println("不停的死循环!" + i);
    }

  while循环条件后面一定要紧跟一个分号;while循环条件后面一定要紧跟一个分号;while循环条件后面一定要紧跟一个分号; 重要的事说三遍

  在java程序中,一个单独的分号表示一个空语句,不做任何事情的空语句。

  do……while语句

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

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

  do……while循环的循环条件后必须有一个分号,这个分号表明循环结束。

  do……while循环的循环体至少会被执行一次。

  

  for循环

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

  for循环的循环迭代语句并没有与循环体放在一起,因此即使在执行循环体时遇到continue语句结束本次循环,循环迭代语句也是一样会得到执行。

  for循环的初始化语句只有一个,循环条件也只是一个简单的boolean表达式。实际上,for循环允许同时制定多个初始化语句,循环条件也可以是一个包含逻辑运算符的表达式 

for(int i = 0, j = 0; i < 10 && j < 10; i++, j++){
        statement
    }

  for循环循环体内可以修改循环变量,但这样可能会产生一个死循环,所以建议不要在循环体内修改循环变量(也叫循环计数器)的值,否则会增加程序出错的可能性。如果真的需要访问、修改循环变量,建议重新定义一个临时变量,先将循环变量赋值给临时变量,然后对临时变量的值进行修改。

  for循环圆括号内的两个分号是必须的,初始化语句、循环条件、迭代语句部分都是可以省略的。不过如果省略的循环条件,则这个循环条件默认为true,陷入死循环。

  可以将初始化条件定义在循环体之外,把循环迭代语句放在循环体内,这种做法类似于前面的while循环

int i = 0;
for(; i < 10;){
        System.out.println(i);
        i++;
    }

  把for循环的初始化语句放在循环之前定义还有一个作用:可以扩大初始化语句中所定义变量的作用域。在for循环里定义的变量,其作用域仅在该循环内有效,for循环中止之后,这些变量将不可被访问。如果需要在循环以外使用这些变量的值,就可以采用上面的做法。除此之外,还可以额外定义一个变量来保存这个循环条件的值。

int temp = 0;
for(int i = 0; i < 10; i++){
        statement
        //使用temp保存循环变量
        temp = i;
    }

  嵌套循环

  把一个循环放在另一个循环体内。形成嵌套循环,当程序遇到嵌套循环时,如果外层循环条件允许,则开始执行外层循环的循环体,而内层循环将被外层循环的循环体来执行——只是内层循环需要反复执行自己的循环体而已。当内存循环执行结束,且外层循环的循环体执行结束,则再次计算外层循环的循环条件,决定是否再次执行外层循环的循环体。

  

  使用break结束循环

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

  break语句不仅可以结束其所在循环,还可以直接结束其外层循环。此时需要在break后紧跟一个标签,这个标签用于标识一个外层循环。

  Java中的标签就是一个紧跟英文冒号的(:)标识符。Java标签只有在循环体中才能使用。

//外层循环,outer作为标识符
outer;
for (int i = 0; i < 5; i++){
        for( int j = 0; j < 3; j++){
            System.out.println("打印j和i的值");
            if( j == 1 ){
                //跳出outer标签所标识的循环
                break outer;
                }
            }
    }

  break后的标签必须是一个有效的标签,即这个标签必须在break语句所在的循环之前定义,或者在其所在的循环的外层循环之前定义。break默认是结束其所在标签。

public class hh{
    public static void main(String[] args){
        //请注意outer后面跟的是英文冒号
        outer:
        for (int i = 0; i < 5; i++){
            for( int j = 0; j < 3; j++){
                System.out.println("打印j和i的值" + "i = " + i + "j = " +  j);
                if( j == 1 ){
                        //跳出outer标签所标识的循环
                    break outer;
                }
            }
        }
    }
}

  使用continue忽略本次循环剩下的语句

  continue后面也可以紧跟一个标签,用于直接跳过标签所标识循环的当次循环的剩下语句,重新开始下一次循环。

  

  使用return结束方法

  return关键字不是专门用来结束循环的,return的功能室结束一个方法。当一个方式执行到一个return语句时(return关键字后还可以紧跟变量,常量和表达式),这个方法将被结束。

  

  

 

  

  

时间: 2024-11-05 17:30:06

Java程序猿之流程控制与数组的相关文章

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

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

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.字

一篇让Java程序猿随时可以翻看的Oracle总结

一篇让Java程序猿随时可以翻看的Oracle总结 前言:Oracle学习也有十几天了,但是呢,接下来还要学习许多其他的东西,并不能提步不前,所以在此总结了以下Oracle中常用的命令和语句,没有语法都是实例,以便以后工作的时候随时翻看,毕竟是自己的东西,一看就懂.  有关的语句和操作基本都是按照实战中的顺序来总结的,比如创建用户,建表,序列初始化,插入数据的顺序呢. 这篇文章的基表是大家最为熟知的Scott用户下的emp员工表,dept部门表以及salgrade薪水等级表,一切的语句都是围绕它

Java程序猿的JavaScript学习笔记(1——理念)

计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript学习笔记(3--this/call/apply) Java程序猿的JavaScript学习笔记(4--this/闭包/getter/setter) Java程序猿的JavaScript学习笔记(5--prototype) Java程序猿的JavaScript学习笔记(6--面向对象模拟) Java程

Java程序猿的JavaScript学习笔记(5——prototype和Object内置方法)

计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript学习笔记(3--this/call/apply) Java程序猿的JavaScript学习笔记(4--this/闭包/getter/setter) Java程序猿的JavaScript学习笔记(5--prototype) Java程序猿的JavaScript学习笔记(6--面向对象模拟) Java程

Java程序猿JavaScript学习笔记(4——关闭/getter/setter)

计划和完成这个例子中,音符的顺序如下: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript学习笔记(3--this/call/apply) Java程序猿的JavaScript学习笔记(4--this/闭包/getter/setter) Java程序猿的JavaScript学习笔记(5--prototype) Java程序猿的JavaScript学习笔记(6--面向对象模拟) Ja

Java程序猿的JavaScript学习笔记(9—— jQuery工具方法)

计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript学习笔记(3--this/call/apply) Java程序猿的JavaScript学习笔记(4--this/闭包/getter/setter) Java程序猿的JavaScript学习笔记(5--prototype) Java程序猿的JavaScript学习笔记(6--面向对象模拟) Java程

Java程序猿学习当中各个阶段的建议

回答阿里社招面试如何准备,顺便谈谈对于Java程序猿学习当中各个阶段的建议 引言 其实本来真的没打算写这篇文章,主要是LZ得记忆力不是很好,不像一些记忆力强的人,面试完以后,几乎能把自己和面试官的对话都给记下来.LZ自己当初面试完以后,除了记住一些聊过的知识点以外,具体的内容基本上忘得一干二净,所以写这篇文章其实是很有难度的. 但是,最近问LZ的人实在是太多了,为了避免重复回答,给自己省点力气,干脆就在这里统一回复了. 其实之前LZ写过一篇文章,但是那篇文章更多的是在讨论“面试前该不该刷题”这个

[转] java书籍(给Java程序猿们推荐一些值得一看的好书 + 7本免费的Java电子书和教程 )

7本免费的Java电子书和教程 1. Thinking in Java (Third Edition) 本书的作者是Bruce Eckel,它一直都是Java最畅销的免费电子书.这本书可以帮助你系统的学习Java,里面包含有很多好的代码示例.第三版仍旧是免费的,直到第四版才开始收费,不过仍旧值得买一本收藏. Think in Java 免费下载: Thinking in Java 2. The Java Tutorials 这个教程来自于Oracle/Sun.对于初学者是不错的选择.我们可以根据