1778
コメント:
|
2565
|
削除された箇所はこのように表示されます。 | 追加された箇所はこのように表示されます。 |
行 3: | 行 3: |
=== データ型 === | |
行 4: | 行 5: |
行 11: | 行 13: |
||char||16ビット||Unicode文字|| ||boolean|| ||真偽値 true または false|| |
* 基本データ型のバイト数は処理系によらず決まっています。 . したがって、扱える値の範囲も決まっています。 . Cでは処理系により異なる可能性がある。 ---- === 演算と型変換 === 四則演算はCと同様に記述することができます。 計算式の中で型が混在した場合、 次の方向にのみ変換が行われます。 {{{ byte → short → int → long → float → double }}} 代入時も同様です。 . Cでは代入時のみ、逆方向の変換も行われます。(Javaでは行われない) 逆方向には変換されません。 . 型変換が必要なときは、キャスト演算子を使います。 === 例1 === {{{ double a; a = 1.25 * 3 * 4; }}} . 代入文の右辺に 1.25 があるため 3 や 4 は double に変換して計算されます。 . double の計算結果が double型 の変数 a に代入されます。 === 例2 === {{{ int a; a = 1.25 * 3 * 4; }}} . 代入しようとする変数が int型 なので、doublet型 の値は代入できません。 . Javaではエラーとなります。 . CではOKでした。 === 例3 === {{{ int a; a = (int)(1.25 * 3 * 4); }}} . int型の変数に代入するには、演算結果を int に変換してやればよい。 . 型変換を強制するにはキャスト演算子を用います。 |
行 15: | 行 62: |
=== Cとの違い === | === infinity, NaN === |
行 17: | 行 64: |
* 基本データ型のバイト数は処理系によらず決まっています。 | 整数演算 . 0で割るとエラーになります。 . 演算結果が扱える範囲を超えるとオーバーフローが起こり、変な値になります。 |
行 19: | 行 68: |
* 数値の型変換 計算式の中で型が混在した場合、 byte → short → int → long → float → double の方向にのみ変換が行われます。 . '''例''' {{{ int i; i = 1.25 * 3 * 4; }}} . 代入文の右辺に 1.25 があるため 3 や 4 は double に変換して計算されます。(ここまではOK) . その後 int に変換して i に代入しようとしています。 . Cではこれで動作しますが、Javaではdoubleをintに変換できずエラーとなります。 . 型変換を強制するにはキャスト演算子を用いて次のように記述します。(JavaでOK) {{{ i = (int)(1.25 * 3 * 4); }}} * charは16ビットです。 * charとintの変換は行われません。 * charの配列は文字列とは異なります。 * boolean以外を論理演算や条件に用いることはできません。 . 次のような書き方も間違いです。 {{{ int k; ... while ( k ) { ... } }}} |
浮動小数点演算 . 0で割ると infinity(無限大) になります。 . 演算結果が扱える範囲を超えたときも infinity(無限大) になります。 . -infinity(負の無限大) もあります。 . infinity を含むなどで計算できない場合に NaN(Not a Number) になることがあります。 |
算術演算
データ型
数値を扱う基本データ型には次のものがあります。
型
長さ
値
byte
1バイト
整数 -128 から 127
short
2バイト
整数 -32,768 から 32,767
int
4バイト
整数 -2,147,483,648 から 2,147,483,647
long
8バイト
整数-9,223,372,036,854,775,808 から 9,223,372,036,854,775,807
float
4バイト
浮動小数点 およそ±3.40282347E+38(6桁)
double
8バイト
浮動小数点 およそ±1.79769313486231570E+308(15桁)
- 基本データ型のバイト数は処理系によらず決まっています。
- したがって、扱える値の範囲も決まっています。
- Cでは処理系により異なる可能性がある。
演算と型変換
四則演算はCと同様に記述することができます。
計算式の中で型が混在した場合、 次の方向にのみ変換が行われます。
byte → short → int → long → float → double
代入時も同様です。
- Cでは代入時のみ、逆方向の変換も行われます。(Javaでは行われない)
逆方向には変換されません。
- 型変換が必要なときは、キャスト演算子を使います。
例1
double a; a = 1.25 * 3 * 4;
- 代入文の右辺に 1.25 があるため 3 や 4 は double に変換して計算されます。
- double の計算結果が double型 の変数 a に代入されます。
例2
int a; a = 1.25 * 3 * 4;
- 代入しようとする変数が int型 なので、doublet型 の値は代入できません。
- Javaではエラーとなります。
- CではOKでした。
例3
int a; a = (int)(1.25 * 3 * 4);
- int型の変数に代入するには、演算結果を int に変換してやればよい。
- 型変換を強制するにはキャスト演算子を用います。
infinity, NaN
整数演算
- 0で割るとエラーになります。
- 演算結果が扱える範囲を超えるとオーバーフローが起こり、変な値になります。
浮動小数点演算
- 0で割ると infinity(無限大) になります。
- 演算結果が扱える範囲を超えたときも infinity(無限大) になります。
- -infinity(負の無限大) もあります。
- infinity を含むなどで計算できない場合に NaN(Not a Number) になることがあります。