返回顶部
首页 > 资讯 > 精选 >如何分析Java的选择语句
  • 488
分享到

如何分析Java的选择语句

2023-06-03 05:06:50 488人浏览 泡泡鱼
摘要

这篇文章将为大家详细讲解有关如何分析Java的选择语句,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。编程语言使用控制(control )语句来产生执行流,从而完成程序状态的改变,如程序顺序执

这篇文章将为大家详细讲解有关如何分析Java的选择语句,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

编程语言使用控制(control )语句来产生执行流,从而完成程序状态的改变,如程序顺序执行和分支执行。Java 的程序控制语句分为以下几类:选择,重复和跳转。根据表达式结果或变量状态选择(Selection )语句来使你的程序选择不同的执行路径。重复(Iteration)语句使程序能够重复执行一个或一个以上语句(也就是说,重复语句形成循环)。跳转(Jump )语句允许你的程序以非线性的方式执行。下面将分析Java 的所有控制语句。

如果你熟悉C/C++ ,那么掌握Java 的控制语句将很容易。事实上,Java 的控制语句与C/c++ 中的语句几乎完全相同。当然它们还是有一些差别的——尤其是break语句与continue 语句。
Java 支持两种选择语句:if语句和switch语句。这些语句允许你只有在程序运行时才能知道其状态的情况下,控制程序的执行过程。如果你没有C/C++ 的编程背景,你将会为这两个语句的强大功能和灵活性而感到吃惊。

1 if语句
if语句曾在第2章中介绍过,我们将在这里对它进行详细讨论。if语句是Java 中的条件分支语句。它能将程序的执行路径分为两条。if语句的完整格式如下:

if (condition) statement1;
else statement2;

其中,if和else的对象都是单个语句(statement ),也可以是程序块。条件condition 可以是任何返回布尔值的表达式。else子句是可选的。

if语句的执行过程如下:如果条件为真,就执行if的对象(statement1 );否则,执行else 的对象(statement2 )。任何时候两条语句都不可能同时执行。考虑下面的例子:

int a,b; // ...if(a < b) a = 0;else b = 0;

本例中,如果a小于b,那么a被赋值为0;否则,b被赋值为0。任何情况下都不可能使a 和b都被赋值为0。

通常,用于控制if语句的表达式都包含关系运算符。当然,这在技术上并不是必要的。仅用一个布尔值来控制if语句也是可以的,如下面的程序段:

boolean dataAvailable;
// ...
if (dataAvailable)
ProcessData();
else
waitFORMoreData();

记住,直接跟在if 或else语句后的语句只能有一句。如果你想包含更多的语句,你需要建一个程序块,如下面的例子:

int bytesAvailable;
// ...
if (bytesAvailable > 0) {

ProcessData();bytesAvailable -= n;} elsewaitForMoreData();

这里,如果变量bytesAvailable 大于0,则if块内的所有语句都会执行。

一些程序员觉得在使用if语句时在其后跟一个大括号是很方便的,甚至在只有一条语句的时侯也使用大括号。这使得在日后添加别的语句变得容易,并且你也不必担心忘记括号。事实上,当需要定义块时而未对其进行定义是一个导致错误的普遍原因。例如,考虑下面的程序段:

int bytesAvailable;
// ...
if (bytesAvailable > 0) {

ProcessData();bytesAvailable -= n;

} else
waitForMoreData();
bytesAvailable = n;

由于编排的原因,看起来似乎bytesAvailable = n 语句应该在else子句中执行。然而,当你调用时,空白对Java 无关紧要,编译器无法知道你的意图。这段程序会通过编译,但运用时会出错。上述例子应修改如下:

int bytesAvailable;
// ...
if (bytesAvailable > 0) {

ProcessData();
bytesAvailable -= n;

} else {
waitForMoreData();
bytesAvailable = n;

}

嵌套if 语句

嵌套(nested)if语句是指该if语句为另一个if或者else 语句的对象。在编程时经常要用到嵌套if语句。当你使用嵌套if语句时,需记住的要点就是:一个else语句总是对应着和它在同一个块中的最近的if语句,而且该if语句没有与其他else语句相关联。下面是一个例子:
if(i == 10) {if(j < 20) a = b;if(k > 100) c = d; // this if iselse a = c; // associated with this else

}
else a = d; // this else refers to if(i == 10)

