こんにちは、Javaを勉強しているのですが、質問があります。
まず、以下のコードを見てください。
enum Season{ SPRING, SUMMER, FALL, WINTER }
class Sample {
public static void main(String args[]){
System.out.println(Season.SPRING == Season.SPRING)
}
}
このコードでは、trueが出力されるのですが
==は、オブジェクトに対して使用しています。(Season.SPRINGやSeason.SPRINGがオブジェクトなので)
こういう使い方は見たことないのですが、これは有効なのでしょうか?
No.4ベストアンサー
- 回答日時:
enumを使ってるので、ちょっとややこしくなってますね。
そもそも、オブジェクト型の変数に対して==を使うかどうかですが、
これは文法上問題ないですし、使ってはいけないものでもありません。
例えば、2つのオブジェクト変数があって、「片方だけ」を更新したいとします。
このとき、2つのオブジェクトが「実は同じ参照を持っている」場合、
片方を修正したつもりが、誤って他方の値まで更新されてしまいます。
これを防ぐため、==を使って2つのオブジェクトが同じ(ものを参照している)なら
エラーを出して更新するのを防ぐ、という使い方をすることは十分考えられます。
※どこを参照しているかは関係なく、そのオブジェクトの値が同じかどうかを比較したい、
という場合は、equals()メソッドを使います。
なので、オブジェクトに対して、==を「使ってはいけない」ということはありません。
どう比較したいかによって使い分ける必要がある、ということです。
話が逸れました。
Season.SPRING == Season.SPRINGの件ですが、上で説明した内容とはちょっと違いますね。
値が同じかどうかを比較しているようなコードですから。
通常のオブジェクト型なら、ちょっとまずいでしょうが、
おそらくこれは、enum型の値なので単純に==で比較しても問題ない、ということなのでしょう。
No.3
- 回答日時:
Javaでは、値は基本的に基本型(プリミティブタイプ)とオブジェクトに分かれます。
==は、すべての値について使うことができます。もちろん、オブジェクトどうしの比較にもよく使われますよ。ただし、オブジェクトどうしの比較には「2つのオブジェクトが同等のものと判断できるか」と「2つの変数が同一のインスタンスを参照しているか」があるので注意が必要です。2つの異なるオブジェクトが同等のものかどうかを調べるにはequalsメソッドを使います。オブジェクトの比較で==を使うのは、2つのオブジェクトが設定されている変数の参照するものが同等である(つまり同じものを参照している)かどうかを調べるのに用いられます。
No.2
- 回答日時:
こんにちは
javaはやっていないのですが他のものでも同じですので有効だと思います
『==』などの場合は比較演算子といいます
http://www.hellohiro.com/basic/hikaku.htm
『=』でやった場合には代入演算子といいます
http://www.hellohiro.com/basic/dainyuu.htm
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- Java Java プログラム public class Main { public static void 3 2023/08/10 23:46
- Java 直し方について教えて頂きたいです。 4 2022/08/13 02:11
- Java eclipse実行ができない 2 2022/07/27 04:47
- JavaScript Python Java,Springフレームワークの習得 1 2023/08/02 15:28
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- Java java final 1 2022/06/10 22:49
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- 英語 He retired at the end of season because of the inj 1 2022/05/11 01:18
- アニメ アニメ約束のネバーランドseason 2はリメイクされる可能性はありますか? season1がとても 2 2023/02/23 10:27
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelで =EMBED("Acrobat Docu...
-
COMコンポーネントって何?
-
ワイルドカード<?>と型パラメー...
-
ビジュアルC++でボタンの有...
-
JSPのout.printについて
-
多人数のじゃんけんプログラム
-
JAVAからHTMLへ値を返す方法
-
bmp画像をjpegやpng画像に圧縮...
-
パワーポイントのVBAでテキスト...
-
VBAのWindowオブジェクトとWork...
-
VBからBATファイルを起動して戻...
-
戻り値がクラスオブジェクト
-
オブジェクトに値を保持させる...
-
C#でフォームのオブジェクト名...
-
エプソンVP-930のESC/Pの操作に...
-
Vbで通常使用するプリンターを...
-
ワードで画像をドロップすると...
-
Date型オブジェクトから日付の...
-
newは明示的にした方が良いのか?
-
Google Apps Scriptの時刻の計算
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
パワーポイントのVBAでテキスト...
-
Excelで =EMBED("Acrobat Docu...
-
ワイルドカード<?>と型パラメー...
-
EXCEL VBAにて動的にCheckBOXを...
-
VBAのWindowオブジェクトとWork...
-
C#でフォームのオブジェクト名...
-
LISTBOXの内容が更新されま...
-
Object型からDouble型へのキャスト
-
JAVAからHTMLへ値を返す方法
-
COMコンポーネントって何?
-
ビジュアルC++でボタンの有...
-
戻り値がクラスオブジェクト
-
VBA 同じ名前のオブジェクトを...
-
ASP.net 教えてください!!(...
-
Vbで通常使用するプリンターを...
-
newは明示的にした方が良いのか?
-
CoCreateInstanceでエラーになる。
-
オブジェクトレベルとメタレベル
-
bmp画像をjpegやpng画像に圧縮...
-
Accessの連結・非連結オブジェ...
おすすめ情報