java 基本语句是_[基础篇]-基础知识整理-04-JAVA常见语句分析

Java的基本语句分析

流程控制不论哪一种编程语言,都会提供两种基本的流程控制结构:分支结构和循环结构。其中分支结构用于实现根据条件来选择性地执行某段代码,循环结构则用于实现根据循环条件重复执行某段代码。

Java 同样提供了这两种流程控制结构的语法,Java提供了 if和switch两种分支语句,并提供了 while、do while 和for三种循环语句。除此之外,JDK5还提供了一种新的循环:foreach循环,能以更简单的方式来遍 历集合、数组的元素。

Java还提供了 break和continue来控制程序的循环结构。

分支结构

条件语句if

public class IfTest {

public static void main(String[] args) {

//if语句的三种形式/*** 1.if(条件表达式)* 执行语句;*/

if(true)

System.out.println("if语句形式1测试");

/*** 2.if(条件表达式)* 执行语句1;* else* 执行语句2;*/

if(true)

System.out.println("if语句形式2测试");

else

System.out.println("当条件表达式返回值为false执行这条语句");

/*** 3.if(条件表达式1)* 执行语句1;* else if(条件表达式2)* 执行语句2;* ......* else if(条件表达式n-1)* 执行语句n-1;* else* 执行语句n;*/

int age = 18;

if(age>0&&age<20)

System.out.println("年轻人...");

else if(age>=20&&age<30)

System.out.println("青年人");

else if(age>=30&&age<60)

System.out.println("中年人");

else

System.out.println("老年人");

}

}对于嵌套的 if 语句,只有当外层 if 的条件成立时,才会判断内层 if 的条件。

举例说明:

条件语句switch当需要对选项进行等值判断时,可使用switch语句简单明了。Switch语句由一个控制表达式和多个case标签组成,和if语句不同的是 Switch语句后面的表达式只能是byte、short、int、char 四种基本的数据类型 ,jdk1.7之后加强了Switch新增了String类型 。

执行过程:当 switch 后表达式的值和 case 语句后的值相同时,从该位置开始向下执行,直到遇到 break 语句或者 switch 语句块结束;如果没有匹配的 case 语句则执行 default 块的代码。

public class SwitchTest {

public static void main(String[] args) {

/*** switch语句测试:* switch语句后面的表达式可以由byte、short、int、char四种基本类型* jdk1.7后新增了String类型*/

char score = 'B';

switch(score)

{

case'A':

System.out.println("优秀");

break;

case'B':

System.out.println("良好");

break;

case'C':

System.out.println("中等");

break;

case'D':

System.out.println("及格");

break;

case'E':

System.out.println("不及格");

break;

default:

System.out.println("成绩输入格式错误,请重新进行操作!");

break;

}

}

}

public class SwitchStringTest {

public static void main(String[] args) {

String season = "夏天";

switch(season)

{

case"春天":

System.out.println("春暖花开");

break;

case"夏天":

System.out.println("夏日炎炎");

break;

case"秋天":

System.out.println("秋高气爽");

break;

case"冬天":

System.out.println("白雪皑皑");

break;

default:

System.out.println("季节输入格式错误,请重新输入!");

break;

}

}

}使用Switch语句时的注意事项:

switch 后面小括号中表达式的值可为byte、short、int、char、String类型

case 后面的值可以是常量数值(如1、2);也可以是一个常量表达式(如2+2),但不能是变量或带有变量的表达式(如 a * 2)

case 匹配后,执行匹配块里的程序代码,如果没有遇见 break会继续执行下一个的 case 块的内容,直到遇到 break 语句或者 switch 语句块结束

可以把功能相同的 case 语句合并起来,如

上述表示当判断的数据是1或2是可输出该语句,即如果一个case没有与之对应的语句(基本语句或跳转语句),则继续执行下一步。default 块可以出现在任意位置,也可以省略

循环结构循环语句可以在满足循环条件的情况下,反执行某一段代码,这段被重复行的代码被称为循环体。当反复执行这个循环体时,需要在合适的时候把循环条件改为假,从而结束循环,否则循环将一直 执行下去,形成死循环。循环语句可能包含如下4个部分。

>初始化语句(init_statement):—条或多条语句,这些语句用于完成一些初始化工作,初始化语句在循环开始之前执行。

>循环条件(test_expression):这是一个boolean表达式,这个表达式能决定是否执行循环体。

>循环体(body_tatement):这个部分是循环的主体,如果循环条件允许,这个代码块将被重复 执行。如果这个代码块只有一行语句,则这个代码块的花括号是可以锊略的。

>迭代语句(iteration_statement):这个部分在一次循环体执行结束后,对循环条件求值之前执行, 通常用于控制循环基件中的变量,使得循环在合适的时候结束。