如注释所示,最后一个else语句没有与if(j<20 )相对应,因为它们不在同一个块(尽管if(j <20 i="=10" k="">100 ),因为它是同一个块中最近的if语句。

if-else-if 阶梯

基于嵌套if语句的通用编程结构被称为 if-else-if 阶梯。它的语法如下:

if(condition) statement; else if(condition) statement; else if(condition)

statement;
.
.
.
else

statement;

条件表达式从上到下被求值。一旦找到为真的条件,就执行与它关联的语句,该阶梯的其他部分就被忽略了。如果所有的条件都不为真,则执行最后的else语句。最后的else语句经常被作为默认的条件,即如果所有其他条件测试失败,就执行最后的else语句。如果没有最后的else语句,而且所有其他的条件都失败,那程序就不做任何动作。

下面的程序通过使用if-else-if 阶梯来确定某个月是什么季节。

// Demonstrate if-else-if statements.
class IfElse {

public static void main(String args[]) {
int month = 4; // April
String season;

if(month == 12 || month == 1 || month == 2)
season = "Winter";
else if(month == 3 || month == 4 || month == 5)
season = "spring";
else if(month == 6 || month == 7 || month == 8)
season = "Summer";
else if(month == 9 || month == 10 || month == 11)
season = "Autumn";
else
season = "Bogus Month";

System.out.println("April is in the " + season + ".");
}
}
该程序产生如下输出:

April is in the Spring.

在往下继续讲之前,你可能想要先试验这个程序。你将看到,不管你给month 什么值,该阶梯中有而且只有一个语句执行。

2 switch 语句
switch语句是Java 的多路分支语句。它提供了一种基于一个表达式的值来使程序执行不同部分的简单方法。因此,它提供了一个比一系列if-else-if 语句更好的选择。switch 语句的通用形式如下:

switch (expression) {

case value1:

// statement sequence

break;

case value2:

// statement sequence

break;

.

.

.

case valueN:

// statement sequence

break;

default:

// default statement sequence

}

表达式expression 必须为byte,short,int 或char类型。每个case语句后的值value 必须是与表达式类型兼容的特定的一个常量(它必须为一个常量,而不是变量)。重复的case值是不允许的。

switch 语句的执行过程如下:表达式的值与每个case语句中的常量作比较。如果发现了一个与之相匹配的,则执行该case语句后的代码。如果没有一个case常量与表达式的值相匹配,则执行default 语句。当然,default 语句是可选的。如果没有相匹配的case 语句,也没有default 语句,则什么也不执行。

在case语句序列中的break 语句将引起程序流从整个switch 语句退出。当遇到一个break 语句时,程序将从整个switch 语句后的第一行代码开始继续执行。这有一种“跳出” switch 语句的效果。

下面是一个使用switch语句的简单例子:

// A simple example of the switch.

class SampleSwitch {

public static void main(String args[]) {

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

switch(i) {

case 0:

System.out.println("i is zero.");

break;
case 1:
System.out.println("i is one.");
break;

case 2:
System.out.println("i is two.");
break;

case 3:
System.out.println("i is three.");
break;

default:
System.out.println("i is greater than 3.");
}
}
}

该程序的输出如下:

i is zero.
i is one.
i is two.
i is three.
i is greater than 3.
i is greater than 3.

从中可以看出,每一次循环,与i值相配的case常量后的相关语句就被执行。其他语句则被忽略。当i大于3时,没有可以匹配的case语句,因此执行 default 语句。break语句是可选的。如果你省略了break 语句,程序将继续执行下一个case语句。有时需要在多个case语句之间没有break 语句。例如下面的程序:

// In a switch, break statements are optional.
class MissingBreak {
public static void main(String args[]) {
for(int i=0; i<12; i++)

switch(i) {
case 0:
case 1:
case 2:
case 3:
case 4:

System.out.println("i is less than 5");

break;
case 5:
case 6:
case 7:
case 8:
case 9:

System.out.println("i is less than 10");
break;
default:
System.out.println("i is 10 or more");
}
}
}
该程序产生的输出如下:

i is less than 5
i is less than 5
i is less than 5
i is less than 5
i is less than 5
i is less than 10
i is less than 10
i is less than 10
i is less than 10
i is less than 10
i is 10 or more
i is 10 or more

正如该程序所演示的那样,如果没有break语句,程序将继续执行下面的每一个case语

句,直到遇到break 语句(或switch语句的末尾)。当然该例子是为了示例而人为构造的,省略break语句在真实的程序中有许多实际的应

用。为了说明它更现实的用法,让我们考虑下例对以前显示季节例子的重写。这个重写的

版本使用switch语句来使程序的执行更高效。

// An improved version of the season program.
class Switch {

public static void main(String args[]) {
int month = 4;
String season;
switch (month) {

case 12:
case 1:
case 2:

season = "Winter";

break;
case 3:
case 4:
case 5:

season = "Spring";

break;
case 6:
case 7:
case 8:

season = "Summer";

break;
case 9:
case 10:
case 11:

season = "Autumn";
break;
default:

season = "Bogus Month";}System.out.println("April is in the " + season + ".");

}
}
嵌套switch 语句

可以将一个switch语句作为一个外部switch语句的语句序列的一部分,这称为嵌套switch语句。因为一个switch语句定义了自己的块,外部switch语句和内部switch语句的case 常量不会产生冲突。例如,下面的程序段是完全正确的:

switch(count) {

case 1:

switch(target) { // nested switch

case 0:

System.out.println("target is zero");

break;

case 1: // no conflicts with outer switch

System.out.println("target is one");

break; }

break;

case 2: // ...

本例中,内部switch语句中的 case 1 :语句与外部switch语句中的case 1:语句不冲突。变量count仅与外层的case语句相比较。如果变量count 为1,则变量target 与内层的case语句相比较。

概括起来说,switch语句有3个重要的特性需注意:

·
switch语句不同于if语句的是switch语句仅能测试相等的情况,而if语句可计算任何类型的布尔表达式。也就是switch语句只能寻找case常量间某个值与表达式的值相匹配。
·
在同一个switch语句中没有两个相同的case常量。当然,外部switch语句中的case常量可以和内部switch语句中的case常量相同。
·
switch语句通常比一系列嵌套if语句更有效。
最后一点尤其有趣,因为它使我们知道Java 编译器如何工作。当编译一个switch语句时,Java 编译器将检查每个case常量并且创造一个“跳转表”,这个表将用来在表达式值的基础上选择执行路径。因此,如果你需要在一组值中做出选择,switch 语句将比与之等效的if-else 语句快得多。编译器可以这样做是因为它知道case常量都是同类型的,所要做的只是将它与switch表达式相比较看是否相等。对于一系列的if表达式,编译器就无此功能。

关于如何分析Java的选择语句就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

--结束END--

本文标题: 如何分析Java的选择语句

本文链接: https://lsjlt.com/news/232968.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何分析Java的选择语句
    这篇文章将为大家详细讲解有关如何分析Java的选择语句,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。编程语言使用控制(control )语句来产生执行流,从而完成程序状态的改变,如程序顺序执...
    99+
    2023-06-03
  • Java流程控制语句之If选择结构的示例分析
    这篇文章主要介绍Java流程控制语句之If选择结构的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、选择结构大纲if单选择结构if双选择结构if多选择结构嵌套的if结构switch多选择结构二、if单选择结...
    99+
    2023-06-15
  • C语言之选择分支语句详解
    目录1.if-else语句1.1 例子与总结1.2 if与else的配对问题1.3 if-else代码编写建议2. switch (case)语句2.1例子和总结2.2 switch...
    99+
    2024-04-02
  • Java语言的NumPy库:大数据分析的新选择?
    随着数据规模的不断增大,如何高效地进行大规模数据分析,成为了一个亟需解决的问题。Python作为一门常用的数据分析语言,其NumPy库已经被广泛应用。而Java作为一门广泛应用于企业级应用的编程语言,其在大数据领域的应用也越来越受到关注。...
    99+
    2023-07-08
    numy 大数据 数据类型
  • java中switch选择语句代码详解
    switch结构(开关语句)的语法switch(表达式 ){--->类型为int、char case 常量1 :--->case 结构可以有多个 //语句块1break;--->程序跳出switch结构 ca...
    99+
    2023-05-30
    java switch case语句
  • 如何进行Java多线程语句具体分类的分析
    如何进行Java多线程语句具体分类的分析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。在Java多线程语句中有很多的小的语句需要我们特殊的注意。wait(),notify(...
    99+
    2023-06-17
  • 如何分析Linux shell中的case语句
    这篇文章跟大家分析一下“如何分析Linux shell中的case语句”。内容详细易懂,对“如何分析Linux shell中的case语句”感兴趣的朋友可以跟着小编的思路慢慢深入来阅读一下,希望阅读后能够对大家有所帮助。下面跟着小编一起深入...
    99+
    2023-06-28
  • Java选择排序举例分析
    这篇文章主要介绍“Java选择排序举例分析”,在日常操作中,相信很多人在Java选择排序举例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java选择排序举例分析”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-06-25
  • Go语言选择器实例分析
    今天小编给大家分享一下Go语言选择器实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。引言在 Go 语言中,表达式&nb...
    99+
    2023-07-02
  • Java流程控制语句之If选择结构
    目录一、选择结构大纲二、if单选择结构三、if双选择结构四、if多选择结构五、嵌套的if结构六、代码show一、选择结构大纲 if单选择结构 if双选择结构 ...
    99+
    2024-04-02
  • 怎么分析C语言的选择结构
    怎么分析C语言的选择结构,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、if-else语句1.单选择单选择通过if语句就可以实现,if语句的语法及执行流程如下:if(表达式)...
    99+
    2023-06-26
  • CSS语法和选择器实例分析
    本篇内容介绍了“CSS语法和选择器实例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! CSS简介 ...
    99+
    2024-04-02
  • Go语言优势分析:为何选择Go编程
    Go语言优势分析:为何选择Go编程,需要具体代码示例 随着互联网技术的不断发展,编程语言也日新月异,各种语言层出不穷。在诸多编程语言中,Go语言作为一种开源、跨平台的静态编译型语言备受...
    99+
    2024-03-05
    并发 速度 简洁 go语言 标准库
  • join和on语句中select语句选择公共列的区别
      对多个表进行join时,在select语句中,如果使用using语句,则using语句中选中的列,在select语句中不能指定限定词,否则会报ORA-25154查看emp表SQL&g...
    99+
    2024-04-02
  • Java不同版本的Switch语句实例分析
    这篇文章主要讲解了“Java不同版本的Switch语句实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java不同版本的Switch语句实例分析”吧!旧的Java Switch语句sw...
    99+
    2023-07-02
  • 如何分析购物中心的无线AP选择
    这篇文章主要为大家分析了如何分析购物中心的无线AP选择的相关知识点,内容详细易懂,操作细节合理,具有一定参考价值。如果感兴趣的话,不妨跟着跟随小编一起来看看,下面跟着小编一起深入学习“如何分析购物中心的无线AP选择”的知识吧。  ...
    99+
    2023-06-04
  • C语言实例讲解选择语句的使用
    目录一、if…else选择语句详解1. 图示if…else流程2. if…else代码流程3. if…else的三种情况3.1...
    99+
    2024-04-02
  • 如何在java中使用if分支语句
    如何在java中使用if分支语句?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Java的特点有哪些Java的特点有哪些1.Java语言作为静态面向对象编程语言的代表,实现了...
    99+
    2023-06-14
  • MongoDB和SQL语句的对比及如何选择合适的数据库?
    在当今的软件开发领域中,选择合适的数据库对项目的成功至关重要。在选择数据库的时候,开发者们通常会面临两个主要的选择:关系数据库和非关系数据库。MongoDB和SQL是这两种类型数据库的代表,本文将对它们进行一个详细的对比,并提供一些关于如何...
    99+
    2023-12-17
    MongoDB SQL语句 数据库选择
  • 新手应该如何选择c语言和java
    这篇文章主要介绍新手应该如何选择c语言和java,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!C语言是什么C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发,使用C语言可以以简易的方式编译、处理低级...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作