サイズ: 1526
コメント:
|
サイズ: 2824
コメント:
|
削除された箇所はこのように表示されます。 | 追加された箇所はこのように表示されます。 |
行 1: | 行 1: |
== プリミティブとオブジェクト == | ## page was renamed from プリミティブとオブジェクト == 基本データ型 == |
行 7: | 行 8: |
プリミティブは基本データ型であり、Javaでは次の8つがあります。 | 基本データ型のことをプリミティブといい次の8つがあります。 |
行 18: | 行 19: |
Cとの違い . charは16ビットです。 . booleanと整数の相互変換はできません。 |
|
行 25: | 行 22: |
オブジェクトには'''配列'''型と'''クラス'''型があります。 | |
行 33: | 行 30: |
型は8つの基本型またはクラスである。 | 型は基本型または配列またはクラスである。 |
行 38: | 行 35: |
ただし、プリミティブとオブジェクトで保持のされ方が異なる。 | |
行 39: | 行 37: |
次のような図で表されることもある。 . {{attachment:hensu2.png}} |
プリミティブの値は、変数の対応する場所に'''直接保持'''されます。 変数の場所を四角で表すと図のようになる。 |
行 42: | 行 40: |
例 | |
行 50: | 行 48: |
Javaではプリミティブ型のデータのみその値が変数に対応する箱の中に直接保持され、 オブジェクト型のデータの場合は別の場所に値が保持される。 |
オブジェクトの場合データは別の場所に作られ、変数はオブジェクトを参照する。 実際の値はオブジェクト内にある。 |
行 54: | 行 52: |
---- === Cとの違い === 1. 基本データ型のバイト数は処理系によらず決まっています。 1. 数値の型変換 計算式の中で型が混在した場合、 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); }}} 3. charは16ビットです。 1. charとintの変換は行われません。 1. charの配列は文字列とは異なります。 1. boolean以外を論理演算や条件に用いることはできません。 . 次のような書き方も間違いです。 {{{ int k; ... while ( k ) { ... } }}} |
基本データ型
Javaのデータはプリミティブとオブジェクトの2種類に大きく分けられます。
プリミティブ
- 基本データ型のことをプリミティブといい次の8つがあります。
byte
1バイト整数
short
2バイト整数
int
4バイト整数
long
8バイト整数
float
4バイト浮動小数点
double
8バイト浮動小数点
char
Unicode文字
boolean
真偽値
オブジェクト
プリミティブ以外のデータはすべてオブジェクトです。
オブジェクトには配列型とクラス型があります。
変数
変数を使うには、その型と名前を宣言しなければならない。
型は基本型または配列またはクラスである。
変数の値
変数は値を保持することができる。 ただし、プリミティブとオブジェクトで保持のされ方が異なる。
プリミティブの値は、変数の対応する場所に直接保持されます。 変数の場所を四角で表すと図のようになる。
例
次の図は変数suuが値103.75を保持していることを表している。
オブジェクトの場合データは別の場所に作られ、変数はオブジェクトを参照する。 実際の値はオブジェクト内にある。
Cとの違い
- 基本データ型のバイト数は処理系によらず決まっています。
- 数値の型変換
- 計算式の中で型が混在した場合、 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 ) { ... }