条件运算符与“+”“++”运算符

条件运算符:
exp = condition?E1:E2 ;
属于表达式,结果也应是某个类型。在混合类型运算中,即E1与E2类型不同,可能发生widing或narrowing的类型转换。
特殊规则: E1是short,byte,char,E2是int,当int是constant时,exp类型是E1的类型;否则exp是int型。
其他类型情况,如short,long,float,double,则都选择最大长度数据类型。
char x = 'c';
System.out.print(true? x: 0);// print(char)
System.out.print(false? 0f: x);// print(float)

+运算符:
1)基本数据类型的加法运算
2)String对象的连接运算
   Str + anything ——隐含将anything转换成String;
3)缩写形式 +=
 E1 += E2  <=> (T)((E1) + (E2)),对于混合数据类型运算,隐含强制类型转换;
 如果E1是String对象,则E2可以是anything;
 当E1既不是String,也不是基本数据类型,那么+=运算不合法

  扩展:1.组合赋值运算符 *=  /= %= -=,当运算符是short,byte,char等integer型时,存在隐式类型转换,如

byte i; i += 0;则先将byte提升至int,然后将运算的int结果在“narrow”回byte,这种隐式转换会引发不容易发现的问题。

          2. ==,!=除了是数值型比较运算符,还可以用来比较对象是不是reference identity

          3. 在计算机中,整数型不是对称的,如Integer.MIN_VALUE(-231)  取负值仍为 Integer.MIN_VALUE ,任何类型的数都是有boundary(如int 都要模 232)的,overflow是wolfman,时刻要小心。

 

++运算符

后缀自增运算i++表达式,包含2个“变量”分别是i和tmp(i++),所以i++相当于

tmp = i;

i = i + 1;

因此 i = i++; 无论执行多少次,永远都等于i的初始值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值