基本型

  特殊な boolean 型



C では、 条件の書けるところに数値が使用できますが、Java ではエラーになります

C
  
double a = 1;

if ( a ) {
	printf( "double でも OK" );
}
  

Java
  
double a = 1;

if ( a ) {
	System.out.println("");
}
--------------------------------------------------------
互換性のない型
検出値  : double
期待値  : boolean
	if ( a ) {
  

これは、データ型の管理が厳密である事を示しますが、Java をやり始めた頃は少し面食らいます。
しかし、C では以下のようなミスを良く犯すのですが Java ではエラーになるので問題を事前回避できます

C
  
int a = 1;

// 正しい
if ( a == 1 ) {
	printf( "a と 1 が等しい\n" );
}

// 間違い
if ( a = 1 ) {
	printf( "左辺値 a が 0 で無い\n" );
}
  

Java
  
int a = 1;

// 正しい
if ( a == 1 ) {
	System.out.println("a と 1 が等しい");
}

// エラー
if ( a = 1 ) {
	System.out.println("");
}
--------------------------------------------------------
互換性のない型
検出値  : int
期待値  : boolean
if ( a = 1 ) {
  

結局のところ、Java では条件を書くところは、boolean 型しか認めないという事で、条件式の結果は boolean 型で
あるという事が言えます。さらに、事実として他の整数型から代入する事も、他の整数型に代入する事も、キャストする
事もできません。

C から考えると特殊な位置づけです

以下の4つの代入演算は全てエラーとなります

  
int a = 1;
boolean flg = true;

a = flg;
flg = a;
a = (int)flg;
flg = (boolean)a;
  

boolean 型にセットできるのは true か false のみです



  変数は定義時に初期化する



プログラミングとして考えた場合当たり前の事ですが、C 言語ではコンパイラに特に強制されない
のと、定義時に{}プロック内で初期化してしまうとスタックが使用されないなど、初期化が必要に
なるまで記述する事が無い( 記述を忘れる )という悪習があります

正しい
  
int a = 1;

if ( a == 1 ) {
	System.out.println("a は 1 に等しい");
}
  

エラー
  
int a;

if ( a == 1 ) {
	System.out.println("a は 1 に等しい");
}
--------------------------------------------------------
変数 a は初期化されていない可能性があります。
	if ( a == 1 ) {
  



  配列はオブジェクト

まったく C と違うので、Java を始めた時はたとえ使えてもしばらく理解できないと思います。
C での配列はしょせんアドレス計算ですが、Java では全く別物です

オブジェクトなので、初期値は null を使用します

  
int [] a = null;

if ( a == null ) {
	System.out.println("a は無効です");
}

int i = 0;

// 実際のメモリを割り付けます
a = new int[10];
for( i = 0; i < 10; i++ ) {
	// 配列の内容は 0 で初期化されています
	System.out.println(a[i]);
}
  

オブジェクトである為、配列には length というプロパティが存在します

  
int [] a = {1,2,3};

// 実行結果は 3 です
System.out.println(a.length);
  

以下は、オブジェクトとして参照の代入を行ったものです
( a と b は同じものです )

  
int [] a = {1,2,3};

int [] b = a;

// a[1] も 100 になります
b[1] = 100;

System.out.println(a[1]);
System.out.println(b[1]);

if ( a == b ) {
	System.out.println("同一オブジェクトです");
}
  

以下は clone メソッドを使用してオブジェクトをコピーしています

  
int [] a = {1,2,3};

int [] b = a.clone();

b[1] = 100;

System.out.println(a[1]);	// 2
System.out.println(b[1]);	// 100

if ( a != b ) {
	System.out.println("それぞれ別のオブジェクトです");
}
  










  infoboard   管理者用   
このエントリーをはてなブックマークに追加





フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