1

Eclipseが教えてくれるのはなぜですか

int a = 4;
if (a) {
    //do stuff
}

間違っている、またはCannot convert from integer to boolean

私はC、C ++でそのようなものを書くことに慣れていて、Javaもそれで大丈夫だと思いました。Eclipseはどのように機能しますか?それとも、Javaの仕組みですか?回避策はありますか?

4

4 に答える 4

9

Java は、C++ とは異なり、最初からブール型が組み込まれていました。
したがって、ブール値として整数を使用する必要はありませんでした。

整数からブール値への暗黙的な変換を禁止するとif (x = 4)、ほとんどの場合、悪名高いバグを防ぐことができます。

于 2012-12-09T01:27:26.463 に答える
4

Java ブール値リテラルでは、true値とfalse値のみを持つことができます。0 と 1 は Java ではブール値として機能しません。

FROM Java 言語仕様:

ブール型には、ブール リテラル true と false で表される 2 つの値があります。

于 2012-12-09T01:27:34.873 に答える
0

その理由は、C には特定の型がないためですboolean。代わりに、0 以外の整数はブール値の「true」に評価されます。したがって、C コードでは次のようになります。

if(a)

a0 以外の値 4 が割り当てられ、条件は次のように評価されます。true

Java には基本型がbooleanあり、内部の条件の値はifこの型でなければなりません。

a=4

in Java は に 4 を割り当てa、評価の最終結果を として返しますが、integer value 4booleanが期待されます。したがって、互換性のない型に関するコンパイル時エラーが発生します。

于 2012-12-09T02:03:05.237 に答える
0

int 変数 a に対する if(a != 0) は、C または C++ の if(a) と同じことを Java で行います。

より一般的には、Java は C または C++ の方言ではないことを認識することが非常に重要です。最も強い類似性は表面的な外観にあります。Javaは別の言語として学ぶ必要があります。Java を作成するときに C または C++ の知識に依存すると、非常にイライラすることになります。使い慣れたイディオムの多くは機能しません。機能するイディオムもわかりません。

于 2012-12-09T02:15:31.733 に答える