表达式与类型问题

自动类型转换:低级向高级转换

    

  1.   short  s=5;

  2.   s=s-2;

  3.  char c='a';

  4. int i=23;

  5. double d=0.314;

  6.  double resoult= b+c+i*d;

  7. int val=3;

  8.  int intResult=23/val;

 9. system.out.println('a'+7+''Hello World!'')//输出  104HelloWorld!

 10.System.out.println("Hello World"+'a'+7)//输出 Hello Worlda7

     上述表达式中 第二行代码无法编译成功,原因在于s 是short类型的变量,但是s-2 中的2为int类型,s-2表达式的类型就是int类型,s此时转换为int类型了,而第6行代码则是正确的,d的等级最高,double类型,因此该表达式类型是double类型,第8行的代码也是正确的,intResult的值等于7,因为23/val不能整除,但是val是int类型,但表达式类型依然保持为int类型.

    第9行中 'a'+7,首先'a'转为int类型,然后和+7为104 当基本类型值104和String类型进行连接运算时,基本类型的值自动转换为String类型,然后+连接运算符才起作用.

 复合赋值运算符

     short s=5;  s=s-2;   编译错误,此时若要计算,可以使用复合赋值运算符 比如

     short s=5; s -=2;  

 不过,复合赋值运算符包含了一个隐式的类型转换:

      a=a+5 ;  a+=5;  

      a+=5 等价于 a=(a的类型)(a+5);因此,若结果的类型与该变量的类型相同,转型不会有影响,但是若结果值的类型比该变量的类型要大,那么复合赋值运算符将会执行一次强制性类型转换,将会造成高位的"截断"

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值