固定小数点・浮動小数点
浮動小数点のメリットはメモリの節約。
0.0000001は8桁必要。
1 * 10^-6 なら「1」と「10」と「-」と「6」の5桁に節約できる。
float型、double型が浮動小数点。
・固定小数点の例
1.5555
314.555
3.141592
・浮動小数点の例
0.0000001 * -10
0.000001* 10^-2
1 * 10^-7
100 * 10^-9
floatもdoubleもなぜ誤差が出るの?
・参考
10進数→2進数に変換するときに誤差が出てしまうらしい。
・例 0.3
- 10進数「0.3」→2進数「0.010011001100...」という無限小数になる。
- floatもdoubleも桁数に上限があるので丸められる。
- 誤差が発生。
じゃあなんでBigDecimalは誤差でないん?
小数部を整数として扱っているから。
例えば0.3は
3 × 10^-1 という風に扱う。
3は2進数で「0011」と表せるから誤差は出ない。
nullとは?
nullはメモリに何のデータも入っていないこと。
空文字とは違うのです。
基本だけどたまにわからなくなってしまうので。
// null String ss = null; // 空文字 String s = "";
環境変数とは?
OS内のすべてのプロセスが参照できる変数という認識で良さそう。
OSのグローバル変数といったイメージ。
グローバル変数なので、どんなに深い階層からも参照可能。
参照だけでなく変更も可能。
- 環境変数:OculusBase
- 値:C:\Program Files\Oculus\
↑こんな感じでどのディレクトリからでも「cd %環境変数%」で一発で移動できる。
・参考
自動型変換の法則
四則演算の時は、基本的にはより精度の高い方に変換される。
12 - 5 # 7 12.0 - 5.0 # 7.0 12 - 5.0 # 7.0
ただし、割り算の場合は言語によって結果が異なる
12 / 5 # Java, C++ : 2 # JavaScript, PHP, Python : 2.4 12.0 / 2.0 # 6.0
基本型(プリミティブ型)と参照型
※以下はJavaの場合
・基本型
int/char/double/float/byteなど
・参照型
Integer/Stirng/Double/Floatなど
- 基本型は値が直接入る。
- 参照型はメモリアドレス(参照値)が入る。
基本型は宣言時に型に応じたメモリ領域が確保される。
参照型はどのくらいメモリ使うのかわからないので、実体はヒープ領域に入る。
スタック領域とヒープ領域と静的領域
- スタック領域は後入れ先出し。
- ヒープ領域は必要の都度、割り当てられる。
- 静的領域はアプリケーション開始時に確保される。
スタック領域には基本型の値、参照型のメモリアドレスが入る。
参照型の実体はヒープ領域に入る。
ちなみにstaticメンバやグローバル変数は静的領域に入る。