您的位置:首页 > 编程语言 > Java开发

Java语法基础(三)

2016-01-11 14:31 465 查看

流程控制语句

顺序结构

选择结构

循环结构

顺序结构



选择结构

选择结构(if语句)

格式1:

if(关系表达式) {
语句体
}


格式2:

if(关系表达式) {
语句体1;
}else {
语句体2;
}


格式3:

if(关系表达式1) {
语句体1;
}else  if (关系表达式2) {
语句体2;
}
…
else {
语句体n+1;
}


选择结构(switch语句)

语句格式

switch(表达式) {
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
…
default:
语句体n+1;
break;
}


格式的解释

switch : 表示这是switch选择结构
表达式: 这个地方的取值是有限定的
byte,short,int,char
JDK5以后可以是枚举
JDK7以后可以是字符串
case: 后面跟的是要和表达式进行比较的值
语句体: 要执行的代码
break: 表示中断,结束的意思,可以控制switch语句的结束。
default: 当所有的值都和表达式不匹配的时候,就执行default控制的语句。其实它就相当于if语句的else。


执行流程

首先计算出表达式的值

其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束。

最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。

注意事项

case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的

default可以省略吗?

可以省略。一般不建议。除非判断的值是固定的。(单选题)


break可以省略吗?

可以省略,一般不建议。否则结果可能不是你想要的


default的位置一定要在最后吗?

可以出现在switch语句任意位置。


switch语句的结束条件

遇到break
执行到程序的末尾


/*
看程序写结果
*/
class SwitchTest {
public static void main(String[] args) {
int x = 2;
int y = 3;
switch(x){
default:
y++;
break;
case 3:
y++;
case 4:
y++;
}
System.out.println("y="+y);   //  4
System.out.println("---------------");

int a = 2;
int b = 3;
switch(a){
default:
b++;
case 3:
b++;
case 4:
b++;
}
System.out.println("b="+b);   //  6
}
}


if和case的区别

在做判断的时候,我们有两种选择,if语句和switch语句,那么,我们到底该如何选择使用那种语句呢?

if语句使用场景

针对结果是boolean类型的判断

针对一个范围的判断

针对几个常量值的判断

switch语句使用场景

针对几个常量值的判断

循环结构

循环结构(for)

语句格式

for(初始化语句;判断条件语句;控制条件语句) {
循环体语句;
}


执行流程

A: 执行初始化语句
B: 执行判断条件语句,看其结果是true还是false
如果是false,循环结束。
如果是true,继续执行。
C: 执行循环体语句
D: 执行控制条件语句
E: 回到B继续




注意事项

A: 判断条件语句的结果是一个boolean类型
B: 循环体语句如果是一条语句,大括号可以省略;如果是多条语句,大括号不能省略。建议永远不要省略。
C: 一般来说:有左大括号就没有分号,有分号就没有左大括号


/*

需求:在控制台输出所有的”水仙花数”

分析:
我们都不知道什么叫"水仙花数",你让我怎么做呢?

所谓的水仙花数是指一个三位数,其各位数字的立方和等于该数本身。
举例:153就是一个水仙花数。
153 = 1*1*1 + 5*5*5 + 3*3*3 = 1 + 125 + 27 = 153

A:三位数其实是告诉了我们范围。
B:通过for循环我们就可以实现获取每一个三位数
但是麻烦是如何获取这个三位数的个,十,百位上的数据

我们如何获取一个数据的个,十,百呢?
假设有个一个数据:153
ge: 153%10 = 3
shi: 153/10%10 = 5
bai:153/10/10%10 = 1
qian:x/10/10/10%10
wan:  x/10/10/10/10%10
...

C:让ge*ge*ge+shi*shi*shi+bai*bai*bai和该数据比较
如果相同,就把该数据在控制台输出。
*/
class ForDemo6 {
public static void main(String[] args) {
//三位数其实是告诉了我们范围。
for(int x=100; x<1000; x++) {
int ge = x%10;
int shi = x/10%10;
int bai = x/10/10%10;

//让ge*ge*ge+shi*shi*shi+bai*bai*bai和该数据比较
if(x == (ge*ge*ge+shi*shi*shi+bai*bai*bai)) {
//如果相同,就把该数据在控制台输出。
System.out.println(x);
}
}
}
}


循环结构(while)

语句格式

基本格式
while(判断条件语句) {
循环体语句;
}

扩展格式
初始化语句;
while(判断条件语句) {
循环体语句;
控制条件语句;


循环结构(do…while)

语句格式

基本格式
do {
循环体语句;
}while((判断条件语句);

扩展格式
初始化语句;
do {
循环体语句;
控制条件语句;
} while((判断条件语句);




循环语句的区别

do…while循环至少执行一次循环体。而for,while循环必须先判断条件是否成立,然后决定是否执行循环体语句。

跳转控制语句

break 中断

continue 继续

return 返回

跳转控制语句(break)

break的使用场景

在选择结构switch语句中

在循环语句中

离开使用场景的存在是没有意义的

break的作用

跳出单层循环

跳出多层循环

带标签的跳出

格式:
标签名: 循环语句

标签名要符合Java的命名规则


class BreakDemo {
public static void main(String[] args) {
//在 switch 或 loop 外部中断
//break;

//跳出单层循环
for(int x=0; x<10; x++) {
if(x == 3) {
break;
}
System.out.println("HelloWorld");
}

System.out.println("over");
System.out.println("-------------");

wc:for(int x=0; x<3; x++) {
nc:for(int y=0; y<4; y++) {
if(y == 2) {
//break nc;
break wc;
}
System.out.print("*");
}
System.out.println();
}
}
}


跳转控制语句(continue)

continue的使用场景

在循环语句中

离开使用场景的存在是没有意义的

continue的作用

单层循环对比break,然后总结两个的区别

break 退出当前循环

continue 退出本次循环

/*
continue:继续

使用场景:
循环中。离开此场景无意义。

测试,找到和break的区别:
break:跳出单层循环
continue:跳出一次循环,进入下一次的执行

练习题:
for(int x=1; x<=10; x++) {
if(x%3==0) {
//在此处填写代码
}
System.out.println(“Java基础班”);
}

我想在控制台输出2次:“Java基础班“
break;
我想在控制台输出7次:“Java基础班“
continue;
我想在控制台输出13次:“Java基础班“
System.out.println(“Java基础班”);

*/
class ContinueDemo {
public static void main(String[] args) {
for(int x=0; x<10; x++) {
if(x == 3) {
//break;
continue;
}

System.out.println(x);
}
}
}


跳转控制语句(return)

return关键字不是为了跳转出循环体,更常用的功能是结束一个方法,也就是退出一个方法。跳转到上层调用的方法。这个在方法的使用那里会在详细的讲解。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: