java基础:条件表达式

条件表达式:x=<表达式1>?<表达式2>:<表达式3>

其意义是:先求解表达式1,若为非0(真),则求解表达式2,将表达式2的值赋给x。若为0(假),则求解表达式3,将表达式3的值赋给x。

条件语句:
if(a>b) max=a;
else max=b;
可用条件表达式写为
max=(a>b)?a:b;

执行该语句的语义是:如a>b为真,则把a赋予max,否则把b 赋予max.
使用条件表达式时,还应注意以下几点:

  1. 条件运算符的运算优先级低于关系运算符和算术运算符,但高于赋值符.
    因此
    max=(a>b)?a:b
    可以去掉括号而写为
    max=a>b?a:b

  2. 条件运算符?和:是一对运算符,不能分开单独使用.

  3. 结合性是右结合性。条件运算符的结合方向是自右至左.
    例如:
    a>b?a:c>d?c:d
    应理解为
    a>b?a:(c>d?c:d)
    这也就是条件表达式嵌套的情形,即其中的表达式3又是一个条件表达式.

4、JAVA中条件运算表达式中的关系表达式值的类型必须为布尔类型,只能是true或false。

5、与C语言不同的是,JAVA中条件表达式的值必须参与运算。例子如下:
publicclassdemo{
publicstaticvoidmain(String[]args){
inta=10,b=20,y;
a>b?(y=a):(y=b;)//1,这样写是错误的
y=a>b?a:b;//2,这样写是正确的
y=a<b?b:b<c?a:c;//3,这样写是正确的
}
}
数据类型
表达式1,表达式2,表达式3的类型可以不同.此时条件表达式的值的类型为它们中较高的类型
如果表达式1和表达式2具有相同的类型T,条件表达式的类型为T。
如果表达式1和表达式2中一个有类型T(byte、short或char),而另一个是int类型的常量表达式,其值又可以用类型T表示,则T为条件表达式的类型。
混合类型的计算,e2和e3被提升之后的类型为条件表达式的类型。
public static void 条件表达式的type(){
char x = ‘X’;
int i = 0;
System.out.println(true ? x : 0); //类型为char
System.out.println(true ? x : -1); //类型为int
System.out.println(false ? i : x); //类型为int
}

/*
 * 如果其中有一个是变量,按照自动类型转换规则处理成一致的类型;
 * 一种类型为char,short,byte,另一种为int常量,而且该常量能被前三种类型表示,则返回的是前三种的类型;
 * 如果都是常量,如果一个是char,如果另一个是[0~65535]之间的整数按char处理;
 * 			如果一个是char,另一个是其他,按照自动类型转换规则处理成一致的类型;
 */
public class Main {
	public static void main(String[] args) {
char x = 'X';
int i = 0;
System.out.println(true ? x : 0); //类型为char
System.out.println(true ? x : -1); //类型为int
System.out.println(true ? x : 10);
System.out.println(false ? i : x); //类型为int

	}
}

输出:
X
88
X
88

参考

https://blog.csdn.net/a15995111a/article/details/52806028
https://blog.csdn.net/weixin_48101575/article/details/110709424

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值