上面4个部分只是一般性的分类,并不是每个循环中都非常清晰地分出了这4个部分。

循环语句 while

执行过程:先判断,后执行判断 while 后面的条件是否成立( true / false )

当条件成立时,执行循环内的操作代码 ,然后重复执行1、2步骤直到循环条件不成立为止

public class WhileTest {

public static void main(String[] args) {

//1.打印1-10中的奇数int i = 1;

while(i<=10)

{

if(i%2==1)

System.out.println(i);

i++;

}

//2.求1-10的总和int x = 1;

int count = 0;

while(x<=10)

{

count+=x;

x++;

}

System.out.println("1-10的总和为:"+count);

}

}

循环语句 do...while

执行过程:先执行,后判断

1. 先执行一遍循环操作,然后判断循环条件是否成立

2. 如果条件成立,继续执行1、2步骤,直到循环条件不成立为止

即使循环条件不满足,do...while 语句保证循环至少被执行一次!

public class DoWhileTest {

public static void main(String[] args) {

/*** do...while...与while的区别在于* do...while...语句无论如何都会先执行一次* 而while语句只有当括号里的表达式的值返回true时,才执行相关语句*/

int x = 3;

while(x<3)

{

System.out.println("x="+x);

x++;

}

int y=3;

do{

System.out.println("y="+y);

y++;

}while(y<3);

}

}

循环语句 for

for( 表达式1 ; 表达式2; 表达式3){

循环体语句4 ;

}表达式1 :一般是一个赋值语句,它是用来给变量进行赋初值。

表达式2:是一个布尔类型的表达式,它决定什么时候退出循环。

表达式3: 一般是用来修改变量,控制每次循环的方式是什么。

执行过程:

1、执行循环变量初始化部分,设置循环的初始状态,此部分在整个循环中只执行一次

2、进行循环条件的判断,如果条件为 true ,则执行循环体内代码;如果为 false ,则直接退出循环

3、执行循环变量变化部分,改变循环变量的值,以便进行下一次条件判断

4、依次重新执行2、3、4步骤,直到退出循环

public class ForTest {

public static void main(String[] args) {

//循环打印1-10for(int i=1;i<=10;i++)

System.out.println(i);

//与for循环语句相关的面试题int x = 1;

for(System.out.println("a");x<3;System.out.println("c"))

{

System.out.println("d");

x++;

}

/*** 分析:for(初始化语句;循环条件;循环条件控制表达式)* {* 执行语句;* }* 初始化语句只执行一次* 循环条件用于判断是否继续执行相关语句* 循环条件控制表达式用以控制循环条件以防止陷入死循环* 执行顺序:1.当初始化条件执行完毕后,判断是否满足当前的循环条件* 2. 如果满足,则执行相关语句,随后执行循环条件控制表达式* 3.继续判断是否满足循环条件,满足则执行第2步* 4.如果不满足则跳出循环,结束循环语句!* 按照上述分析,可以得到“a d c d c ”*/

}

}使用for循环语句时的注意事项:

for 关键字后面括号中的三个表达式必须用 “ ;” 隔开,三个表达式都可以省略,但 “ ; ” 不能省略。

省略“循环变量初始化”,可以在 for 语句之前由赋值语句进行变量初始化操作,如:

省略“循环条件”,可能会造成循环将一直执行下去,也就是我们常说的“死循环”现象,如:

在编程过程中要避免“死循环”的出现,因此,对于上面的代码可以在循环体中使用 break 强制跳出循环(关于 break 的用法会在后面介绍)。省略“循环变量变化”,可以在循环体中进行循环变量的变化,如:

for 循环变量初始化和循环变量变化部分,可以是使用 “,” 同时初始化或改变多个循环变量的值,如:

代码中,初始化变量部分同时对两个变量 i 和 j 赋初值,循环变量变化部分也同时对两个变量进行变化,运行结果:

循环条件部分可以使用逻辑运算符组合的表达式,表示复杂判断条件,但一定注意运算的优先级,如:

代码中,必须同时满足变量 i 小于 10 ,并且 i 不等于 5 时才会进行循环,输出变量 i 的值。

多重循环

循环体中包含循环语句的结构称为多重循环。三种循环语句可以自身嵌套,也可以相互嵌套,最常见的就是二重循环。在二重循环中,外层循环每执行一次,内层循环要执行一圈。

举例分析:

使用 * 打印长方形:

实现代码为:

//嵌套的循环语句:打印长方形

for(int i=0;i<5;i++)

{

for(int j=0;j<5;j++)

{

System.out.print("*");

}

System.out.println();

}

执行流程:当 i = 1 时,外层循环条件成立,进入内层循环,开始打印第一行内容。此时, j 从 1 开始,循环 8 次,内层循环结束后换行,实现第一行 8 个 * 的输出。接下来返回外层循环 i 变为 2 ,准备打印下一行,依此类推,直到完成长方形的打印。

