簡體   English   中英

為什么op-assign運算符在java中不安全?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM