double a = 1;
if ( a ) {
printf( "double でも OK" );
}
Java
double a = 1;
if ( a ) {
System.out.println("");
}
--------------------------------------------------------
互換性のない型
検出値 : double
期待値 : boolean
if ( a ) {
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 ) {
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("それぞれ別のオブジェクトです");
}