Foreach语句

在jdk1.5之后Java提供了一种更简单的循环,该种循环可以迭代遍历数组和集合。语法规则如下:

for( 存储是数据类型 标识符 : 要迭代的集合)

{

执行语句;

}

public class ForEachTest {

public static void main(String[] args) {

//循环遍历数组、集合中的数据String[] hobbies = new String[]{"看电视","打游戏","阅读","打代码"};

//1.用for循环语句实现for(int i=0;i

{

System.out.println("第"+(i+1)+"本书:"+hobbies[i]);

}

//2.用增强后的for语句实现(foreach)int count=1;

for(String s : hobbies)

{

System.out.println("第"+count+"本书:"+s);

count++;

}

}

}

控制循环Java中没有goto关键字,而是作为保留字。所谓的保留字是指当前版本中没有使用,但是也禁止你当做标识符使用,以后的版本可能使用。

Java语言没有提供goto语句来控制循环跳转。这种做法提高了程序流程的可读性,但是程序的灵活性降低,为了弥补不足java提供了continue和break来控制循环体除此以外还有return语句可以结束整个方法。

跳转语句 breakbreak语句是终止当前整个循环体

public class BreakTest {

public static void main(String[] args) {

//break语句用于终止当前循环for(int x=0;x<5;x++)

{

if(x==1)

break;//跳出循环、终止循环System.out.println("x="+x);

}

/*** 上述语句执行后只输出了“x=0”,因为当x取值为1的时候,此时满足if* 条件语句,执行break操作,直接跳出了当前循环,之后的输出内容不再执行* 因此最终只显示了“x=0”的输出信息*/

//对循环体进行命名,可以用break语句指定要跳出来的循环outer:for(int i=0;i<5;i++)

inner:for(int j=0;j<5;j++)

{

System.out.println("i="+i);

//break outer;break inner;

}

/*** 分析:上述语句执行结果显示:由break语句指定当前要跳出的循环* break outer:跳出外循环outer-->当输出“i=0”之后,执行break outer语句* 直接跳出外循环,且无其他语句可执行,因此输出结果为“i=0”这句话* break inner:跳出内循环inner-->当输出相应的“i=0”之后,执行break inner语句* 随后判断还是满足外循环的条件,因此再次执行内循环操作,以此类推进行分析,* 最终分别输出每次外循环执行时当前的i值* 即“i=0 i=1 i=2 i=3 i=4”*/

}

}

跳转语句 continuecontinue 的作用是跳过循环体中剩余的语句执行下一次循环。

public class ContinueTest {

public static void main(String[] args) {

//continue语句的作用:跳过当前循环剩余的语句,执行下一次循环(执行下一条语句)for(int x=0;x<5;x++)

{

if(x==1)

continue;//跳过本次循环,进入下一次循环System.out.println("x="+x);

}

/*** 上述语句执行后输出结果为“x=0 x=2 x=3 x=4”* 当判断到x=1时,满足if语句的条件,因此执行continue语句,从而跳过当前循环,* 进入下一次循环,继续输出相关信息*/

//对循环体进行命名,可以用break语句指定要跳出来的循环outer:for(int i=0;i<5;i++)

inner:for(int j=0;j<5;j++)

{

System.out.println("i="+i);

//continue outer;continue inner;

}

/*** 分析:上述语句执行结果显示:由continue语句指定当前要跳出的循环* continue outer:跳出当前的外循环outer-->当输出“i=0”之后,执行continue outer语句* 直接跳出当前的外循环,从而进入下一次循环,以此类推进行分析,因此输出结果为* “i=0 i=1 i=2 i=3 i=4”* continue inner:跳出内循环inner-->当输出相应的“i=0”之后,执行break inner语句* 直接跳出当前的内循环,随后判断还是满足内循环的条件,因此再次执行内循环操作,以此类推进行分析,* 最终输出“i=0(*5) i=1 (*5) i=2(*5) i=3(*5) i=4(*5)”*/

}

}

跳转语句 returnreturn语句:结束整个方法

public class ReturnTest {

public static void main(String[] args) {

//return:直接结束整个方法for(int i=0;i<3;i++)

{

System.out.println("i="+i);

if(i==1)

return;

}

System.out.println("return结束整个方法");

/*** 分析:上述语句执行分析为,按照for循环语句的执行顺序一步步进行分析* 当i=0时,满足循环条件,输出“i=0”,随后i执行加1操作,进入下一步判断* 当i=1时,满足循环条件,输出“i=1”,随后判断i=1时满足if语句,则执行* return语句,结束整个方法,最后的输出提示也不会输出,因此最终显示的信* 息时“i=0 i=1”*/

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值