[英]Why aren't op-assign operators type safe in java?
我不確定問題的措辭是否明確,但一個例子會更清晰。
我發現它在Java中不起作用:
int a = ...;
a = 5.0;
但這會:
int a = ...;
a += 5.0;
即,似乎=運算符是類型安全的,但+ =不是。 這有什么深刻的理由,還是設計師必須采取的另一種任意決策語言。
原因是數學運算會進行一些隱式轉換:
a += 5.0;
評估如下:
a = (int) ((double) a + 5.0);
但是,分配需要明確的演員表。
(它可能是浮點而不是雙倍,我不記得哪個Java視為十進制文字。)
讓生活更輕松
我們再走一點吧。 考慮:
byte b;
...
++b;
增量確實在做:
b = (byte)(1 + (int)b);
即使使用+=
它也沒有變得更好:
b += b;
是:
b = (byte)((int)b+(int)b);
這會使這些運算符對byte / short / char無用。
當然,在我們有任意大小的整數之前,我不會高興。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.