Java Unsigned Type

What is unsigned type

unsigned type 是說,假設 int 能夠放 100 ~ -100,給了 int unsigend 就能夠處理 0~ 200 的數值,不需要拿一個 Long 來解決。 某些語言(Like C )是有支援 unsigned type , 沒有 unsigned type 的缺點是必須要花兩倍的 memory 來處理一個相似的問題, 另外一個是可讀性的問題,當看到一個變數是 unsigend,就能清楚的知道,肯定不會有負數出現。

Why Java didn’t support unsigned type

至於為什麼 Java 不支援,大概有幾個原因

  • Java 的設計者,想要單純化原始型別的處理。
  • 常用的情境下,大部分都不會是 unsigend 的情形。

我認為比較真的理由,是單純化這種原始型別,不常用的情境,就不要過度設計了。

Modern Java handled unsigned type

不過 Java8 開始以後,已經開始對 unsigned 支援了,當然不會是多一個 Type 叫 unsigned ,這影響可能會有點大。 另外在 Guava 裡面,也有提供 unsigned 支援:

1
2
UnsignedInteger newType = UnsignedInteger.valueOf(maxUnsigned);
newType = newType.plus(UnsignedInteger.valueOf("1")); // Increment