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

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

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

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

解決済

2回答

1242閲覧

コードの働き

Tutti

総合スコア83

Java

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

0クリップ

投稿2016/07/28 07:25

カレンダーを作っているのですが、あるコードの働きがよく分からず、悩んでいます。

このコードなのですが、
Weekの中のSATURDAYのときという理解の仕方でいいのでしょうか?教えてください。

(cal.get(java.util.Calendar.DAY_OF_WEEK) == (java.util.Calendar.SATURDAY))

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

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

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

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

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

guest

回答2

0

ベストアンサー

APIドキュメントを読んだだけでは理解するのは容易ではないでしょう。

Calendar#getはint値を引数に取り、その引数に対応したフィールド(日時情報の一部を表すもの。年や日、時刻の時など)の値をint値で返すものです。int値を引数に取るので、"0"や"10"と言った整数値を渡すことはできます。
しかし、ただ数値をコード上に書かれると、そのgetメソッドがどのフィールドの値を取得しているのか、読む人にとってはわかりにくいものになります。それだけでなく、コーディングする人からしても、フィールドと数値の対応関係を覚えていないかぎりコーディングしづらいものになります。
返り値も問題で、一律でint値を返します。曜日も整数で返ってくるので、ただの数値では何曜日を表しているのかわかりにくくなります。

このため、Calendarクラスではフィールドの値や曜日の値に名前を付けてstatic定数にしています。こうすることで、コード上でもどのフィールドの値なのかが読みやすくなり、書く際も「このフィールドの値」ということを、実際の値をほとんど気にすることなく書くことができます。

さて、本題に戻りますが、このコード

java

1cal.get(java.util.Calendar.DAY_OF_WEEK) == (java.util.Calendar.SATURDAY)

ここでやっているのは結局、数値比較です。DAY_OF_WEEK、つまり曜日の値が、SATURDAYの値と同じかどうかをチェックしていることになります。

しかしCalendarクラスにも問題はあり、intの引数を取るため、Calendarクラスが想定している以外の値も渡すことができてしまうのです。enumというものができる前のクラスなので、引数に渡すものが限定できないクラスだったのです。
Java8になって、新たな日時APIが出来上がって、こちらでは曜日やフィールドをenumで扱っています。

投稿2016/07/28 15:12

swordone

総合スコア20649

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

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

Tutti

2016/07/29 00:32

本当に、いつも分かりやすく丁寧に教えていただきありがとうございます。 また、ネットを見れば分かるでしょ?と思われるような質問をし、お手数をおかけすることもあるかと思いますが、頑張りますので、どうぞ今後ともよろしくお願いいたします。
guest

0

回答依頼ありがとうございます。

認識の通りで合っていると思いますが、APIドキュメントは読んでいますか?

Calendar (Java Platform SE 8 )

DAY_OF_WEEK

getおよびsetのためのフィールド値で、曜日を示します。

calが表している日付が土曜の時という判定でしょう。
読んだ上でわからないことを聞いたほうがいいと思いますよ。

投稿2016/07/28 07:33

Mr_Roboto

総合スコア2208

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

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

Tutti

2016/07/28 07:40

調べて読みました。ですが理解できなかったのでお聞きしました。 お手数おかけしました。 ありがとうございます。
Mr_Roboto

2016/07/28 07:43

では、読んだことは書いたほうがいいと思いますよ。 質問の仕方もひとつのスキルですよね あと他の人の役に立つようにタイトルもう少し気を配ったほうがいいかと思います ^^
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問