关于强制类型转换的问题,很多书都讨论过,写的最详细的是C++ 之父的《C++ 的设计和演化》。最好的解决方法就是不要使用C风格的强制类型转换,而是使用标准C++的类型转换符:static_cast, dynamic_cast。标准C++中有四个类型转换符:static_cast、dynamic_cas
Java 中强制类型转换运算符与方法调用运算符是不同的,优先级与结合性都有区别,如下表所示:
优先级
运算符
结合性
1
[]数组运算 .点运算符 ()调用方法
从左到右
2
! ~ ++ -- +(一元加) -(一元减) ()强制类型转换 new
从右到左
3
* / %
从左到右
4
+(二元加) -(二元减)
从左到右
5
>> << >>>
从左到右
6
< <= > >= instanceof
从左到右
7在前面一篇文章里谈到编程语言里面只有Int,float,double等基本数据类型,而没有有理数类型,因此我们自定义了一个Rational类型(见http://blog.csdn.net/yanerhao/article/details/45009283),表示有理数,含有四则运算,比较,输出结果等成员函数,但是与常
== !=
从左到右
8
&
从左到右
9
^
从左到右
10
|
从左到右
11
&&
从左到右
12
||
从左到右
13
?:
从左到右
14
= += -= *= /= %= &= |= ^= <<= >>= >>>=
从右到左
这就是为什么形如:(type)object.property; 的执行是先 object.property 后强制类型转换。