質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

5回答

2661閲覧

IF文における条件の書き方

karain

総合スコア98

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2015/02/12 05:16

if(flg == true){
(trueの場合の処理)
}

とJavaでは上記のように書くのは良くないというふうなことを聞きました。
本当でしょうか。

またPHPやJavascriptも同じことが言えるのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答5

0

ベストアンサー

Javaの場合、if文のカッコ内にはtrueあるいはfalseを取る条件式しか置けませんので、==trueと比較してコンパイルが通るようなboolean型の変数であれば、カッコ内にそのまま置いても動作は全く同じですし、逆にそうでなければ型の一致しない比較になってコンパイルが通りませんので、付ける意味はゼロです。

JavaScriptやPHPの場合は正反対に、if()のカッコ内にはなんでも置けますが、これらの言語ではif($a)if($a==true)で意味が違ってきますし、==では曖昧な比較になるので、逆の意味で注意が必要です(厳密にtrueかどうかを調べる必要がある場合、if($a===true)とすればそう動きます)。

投稿2015/02/12 05:59

maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

karain

2015/02/12 07:27

そのような差があるとは、、、勉強になりました。
guest

0

他の言語は分かりませんが、javascriptではこんなことが起きます。

lang

1function test(flg){ 2 if(flg == true){ alert(flg.toSource() + ' is true !') } 3} 4test(true); //"(new Boolean(true)) is true !" 5test(1); //"(new Number(1)) is true !" 6test('1'); //"(new String("1")) is true !" 7test([1]); //"[1] is true !"

比較演算子 === を使うことによって型を含めた厳密な比較をしてくれます。

投稿2015/02/12 05:57

編集2015/02/12 05:58
Lhankor_Mhy

総合スコア36087

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

karain

2015/02/12 07:28

===にするか、どうかでも大きな違いがあるんですね、、、うまく使い分けるようにします。
guest

0

if()構文自体が、真偽値を問う構文ですので、以下の場合は、そもそも比較する必要もなくtrue/falseです。

lang

1var hoge = true; 2if (hoge) { 3 // true 4} 5if (!hoge) { 6 // false 7}

これを以下のようにすることで、無駄な比較が行われます。

lang

1var hoge = true; 2if (hoge == true) { 3 // true 4} 5if (hoge == false) { 6 // false 7}

これは他の言語でも同じです。
ただし、他の方の回答にもある通り、===演算子を利用することで厳密な比較を行います。
これも、JavaScript、PHPともに同じような意味合いを持ちます。
厳密に比較する必要がある時を除いて、わざわざ比較する必要はありません。

例えばJavaScriptでいえば、以下のような場合が問題視されるでしょう。(PHPも似た感じだったはず)
こういう、文字と数値が混合してたり、選択されてない場合は空白値、とかってのは時々ありますよね。

lang

1test(""); // false 2test(0); // false 3test("0"); // true 4test(1); // true 5test("1"); // true 6 7function test(value) { 8 if (value) { 9 alert("true"); 10 } else { 11 alert("false"); 12 } 13}

投稿2015/02/12 08:53

takiru

総合スコア130

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

if(flg == true)と書くときに、下のように書き間違えてしまう可能性があるためif(flg)と書いたほうがよいという解説を読んだことがあります。

lang

1// この場合flgにtrueが代入された後、()内が評価される。 2// このため、常にtrueの場合の処理が実行されてしまう 3if(flg = true){ 4 (trueの場合の処理) 5}

投稿2015/02/12 08:04

sho_cs

総合スコア3541

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

既に回答頂いている他に、質問文にあるような記述が良くない理由としてよく挙げられるのが

if (flg == true)のような比較を書く際に、間違えて
if (flg = true)と書いてしまうことがあるということですね。
この場合、代入文になってしまうため、意図しない動作になる可能性が高いです。

これを防ぐため、if (true == flg)というように、
比較演算子の前後を入れ替える記述が推奨されている場合もあるようです。

参考まで

投稿2015/02/12 08:02

k.tada

総合スコア1679

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問