首页编程java编程java用什么代替switch更美观,有什么完美的方法替代java中的 if-else,switch-case

java用什么代替switch更美观,有什么完美的方法替代java中的 if-else,switch-case

编程之家2023-10-1388次浏览

大家好,今天来为大家解答java用什么代替switch更美观这个问题的一些问题点,包括有什么完美的方法替代java中的 if-else,switch-case也一样很多人还不知道,因此呢,今天就来为大家分析分析,现在让我们一起来看看吧!如果解决了您的问题,还望您关注下本站哦,谢谢~

java用什么代替switch更美观,有什么完美的方法替代java中的 if-else,switch-case

Java的switch 用的时候除了case 那个defau lt的怎么用的

switch

语句的格式:

switch

java用什么代替switch更美观,有什么完美的方法替代java中的 if-else,switch-case

(

整型或字符型变量

)

java用什么代替switch更美观,有什么完美的方法替代java中的 if-else,switch-case

{

case

变量可能值1

分支一;

break;

case

变量可能值2

分支二;

break;

case

变量可能值3

分支三;

break;

...

default

:

最后分支;

switch

的语法里,我们要学到4个关键字:switch、case

、break、default。

在switch

(

变量

)这一行里,变量只能是整型或字符型。程序先读出这个变量的值,然后在各个"case"里查找哪个值和这个变量相等,如果相等,就算条件成立,程序执行相应的分支,直到碰上break或者switch语句结束。

了解一下switch,case,break,default的意思,对理解前面的一切也会有帮助,它们分别是:开关,情况,中断,默认(值)。那么用一句话套起来的说法就是:根据开关值的不同,执行不同的情况,直到遇上中断;如果所有的情况都不符合开关值,那么就执行默认的分支。

最后说一下关于switch中非常重要的几个注意点。

第一、switch

(

整型或字符型变量

)中,变量的类型如文中所标,只能是整型和字符类型。它们包含

int,char。当然无符类型或不同的长度整型(unsigned

int,short,unsigned

char)等都可以。另外,枚举类型(enum)内部也是由整型或字符类型实现。所以也可以。实型(浮点型)数就不行,如:

float

a

=

0.123;

switch(a)

//错误!a不是整型或字符类型变量。

{

....

}

第二、case之后可以是直接的常量数值,如例中的1、2、3、4,也可以是一个使用常量计算式,如2+2等,但不能是变量或带有变量的表达式,如

a

*

2等。当然也不能是实型数,如4.1,或2.0

/

2等。

switch(formWay)

{

case

2-1

:

//正确

...

case

a-2

:

//错误

...

case

2.0

:

//错误

...

}

另外,在case与常量值之后,需要一个冒号,请注意不要疏忽。

第三、break

的作用。

break

使得程序在执行完选中的分支后,可以跳出整个switch语句(即跳到switch接的一对{}之后),完成switch。如果没有这个break,程序将在继续前进到下一分支,直到遇到后面的break或者switch完成。

比如,假设现在程序进入case

1:

中的分支,但case

1的分支这回没有加break:

case

1

:

System.out.println("您是通过搜索引擎来到本网站的。");

case

2

:

System.out.println("您是通过朋友介绍来到本网站的。");

那么,程序在输出"您是通过搜索引擎来到本网站的。"

之后,会继续输出case

2中的"您是通过朋友介绍来到本网站的。"

请大家将前面实例中的代码片段改为如下(红色部分,即将所有的break都通过加//使之无效。):

...

case

1

:

System.out.println("您是通过搜索引擎来到本网站的。"

);

//break;

case

2

:

System.out.println("您是通过朋友介绍来到本网站的。");

//break;

case

3

:

System.out.println("您是通过报刊杂志来到本网站的。");

//break;

case

4

:

System.out.println("您是通过其它方法来到本网站的。");

//break;

default

:

System.out.println("错误的选择!请输入1~4的数字做出选择。");

...

运行后,结果会是如何?请大家动手试试,然后在作业中回答我。

第四、default是可选中,前面我们已经说过它的用处,及如果没有default,程序在找不到匹配的case分支后,将在switch语句范围内不做什么事,直接完成switch。大家也可以在实例中将default的代码注释掉,然后试运行,并且在选择时输入5。

...

//default

:

//cout

<<

"错误的选择!请输入1~4的数字做出选择。"

<<

endl;

...

第五、必要时,可在各个case中使用{}来明确产生独立的复合语句。

前面我们在讲if...语句和其它流程控制语句时,都使用{}来产生复合语句:

if

(条件)

{

分支一;

}

除非在分支中的语句正好只有一句,这里可以不需要花括号{}。但在switch的各个case语句里,我们在语法格式上就没有标出要使用{},请看:

switch

(

整型或字符型变量

)

{

case

变量可能值1

分支一;

break;

case

变量可能值2

....

}

一般教科书上只是说

case

分支可以不使用{},但这里我想提醒大家,并不是任何情况下case分支都可以不加{},比如你想在某个case里定义一个变量:

switch

(formWay)

{

case

1

:

int

a=2;

//错误。由于case不明确的范围,编译器无法在此处定义一个变量。

...

case

2

:

...

}

在这种情况下,加上{}可以解决问题。

switch

(formWay)

{

case

1

:

int

a=2;

//正确,变量a被明确限定在当前{}范围内。

...

case

2

:

...

}

有什么完美的方法替代java中的 if-else,switch-case

如果有大量同样的逻辑分支判断组,只是执行内容不一样,那么经典方法是用多态,建一个抽象基类,里面包含一个抽象函数。每个子类代表一个逻辑分支,实现抽象函数时,函数逻辑对应之前的if分支的内容。但是一定会保留一组if,提供在什么情况下返回什么子类的信息。这样做的好处是可以把多个if合并成一个。

如果没有大量同样的逻辑分支判断组的话,没必要调整,直接这么写就好。

java语言中可以用 switch 分支语句代替 if 条件语句吗

问题阐述

通常情况下,switch语句比一系列嵌套的if语句更有效,那么是否可以用switch分支语句代替if条件语句呢?

昆明北大青鸟java培训专家解答

在实际编程过程中,并不是所有的if条件语句都可以用switch分支语句代替。由于switch语句的表达式只能测试byte、short、int或char类型的相等情况,而if语句可以计算任何类型的布尔表达式,所以对于判断非相等情况时,就不能用switch语句代替if语句。

例如,下面的用于比较两个变量大小的if语句,就不能使用switch语句代替。

inta=36;//声明int型变量a,并赋初值intb=77;//声明int型变量b,并赋初值if(a>b){//判断a是否大于bSystem.out.println("变量a大于变量b");//如果条件成立,输出的信息}else{System.out.println("变量a小于变量b");//如果条件不成立,输出的信息}专家点评

在可以使用switch语句代替if语句的情况下,也最好遵循下面的原则:如果条件在3重之内,最好使用if条件语句,如果超过了3重,则最好使用switch分支语句。

java中switch里能放什么类型

jdk1.7以前的版本switch(expr1)中,expr1是一个整数表达式,整数表达式可以是int基本类型或Integer包装类型,由于,byte,short,char都可以隐含转换为int,所以,这些类型以及这些类型的包装类型也是可以的。因此传递给 switch和case语句的参数应该是 int、 short、 char或者 byte,还有enum。

long,string都不能作用于swtich。

在jdk 1.7中switch的参数类型可以是字符串类型。

java用什么代替switch更美观和有什么完美的方法替代java中的 if-else,switch-case的问题分享结束啦,以上的文章解决了您的问题吗?欢迎您下次再来哦!

java为什么要垃圾回收 Java中垃圾回收有什么目的什么时候进行垃圾回收java中session是什么,java中session是不是一个类,如是,源代码是什么