zoukankan      html  css  js  c++  java
  • Java对于表达式中的自动类型提升

    1 表达式中的自动类型提升

    表达式求值时,Java自动的隐含的将每个byteshortchar操作数提升为int类型,这些类型的包装类型也是可以的。

    例如:

    short s1 = 1;
    s1 = s1 + 1;
    

    s1+1运算中的操作数s1会被自动提升为int类型,s1+1运算结果会成为int类型,再赋值给short类型的s1时,编译器会报告需要强制转换类型的错误。需要改为short s1=1; s1=(short)(s1+1);结果就是short类型。

    例如:

    short s1 = 1; 
    s1 += 1;
    

    +=是java语言中的运算符,Java编译器会对它特殊处理进行正确的编译。

    2 类型提升规则

    (1)byteshortchar类型的值都被提升为int类型;

    (2)如果有一个操作数是long类型,就将整个表达式提升为long类型;

    (3)如果有一个操作数是float类型,就将整个表达式提升为float类型;

    (4)如果任何一个操作数为double类型,结果将为double类型。
    例如:

    	byte b=1;
    	char c='a';
    	short s=1024;
    	int i=50;
    	float f=2.0f;
    	double d=.123;
    	double result = (f * b) + (i / c) - (d * s); 
    	//f*b中,b被自动提升为float类型,该表达式结果是float类型;
    	//i/c中,c被自动提升为int类型,该表达式结果是int类型;
    	//d*s中,s被自动提升为doubl类型,该表达式结果是double类型;
    	//最后,float+int-double,结果会被提升为double类型,double类型为最后结果result的类型。
  • 相关阅读:
    团队第二次冲刺10(6.03)
    购买图书问题
    找水王02
    学习进度13
    团队第二次冲刺09(6.02)
    团队第二次冲刺08(6.01)
    C++通过Swig跨线程回调Python代码
    Windows 10系统永久关闭Windows Defender Antivirus防病毒程序方法
    Windows系统Python直接调用C++ DLL
    Windows10系统Python2.7通过Swig调用C++过程
  • 原文地址:https://www.cnblogs.com/xieshuang/p/5898642.html
Copyright © 2011-2022 走看看