int, byte, short, long
- Javaのデフォルトは
int
- 時に
byte
やshort
が使いたいとき、もしくはintで扱える最大〜最小値を越える場合、Javaは自動的にint
を使用するのでcastを行わないといけない場合がある int
は32bits(4bytes)、byteは8bits(1byte)、shortは16bits(2bytes), longは64bits(8bytes)long
を使う時はlong l_value = 10000L
とLongですよと明示的に示すやり方が好きな人もいる- また、引数代入時に
int i_value = 100_000_000
のようにアンダースコアを使用することもできる - 結論、基本的に
int
を使用すればよい
float, double
- Javaのデフォルトは
double
理由は少数以下の表示がfloatよりも正確だから。あとはjavaのライブラリ関数などもdoubleを使用しているので - 上記理由からあえて
float
を使う場合はcastが必要になる場合あり - floatの精度は7桁、doubleは16桁
- doubleやfloatを使う時は
100.00f
や101.00d
とfloat, doubleですよと明示的に示すやり方が好きな人もいる - floatやdoubleもアンダースコア表記ができる
結論、こちらも基本的に
double
を使用すればよいよく忘れるけどintで割り切れない場合の値は切り捨てです。
ちなみに、各primitive typeの最大値や最小値を知りたい場合は
int max_value = Int.MAX_VALUE; int min_value = Int.MIN_VALUE;
それぞれをsoutすればよい。
IntのlongのMAX値 追記5/25
Intの場合
-2147483648 to 2147483647
です。(もしかしたら環境で変わるのかもだけど)
約2 * 109と覚えておきましょ
追記11/11
B - Various distances
で詰んだ...
intは9桁までしか表現できないので、5桁*5桁の積は表現できません。これをlongに代入していたとしても、
オーバーフローした値がlongに代入されるので、無意味です。
intは9桁まで!!!!!
longの場合
-9223372036854775807 to 9223372036854775807
です。
19桁となります。
char
- Javaではまあそうそう
char
は使わないような。一文字しか格納できない。''で一文字を囲む。 - unicodeの番号をそのまま打ち込むこともできる。
char uni = '¥0044'
とすればD
が格納される
String
なぜJavaではStringだけが大文字で宣言されてるの?って素朴な疑問なんですけど
基本的にはStringはprimitive typeには分類されず、class
らしい。
でもまあほぼprimitive typeみたいに使えるよって話です。
Stringにももちろんunicode番号を使う子もできる。