顺序结构
程序从上到下逐行地执行,中间没有任何判断和跳转
Java中定义成员变量时采用合法的向前引用。(程序句子顺序不能变)
循环语句功能
在某些条件满足的情况下,反复执行特定代码的功能
循环语句的四个组成部分
初始化部分(init_statement)
循环条件部分(test_exp)
循环体部分(body_statement)
迭代部分(alter_statement)
循环语句的分类
for循环
while循环
do/while循环
一、for循环
语法格式
for(初始化表达式1;布尔值测试表达式2;更改表达式){
语法或语句块3;
}
例:
1.
for(int I = 1;I <= 100;i++){
System.out.println(i);
}
int result = 0;
for(int i =1;i<=100;i++) {
result+=i;
}System.out.println("result ="+ result);//0到100的累加
例题:编写程序FooBizBaz.java,从1循环到150并在每行打印一个值,另外在每个3的倍数行上打印出“foo”,在每个5的倍数行上打印“biz”,在每个7的倍数行打印输出“baz”
public class FooBizBaz{
public static void main(String[] args) {
for(int i = 1;i<=150;i++){
System.out.print(i);
if(i%3==0){
System.out.print(" foo");
}
if(i%5==0){
System.out.print(" biz");
}
if(i%7==0){
System.out.print(" baz");
}
System.out.println("");
}
}
}
分支结构
根据条件,选择性的执行某段代码
有if else和switch两种分支语句
一、if else
1.
int i = 2;
if (i == 1) {
System.out.println(true);
}else {
System.out.println(false);
}
int i = 3;
if(i % 2 ==0) {
System.out.println("偶数");
}else {
System.out.println("奇数");
}
-
int i = 2; if(i == 1) { System.out.println("星期一"); }else if(i == 2) { System.out.println("星期二"); }else if(i == 3) { System.out.println("星期三"); }
如果是数字1,输出星期一,2输出星期二,3输出星期三 ,如果不是1,2,3其中的数字,输出不知道
int i =5;
if(i == 1) {
System.out.println("星期一");
}else if(i == 2) {
System.out.println("星期二");
}else if(i == 3) {
System.out.println("星期三");
}else {
System.out.println("不知道");
}
//if-else可以嵌套使用,就是if-else里可以有多个if-else
//if-else内可以写任何代码段,包括if-else
int x = 1; //随意赋值
int y =3; //随意赋值
if(x > 2) {//判断x的值,x>2,走if分支,不是则走else分支
if(y > 2) {//判断y的值,y>2,走if分支,不是则走else分支
System.out.println(x + y);
System.out.println("good");
}else {//第二个判断y的else分支
System.out.println("x is "+ x);
}
}else {//第一个判断x的else分支
System.out.println("bad");
}
}
}
二、switch
Switch语句有关规则
switch(表达式)中表达式的返回值必须是下述几种类型之一:byte,short,char,int,枚举,String;
case子句中的值必须是常量,且所有的case子句中的值应是不同的;
default字句是可任选的,当没有匹配的case时,执行default
break语句用来在执行完一个case分支后使程序跳出switch语句块;如果没有break,程序会顺序执行到switch结尾
break时必须写的,不然程序就会从case匹配到的位置开始一直往下执行到结尾
1.switch(变量){
case(常量1):
语句1;
break;
case(常量2):
语句2;
break;
……
case(常量n):
语句n;
break;
default:
语句;
break;
}
例:
String str = "1";
switch(str) {
case"a":
System.out.println("a");
break;
case"bcd":
System.out.println("bcd");
break;
default:
System.out.println("unknown");
}
三、while
whlie语法格式
【初始化语句】
while(布尔值测试表达式){
语句或语句块;
【更改语句;】
}
例:
int res = 0;
int k = 1;
while(k <= 100) {
if(k % 2 == 0) {
res += k;}
k++;
}System.out.println(res);
do-while语法格式
[初始化语句]
Do{
语句或语句块;
[更改语句;]
}while(布尔值测试表达式);
例:
int m = 1;
do {
System.out.println(m);
m++;
}while(m <= 100);//循环输出1到100的数字
循环结构
根据循环条件,重复性的执行某段代码。
有while、do while、for三种循环语句
注:JDK1.5之后提供了foreach循环,方便的遍历集合、数组元素
嵌套循环
将一个循环放在另一个循环体内,就形成了嵌套循环。其中,for,while,do…while均可以作为外层循环和内层循环。
实质上,嵌套循环就是把内层循环当成外层循环的循环体。当只有内层循环的循环条件为false时,才会完全跳出内循环,才可结束外层的当次循环,开始下一次的循环。
设外层循环次数为m次,内层为n次,则内层循环体实际上需要执行n*m=nm次。(注意在写嵌套循环的时候,要尽量保证外层循环次数小于内层的循环次数)
例题:1.
//九九乘法表
for(int i = 1;i <= 9;i++) {
for(int j = 1;j <= i;j++) {
System.out.print(i + " * " + j + " = " + (i*j) + " ");
}System.out.println();
}
2.1-100之间的所有质数
//1-100之间的所有质数(质数是一个大于1的自然数,并且只能被1和其本身整除)
for(int i = 1;i <= 100;i++) {
int k = 0;
for(int j =1;j <= i;j++) {
if(i % j == 0) {
k++;
}
}
if(k == 2) {//如果循环次数为两次,当前大循环的i的值就是质数
System.out.println(i);
}
}
例:
for(int i = 0; i < 4; i++) {//每一次循环都会执行大括号里面所有代码
System.out.println("大循环---"+ i );
for(int j = 0; j<2; j++) {
System.out.println("大循环---"+ i +"小循环---" + j);
}
}
输出结果:
大循环—0
大循环—0小循环—0
大循环—0小循环—1
大循环—1
大循环—1小循环—0
大循环—1小循环—1
大循环—2
大循环—2小循环—0
大循环—2小循环—1
大循环—3
大循环—3小循环—0
大循环—3小循环—1
特殊流程控制语句
一、break 语句
break语句用于种植某个语句块的执行
{ ……
break;
……
}
break终止当前所在的循环
int i = 1;
switch(i) {
case 1:
break;//终止case
case 2:
break;//终止case
case 3:
break;//终止case
}
例:
for(int j = 0;j < 8;j++) {
for(int i = 0;i < 9;i++) {
if(i > 6) {
break;//break终止倾斜区域的循环
}System.out.println(i);
}
}
二、continue
continue语句用于跳过某个循环语句块的一次执行
continue语句出现在多层嵌套的循环语句体中时,可以通过标签指明要跳过的是哪一层循环
continue是对当前所在的循环起作用,结束当前这次循环,当前循环的下面的代码不执行,直接进入下一次循环
continue语句用法举例
public class ContinueTest{
public static void main(String args[]){
for(int i = 0;I < 100;i++){
if(i%10==0)
continue;
System.out.println(i);
}
}
}
例:
for(int i = 0;i < 9;i++) {
if(i % 2 == 0) {
continue;//结束当前这次循环,直接进入下一循环
}System.out.println(i);
}
三、return
return并非专门用于结束循环的,它的功能是结束一个方法。当一个方法执行到一个return语句时,这个方法将被破解
与break和continue不同的是,return直接结束整个方法,不管这个return处于多少层循环之内
for(int i = 0;i < 2; i++) {
for(int j = 0;j < 2; j++) {
if(i == 1) {
// return;
//看起来和使用break感觉一样,但是实际上,return是把整个方法结束了,break只是终止当前的循环
break;
}
}System.out.println(i);
}