これらプログラムの 実 行 は 普 通 はハードウェア 上 で 行 うのですが Java の 場 合 は 特 殊 なことを 行 っています 難 しい 理 屈 はここでは 説 明 しませんが ハードウェア 上 で 直 接 動 作 するのではなく ソフトウェアで 実 現 された 仮 想 のハードウェアが



Similar documents
プログラミング基礎I(再)

計算式の取り扱い

2016 年 度 情 報 リテラシー 三 科 目 合 計 の 算 出 関 数 を 用 いて 各 教 科 の 平 均 点 と 最 高 点 を 求 めることにする この2つの 計 算 は [ホーム]タブのコマ ンドにも 用 意 されているが 今 回 は 関 数 として 作 成 する まず 表 に 三 科

Microsoft Word - tb01.doc

SXF 仕 様 実 装 規 約 版 ( 幾 何 検 定 編 ) 新 旧 対 照 表 2013/3/26 文 言 変 更 p.12(1. 基 本 事 項 ) (5)SXF 入 出 力 バージョン Ver.2 形 式 と Ver.3.0 形 式 および Ver.3.1 形 式 の 入 出 力 機 能 を

縦 計 横 計 をSUM 関 数 で 一 度 に 計 算 する 縦 横 の 合 計 を 表 示 するセルが 計 算 対 象 となる セルと 隣 接 している 場 合 は 一 度 に 合 計 を 求 め ることができます 1 計 算 対 象 となるセル 範 囲 と 合 計 を 表 示 する セル 範

している 5. これに 対 して 親 会 社 の 持 分 変 動 による 差 額 を 資 本 剰 余 金 として 処 理 した 結 果 資 本 剰 余 金 残 高 が 負 の 値 となるような 場 合 の 取 扱 いの 明 確 化 を 求 めるコメントが 複 数 寄 せられた 6. コメントでは 親

Microsoft Word - 第3章.doc

1. 表 から 値 を 抽 出 する 説 明 1.1. 表 から 値 を 抽 出 するための 関 数 について 説 明 します LOOKUP VLOOKUP HLOOKUP 関 数 は 検 索 値 に 対 応 する 値 を 検 索 値 を 含 む 一 覧 表 から 抽 出 し てくれる 関 数 です

2 県 公 立 高 校 の 合 格 者 は このように 決 まる (1) 選 抜 の 仕 組 み 選 抜 の 資 料 選 抜 の 資 料 は 主 に 下 記 の3つがあり 全 高 校 で 使 用 する 共 通 の ものと 高 校 ごとに 決 めるものとがあります 1 学 力 検 査 ( 国 語 数


H28記入説明書(納付金・調整金)8

一 括 登 録 方 法 一 括 登 録 をするには 予 め 専 用 の CSV ファイルを 作 成 する 必 要 があります 普 段 エクセルファイルで 管 理 をされている 方 は, 以 下 の 3 列 のみのデータとなるようにデータを 加 工 して CSV ファイルとして 保 存 して 下 さ

養 老 保 険 の 減 額 払 済 保 険 への 変 更 1. 設 例 会 社 が 役 員 を 被 保 険 者 とし 死 亡 保 険 金 及 び 満 期 保 険 金 のいずれも 会 社 を 受 取 人 とする 養 老 保 険 に 加 入 してい る 場 合 を 解 説 します 資 金 繰 りの 都

労働時間と休日は、労働条件のもっとも基本的なものの一つです

<4D F736F F D AC90D1955D92E CC82CC895E DD8C D2816A2E646F63>

01_07_01 データのインポート_エクスポート_1

Taro-2220(修正).jtd

(Microsoft Word - Excel\211\236\227p2\217\315.docx)

2.4 箇 条 書 のスタイルを 変 更 する 右 クリックして 箇 条 書 と 番 号 付 け を 選 択 する. あとは 少 し 遊 べば, このようなことをやりたい 人 は 理 解 できると 思 います 3 いろいろな 入 力 ワープロを 使 う 上 で 肝 心 な 点 は, 空 白 調 整

( 別 紙 ) 以 下 法 とあるのは 改 正 法 第 5 条 の 規 定 による 改 正 後 の 健 康 保 険 法 を 指 す ( 施 行 期 日 は 平 成 28 年 4 月 1 日 ) 1. 標 準 報 酬 月 額 の 等 級 区 分 の 追 加 について 問 1 法 改 正 により 追 加

Taro-1-14A記載例.jtd

Ver 改 訂 日 付 改 訂 内 容 1

目 次 1. 論 理 関 数 IF IF の 概 要 論 理 式 の 種 類 等 号 不 等 号 具 体 的 な 使 い 方 ネスト 複 数 の 条 件 を 記 述...

R4財務対応障害一覧

KINGSOFT Office 2016 動 作 環 境 対 応 日 本 語 版 版 共 通 利 用 上 記 動 作 以 上 以 上 空 容 量 以 上 他 接 続 環 境 推 奨 必 要 2

決 算 時 の 流 れ-1 1 年 間 の 仕 訳 入 力 が 終 了 したら 以 下 の 手 順 で 決 算 書 を 作 成 します Step1 精 算 表 を 印 刷 する 1.[F2 入 力 ]タブより 合 計 表 を 選 択 し 月 度 の 指 定 で 期 首 ~12ヶ 月 目 を 指 定

事 業 税 の 外 形 標 準 課 税 事 業 税 は 都 道 府 県 が 所 得 ( 利 益 )に 対 して 課 税 します 1. 個 人 事 業 税 業 種 区 分 税 率 ( 標 準 税 率 ) 第 1 種 事 業 ( 物 品 販 売 業 製 造 業 金 銭 貸 付 業 飲 食 店 業 不 動

治 験 実 施 管 理 システム NMGCP 向 け Excel 形 式 プロトコール 作 成 手 順 書 V4.0.3 対 応 版 第 1 版 株 式 会 社 富 士 通 アドバンストエンジニアリング All Rights Reserved,Copyright 株 式 会 社 富 士 通 アドバン

[2] 控 除 限 度 額 繰 越 欠 損 金 を 有 する 法 人 において 欠 損 金 発 生 事 業 年 度 の 翌 事 業 年 度 以 後 の 欠 損 金 の 繰 越 控 除 にあ たっては 平 成 27 年 度 税 制 改 正 により 次 ページ 以 降 で 解 説 する の 特 例 (

MetaMoJi ClassRoom/ゼミナール 授業実施ガイド

4. 発 注 者 コード 及 び 成 績 評 定 8 (Q4-1) 該 当 の 発 注 者 コードが 付 与 されていないので 追 加 してください... 8 (Q4-2) 発 注 者 コードが 不 正 確 空 白 のものがあり 点 数 を 入 力 できません 成 績 評 定 の 入 力 ができませ

kyoukai.indd

2 課 題 管 理 ( 科 学 研 究 費 補 助 金 ) 画 面 が 表 示 されます 補 助 事 業 期 間 終 了 後 欄 の[ 入 力 ] をクリックします [ 入 力 ]ボタンが 表 示 されていない 場 合 には 所 属 する 研 究 機 関 の 事 務 局 等 へお 問 い 合 わせく

平成16年年金制度改正 ~年金の昔・今・未来を考える~

情報処理技能検定試験 表計算2級 手順書

1. 前 払 式 支 払 手 段 サーバ 型 の 前 払 式 支 払 手 段 に 関 する 利 用 者 保 護 等 発 行 者 があらかじめ 利 用 者 から 資 金 を 受 け 取 り 財 サービスを 受 ける 際 の 支 払 手 段 として 前 払 式 支 払 手 段 が 発 行 される 場 合

PowerPoint プレゼンテーション

学 力 家 計 とも 基 準 内 です 申 込 みをすれば 必 ず 採 用 されますか? 奨 学 生 の 採 用 は 日 本 学 生 支 援 機 構 が 定 める 採 用 枠 の 範 囲 内 で 行 いますので 基 準 内 なら 必 ず 採 用 されるとのお 約 束 はできません 下 宿 しています

平成21年9月29日

1

Java演習(4) -- 変数と型 --

c. 投 資 口 の 譲 渡 に 係 る 税 務 個 人 投 資 主 が 投 資 口 を 譲 渡 した 際 の 譲 渡 益 は 株 式 等 に 係 る 譲 渡 所 得 等 として 原 則 20%( 所 得 税 15% 住 民 税 5%)の 税 率 による 申 告 分 離 課 税 の 対 象 となりま

t検定

戦略担当者のための

N 一 般 の 住 宅 について 控 除 の 対 象 となる 借 入 金 は 平 成 26 年 4 月 平 成 31 年 6 月 30 日 までの 入 居 の 場 合 は4,000 万 円 ( 平 成 26 年 3 月 までの 入 居 の 場 合 は2,000 万 円 )までとなります 建 物 や

1.2. ご 利 用 環 境 推 奨 ブラウザ Internet Explorer Google Chrome(バージョン 32 時 点 で 動 作 確 認 済 み) Mozilla Firefox(バージョン 26 時 点 で 動 作 確 認 済 み) Safari 7

税金読本(8-5)特定口座と確定申告

目 次 1.はじめに 書 式 の 説 明 表 紙 スケジュール 組 入 れ 基 準 併 用 禁 止 薬 併 用 注 意 薬 同 種 同 効 薬 医 師 モニタリング..

入 札 参 加 資 格 申 請 システム 操 作 マニュアル 入 札 参 加 資 格 の 資 格 有 効 ( 変 更 ) 日 を 迎 えると 追 加 届 の 登 録 ができるようになります ( 入 札 参 加 資 格 申 請 の 定 時 受 付 では いずれかの 申 請 先 団 体 から 入 札 参

3. 選 任 固 定 資 産 評 価 員 は 固 定 資 産 の 評 価 に 関 する 知 識 及 び 経 験 を 有 する 者 のうちから 市 町 村 長 が 当 該 市 町 村 の 議 会 の 同 意 を 得 て 選 任 する 二 以 上 の 市 町 村 の 長 は 当 該 市 町 村 の 議

続 に 基 づく 一 般 競 争 ( 指 名 競 争 ) 参 加 資 格 の 再 認 定 を 受 けていること ) c) 会 社 更 生 法 に 基 づき 更 生 手 続 開 始 の 申 立 てがなされている 者 又 は 民 事 再 生 法 に 基 づき 再 生 手 続 開 始 の 申 立 てがなさ


募集新株予約権(有償ストック・オプション)の発行に関するお知らせ

平成27年度大学改革推進等補助金(大学改革推進事業)交付申請書等作成・提出要領

GRIDY SFA カスタム 項 目 操 作 ガイド 用 本 書 はに 必 要 な 操 作 を 解 説 しております は GRIDY SFA ののことです GRIDY SFA へ 申 し 込 み 最 初 に 登 録 を 行 った 方 がそのままとなります カスタム 項 目 はの 方 のみ 操 作 可

TIPS - 棚 割 りを 開 始 するまで Liteを 起 動 し 企 業 情 報 の 追 加 を 行 い 棚 割 を 行 う 企 業 の 追 加 をして 下 さい 企 業 情 報 の 追 加 時 に エラーメッセージが 表 示 された 場 合 別 途 TIPS トラブルが 発 生 した 場 合

やさしいJavaプログラミング -Great Ideas for Java Programming サンプルPDF

2. ど の 様 な 経 緯 で 発 覚 し た の か ま た 遡 っ た の を 昨 年 4 月 ま で と し た の は 何 故 か 明 ら か に す る こ と 回 答 3 月 17 日 に 実 施 し た ダ イ ヤ 改 正 で 静 岡 車 両 区 の 構 内 運 転 が 静 岡 運

CSI情報管理システム

2 役 員 の 報 酬 等 の 支 給 状 況 平 成 27 年 度 年 間 報 酬 等 の 総 額 就 任 退 任 の 状 況 役 名 報 酬 ( 給 与 ) 賞 与 その 他 ( 内 容 ) 就 任 退 任 2,142 ( 地 域 手 当 ) 17,205 11,580 3,311 4 月 1

解きながら学ぶJava入門編

目 次 1. 大 学 情 報 データベースシステムの 使 用 方 法 について EXCEL 一 括 登 録 EXCEL ダウンロード 検 索 条 件 の 指 定 プレビュー EXCEL ダウンロード(データ 抽 出 あ

本 試 験 模 範 解 答 固 定 資 産 税 第 一 問 問 1 1 住 宅 用 地 に 対 する 課 税 標 準 の 特 例 (1) 宅 地 のうち 住 宅 用 地 については 住 宅 政 策 上 の 見 地 から 次 のような 課 税 標 準 の 特 例 が 認 められている 小 規 模 住

( 別 途 調 査 様 式 1) 減 損 損 失 を 認 識 するに 至 った 経 緯 等 1 列 2 列 3 列 4 列 5 列 6 列 7 列 8 列 9 列 10 列 11 列 12 列 13 列 14 列 15 列 16 列 17 列 18 列 19 列 20 列 21 列 22 列 固 定

Taro-役員退職手当規程(H27.10改正)HP版

Ⅰ 調 査 の 概 要 1 目 的 義 務 教 育 の 機 会 均 等 その 水 準 の 維 持 向 上 の 観 点 から 的 な 児 童 生 徒 の 学 力 や 学 習 状 況 を 把 握 分 析 し 教 育 施 策 の 成 果 課 題 を 検 証 し その 改 善 を 図 るもに 学 校 におけ

WebMail ユーザーズガイド

特別徴収封入送付作業について

< 現 在 の 我 が 国 D&O 保 険 の 基 本 的 な 設 計 (イメージ)> < 一 般 的 な 補 償 の 範 囲 の 概 要 > 請 求 の 形 態 会 社 の 役 員 会 社 による 請 求 に 対 する 損 免 責 事 由 の 場 合 に 害 賠 償 請 求 は 補 償 されず(

23信託の会計処理に関する実務上の取扱い

<4D F736F F D F93878CA797708F4390B3816A819A95CA8B4C976C8EAE91E682538B4C8DDA97E12E646F6378>

2016 年 度 情 報 リテラシー 変 更 された 状 態 同 様 に 価 格 のセルを 書 式 設 定 する 場 合 は 金 額 のセルをすべて 選 択 し [ 書 式 ]のプルダウンメニューか ら[ 会 計 ]を 選 択 する すると が 追 加 され 金 額 としての 書 式 が 設 定 さ

4 応 募 者 向 けメニュー 画 面 が 表 示 されます 応 募 者 向 けメニュー 画 面 で [ 交 付 内 定 時 の 手 続 を 行 う] [ 交 付 決 定 後 の 手 続 を 行 う]をクリックします 10

<4D F736F F D C97F195CF8AB DEC90E096BE8F912091E6312E313294C52E646F63>

<4D F736F F D2091E F18CB48D C481698E7B90DD8F9590AC89DB816A2E646F63>

育休代替任期付職員制度について

2. 会 計 規 程 の 業 務 (1) 規 程 と 実 際 の 業 務 の 調 査 規 程 や 運 用 方 針 に 規 定 されている 業 務 ( 帳 票 )が 実 際 に 行 われているか( 作 成 されている か)どうかについて 調 べてみた 以 下 の 表 は 規 程 の 条 項 とそこに

回 答 Q3-1 土 地 下 落 の 傾 向 の 中 固 定 資 産 税 が 毎 年 あがるのはなぜですか? 質 問 : 土 地 下 落 の 傾 向 の 中 土 地 の 固 定 資 産 税 が 毎 年 あがるのはなぜですか? 答 : あなたの 土 地 は 過 去 の 評 価 替 えで 評 価 額 が

Box-Jenkinsの方法

返還同意書作成支援 操作説明書

経 理 上 くん db(version 8.001)の 変 更 点 概 要 Ⅰ. 消 費 税 /リバースチャージ 方 式 の 申 告 に 対 応 1 特 定 課 税 仕 入 特 定 課 税 仕 入 返 還 区 分 を 追 加 しました Ⅱ.その 他 の 改 良 修 正 詳 細 は 後 述 を 参 照

容 積 率 制 限 の 概 要 1 容 積 率 制 限 の 目 的 地 域 で 行 われる 各 種 の 社 会 経 済 活 動 の 総 量 を 誘 導 することにより 建 築 物 と 道 路 等 の 公 共 施 設 とのバランスを 確 保 することを 目 的 として 行 われており 市 街 地 環


Java プログラミング Ⅰ 3 回目変 数 今日の講義講義で学ぶ内容 変数とは 変数の使い方 キーボード入力の仕方 変 数 変 数 一時的に値を記憶させておく機能 変数は 型 ( データ型 ) と識別子をもちます 2 型 ( データ型 ) 変数に記憶する値の種類変数の型は 記憶できる値の種類と範囲


私立大学等研究設備整備費等補助金(私立大学等

<4D F736F F D C93FA967B91E5906B8DD082D682CC91CE899E2E646F6378>

PowerPoint プレゼンテーション

就 業 規 則 ( 福 利 厚 生 ) 第 章 福 利 厚 生 ( 死 亡 弔 慰 金 等 ) 第 条 法 人 が 群 馬 県 社 会 福 祉 協 議 会 民 間 社 会 福 祉 施 設 等 職 員 共 済 規 程 に 基 づき 群 馬 県 社 会 福 祉 協 議 会 との 間 において 締 結 す

Microsoft Word - A04◆/P doc

研究者情報データベース

中 間 利 払 日 とし 預 入 日 または 前 回 の 中 間 利 払 日 からその 中 間 利 払 日 の 前 日 までの 日 数 および 通 帳 または 証 書 記 載 の 中 間 利 払 利 率 によって 計 算 した 中 間 利 払 額 ( 以 下 中 間 払 利 息 といいます )を 利

22 第 1 章 資 本 金 等 利 益 積 立 金 貴 見 のとおり 資 本 等 取 引 は 本 来 は 増 資 とか 減 資 と か さらには 旧 資 本 積 立 金 額 の 増 加 または 減 少 をいうこと になる ただ 利 益 の 配 当 はいわゆる 資 本 金 等 取 引 である か 損

図 1 抱 合 株 式 がない 場 合 の 非 適 格 合 併 により 増 加 する 資 本 金 等 の 額 の 計 算 合 併 法 人 株 式 の 価 額 - 移 転 純 資 産 価 額 (2) 合 併 法 人 株 式 等 のみなし 株 式 割 当 等 会 社 法 上 抱 合 株 式 には 合 併

ていることから それに 先 行 する 形 で 下 請 業 者 についても 対 策 を 講 じることとしまし た 本 県 としましては それまでの 間 に 未 加 入 の 建 設 業 者 に 加 入 していただきますよう 28 年 4 月 から 実 施 することとしました 問 6 公 共 工 事 の

関数の構造

注 雇 促 進 税 制 と 本 制 度 のどちらかを 利 する 可 能 性 があるが あらかじめどちらの 制 度 を 利 するか 判 断 できない という 場 合 雇 促 進 税 制 の 事 前 届 出 ( 雇 促 進 計 画 の 提 出 )をした 上 で 申 告 の 際 にどちらを 利 するかご

損 益 計 算 書 自. 平 成 26 年 4 月 1 日 至. 平 成 27 年 3 月 31 日 科 目 内 訳 金 額 千 円 千 円 営 業 収 益 6,167,402 委 託 者 報 酬 4,328,295 運 用 受 託 報 酬 1,839,106 営 業 費 用 3,911,389 一

贈与税 faq

Transcription:

1 Java の 基 礎 知 識 1.1 プログラミング プログラミング(programming) とは プログラム(program ある 一 連 の 処 理 をコンピュータへ 指 示 するもの)を 作 成 すること をいいます このプログラムを 記 述 (コーディング coding)する 際 に 使 用 する 専 用 の 言 語 を プログラミング 言 語 (programming language) といいます プログラミング 言 語 を 使 って 記 述 されたプログ ラムを ソースコード(source code) と 呼 び 普 通 はテキストファイルに 保 存 します ソースコードが 保 存 されたファイルを ソースファイル(source file) と 呼 びます 1.2 コンパイル Java 言 語 とは プログラミング 言 語 の 一 種 です Java 言 語 を 使 うと 人 間 にと って 比 較 的 分 かりやすくプログラムを 記 述 できます Java 言 語 のように 人 間 が 解 釈 しや すい 言 語 を 高 級 言 語 または 高 水 準 言 語 と 呼 びます Java 言 語 で 書 かれたプログ ラムは 人 間 にとっては 読 みやすいのですが 2 進 数 値 しか 解 釈 できないコンピュータ では そのまま 実 行 できません コンピュータが 実 行 できるようにするためには ソースコードに 対 して コンパ イル(compile) という 処 理 を 行 い オブジェクトコード(object code) と 呼 ばれる ものを 生 成 します このコードは コンピュータが 解 釈 実 行 できるものです( 図 1) 図 1 コンパイル オブジェクトコードは コンピュータが 解 釈 実 行 できるものです Java の 場 合 オブジェクトコードを Java バイトコード(byte code) と 呼 びます オブジェクトコ ードは バイナリファイル(binary file) として 保 存 されます Java の 場 合 そのフ ァイルを クラスファイル(class file) と 呼 びます 1.3 プログラムの 動 く 実 際 にこのプログラムを 動 作 させるには 補 助 記 憶 装 置 ( 通 常 は ハードディスク) に 保 存 されているファイルを 読 み 込 んで 主 記 憶 装 置 (メインメモリ)へロード(load) して 実 行 させます( 図 2) 図 2 プログラムを 実 行 1

これらプログラムの 実 行 は 普 通 はハードウェア 上 で 行 うのですが Java の 場 合 は 特 殊 なことを 行 っています 難 しい 理 屈 はここでは 説 明 しませんが ハードウェア 上 で 直 接 動 作 するのではなく ソフトウェアで 実 現 された 仮 想 のハードウェアがあって その 上 で 動 作 する と 覚 えておいてください( 仮 想 のハードウェアを Java 仮 想 マシ ン(Java Virtual Machine) と 呼 びます) Java Virtual Machine は JVM と 略 されま す 1.4 Eclipse でコンパイルをやってみる 前 の 説 明 にとおり HelloWorld クラスを 作 ったら Java のワークスペースの 中 ( pleiades workspace helloworld src helloworld)に HelloWorld.java というファイルとし て 保 存 します これは Java のソースファイルです Eclipse でプログラムを 実 行 すると バイトコードを 生 成 します 保 存 場 所 ( pleiades workspace helloworld bin helloworld)で HelloWorld.class が 見 えます これ は 生 成 した Java バイトコードです 2

2 Java プログラミング 基 礎 2.1 Java プログラムの 基 本 形 作 成 した HelloWorld プログラをみながら Java のプログラムの 基 本 形 について 見 ていきましょう コンソール 上 で 実 行 可 能 な Java4 のプログラムを 作 るには 次 のような 形 でコードを 記 述 します class HelloWorld { 1 2 3 public static void main(string[] args) { 3 5 4 5 System.out.print("Hello World!") ; 6 7 2.1.1 Class クラス 宣 言 Java のプログラムは ほとんどの 場 合 class プログラム 名 という 形 で 書 き 始 め ます Class は クラス と 読 み Java のプログラムの1つの 単 位 を 表 すものです このようにしてプログラムを 書 き 始 めることを クラスの 宣 言 と 呼 びます 2.1.2 HelloWorld クラス 名 Java のクラスには1つひとつ 固 有 の 名 前 をつけてやります この 名 前 のことをクラ ス 名 と 言 います クラス 名 には 半 角 英 数 字 及 びいくつかの 記 号 が 使 えますが クラス 名 の 先 頭 は 英 字 もしくは$ _のいずれかで 始 める 必 要 があります また Java プログ ラマの 間 の 暗 黙 の 了 解 として クラス 名 の 先 頭 及 び 単 語 の 区 切 りを 大 文 字 にすること になっています 2.1.3 { クラスの 範 囲 どこからどこまでが クラス の 範 囲 なのかを 示 すため クラス 宣 言 文 からプログ ラムの 末 尾 までを{ で 囲 みます 2.1.4 Public static void main(string[] args) メソッド 宣 言 そのプログラムが 持 つ 機 能 つまり 動 作 にあたるものは メソッドという 形 で 定 義 します 3

まず クラス という 大 きな 殻 を 作 り そのあとに 動 作 をつかさどるメソッド を 入 れていくようなイメージです コンソール 画 面 上 などで 動 作 するプログラムを 作 るときには 常 にこのような 形 で main という 名 前 のメソッドを 宣 言 し この 中 にプログラムの 内 容 を 書 き 込 んでいきま す このようなメソッドを main メソッドと 呼 びます 2.1.5 { メソッドの 範 囲 クラスと 同 様 メソッドも 始 まりと 終 わりを 中 カッコで 囲 みます ここからここ までがメソッドです ということ 示 すためです 始 まりのカッコと 終 わりのカッコが 正 しく 対 になっていないと プログラムは 正 し くコンパイルされません 2.1.6 System.out.println( Hello World! ); 命 令 文 コンピュータに 実 行 させたい 作 業 の 内 容 は 命 令 文 として 記 述 していきます 命 令 文 にはいろいろなものがあり それぞれに 書 き 方 が 決 めっています ここに 登 場 しているのは 画 面 上 に Hello World と 表 示 しなさい という 意 味 の 命 令 文 です これを 一 般 に println メソッドと 呼 んでいます 画 面 上 になんらかのメッセージなどを 表 示 させたいときは println メソッドを 使 っ て 次 のような 形 で 命 令 文 を 記 述 します System.out.println( [ 表 示 させたいメッセージの 内 容 ] ); ()のなかには 表 示 させたいメッセージの 内 容 を ( 半 角 )で 括 って 書 き 込 みます 例 えば こんにちは と 表 示 させたい 場 合 は 次 のようになります System.out.println( こんにちは ); 2.1.7 命 令 文 の 終 了 のしるし 命 令 文 の 終 わりには この 命 令 はここで 終 わりです ということを 示 すために;( 半 角 セミコロン)を 記 述 します Println メソッドなどの 命 令 文 を1 行 書 いたら 忘 れずに セミコロンを 入 力 しておきましょう ただし クラス 宣 言 文 やメソッド 宣 言 文 中 カッコなどの 行 にはセミコロンは 不 要 です 4

2.2 Java のコメント プログラムを 作 成 していく 時 に このメソッドはどんなメソッドなのかや 誰 がいつ 記 述 したものなのかといった 情 報 を 残 しておくと 後 で 見 なした 時 に 便 利 です このよう にプログラムの 中 に 説 明 を 記 述 する 時 に 使 うのがコメントです コメントはプログラムが 実 行 される 際 に 無 視 されますのでプログラムの 動 作 には 何 の 影 響 もしません 2.2.1 1 行 コメント プログラム 中 に // が 現 れた 場 合 // から 行 末 までをコメントとして 扱 います // は 行 の 先 頭 に 記 述 しその 行 を 全 てコメントとしてもいいですし 行 の 途 中 で 記 述 してその 位 置 より 右 側 をコメントとしてもいいです // 作 成 日 09.02.09 class sample{ public static void main(string args[]){ System.out.println("こんにちは"); // 画 面 出 力 2.2.2 ブロックコメント プログラム 中 に /* が 現 れた 場 合 次 に */ が 現 れるまでの 部 分 を 全 てコメン トとして 扱 います この 形 式 を 使 う 場 合 には 複 数 行 に 渡 ったコメントを 記 述 することが できます /* 作 成 日 09.02.09 バージョン 1.0.3 クラス 名 sample */ class sample{ public static void main(string args[]){ System.out.println("こんにちは"); /* 画 面 出 力 */ 5

2.3 Java の 識 別 子 識 別 子 とは 今 まで 出 てきたクラス 名 やメソッド 名 これから 出 てくる 変 数 名 など を 識 別 するための 名 前 です 識 別 子 のルール: 使 える 文 字 は a~z, A~Z, 0~9, _(アンダーバー), $ ( 例 ) name, old, no32 0~9 先 頭 の 文 字 に 使 えない ( 例 ) 12point などは Java の 予 約 語 (キーワード)と 同 名 は 不 可 ( 例 ) char や class などの 予 約 語 は 使 用 できない 大 文 字 と 小 文 字 は 識 別 される ( 例 ) old と Old は 別 の 変 数 2.4 Java の 予 約 語 Java の 言 語 仕 様 として 何 らかの 意 味 を 持 つ 単 語 を 予 約 語 として 登 録 してあります 例 えば 条 件 分 岐 を 記 述 する 時 に 使 用 される if などが 予 約 語 です 今 後 変 数 やクラス などの 名 前 を 自 分 で 付 ける 時 には Java の 予 約 語 は 使 用 することができません 予 約 語 の 一 覧 は 次 の 通 りです abstract assert boolean break byte case catch char class const continue default do double else enum extends final finally float for goto if implements import instanceof int interface long native new package private protected public return short static strictfp super switch synchrnized this throw throws transient try void volatile while なお 下 記 の 3 つは 予 約 語 ではなく 予 め 用 意 された 定 数 です true false null 6

2.5 Java の 定 数 値 (リテラル) リテラル( 英 : literal)は 文 字 どおり 字 義 どおり を 意 味 する 語 である プ ログラムの 中 には 定 数 値 という 意 味 です 各 データ 型 のリテラルを 型 名 を 先 頭 につけて 文 字 列 リテラル 整 数 リテラル 日 付 リテラル などと 呼 びます Java で 定 数 値 ( 固 定 の 値 即 値 )を 表 現 するには 以 下 のようにします リテラル 名 形 式 型 例 整 数 リテラル 数 0 で 始 めると 八 進 数 0x で 始 めると 十 六 進 数 0b で 始 めると 二 進 数 (JDK1.7 以 降 ) int 123 0173 0x7b 0b1111011 末 尾 に L を 付 けると long 型 long 123L 浮 動 小 数 リテラル 小 数 点 付 きの 数 double 123.0 末 尾 に F を 付 けると float 型 末 尾 に D を 付 けると double 型 float double 123f 123d 文 字 リテラル シングルクォーテーションで 囲 む char 'A' 文 字 列 リテラル ダブルクォーテーションで 囲 む String "abc" 論 理 値 リテラル true 又 は false boolean true false 空 リテラル null 空 型 null 特 殊 な 文 字 の 入 力 (エスケープシーケンス) 文 字 と 文 字 列 を 値 として 使 用 する 場 合 キーボードから 入 力 できないような 文 字 が あります 例 えば 改 行 です 文 字 列 の 中 で 改 行 をキーボードから 入 力 した 場 合 は 次 のよ うになります class sample{ public static void main(string args[]){ System.out.println("こんにちは お 元 気 ですか"); 上 記 の 例 では こんにちは と お 元 気 ですか の 間 で 改 行 を 入 力 しようとしまし たがキーボードで Enter キーを 押 してもプログラムが 改 行 されるだけです 7

そこで 改 行 などキーボードから 入 力 できない 文 字 などは + 特 定 の 文 字 の 組 み 合 わせで 表 現 します 例 えば 改 行 は n という と n の 組 み 合 わせによって 表 すことができます class sample{ public static void main(string args[]){ System.out.println("こんにちは n お 元 気 ですか"); 上 記 では こんにちは と お 元 気 ですか の 間 に n が 記 述 されています n は 改 行 を 表 しますので 実 際 に 実 行 してみるとダイアログが 開 き 次 のように 表 示 されま す このようにキーボードから 入 力 できない 文 字 を 他 の 文 字 の 組 み 合 わせで 表 現 した ものをエスケープシーケンスといいます エスケープシーケンス 意 味 b バックスペース f 改 ページ n 改 行 r 復 帰 ( 行 頭 にカーソルを 戻 す) t 水 平 タブ ' ' " " 8

2.6 Java の 変 数 2.6.1 変 数 とは 変 数 とは プログラムのソースコードにおいて 扱 われるデータを 一 定 期 間 記 憶 し 必 要 なときに 利 用 できるようにするために データに 固 有 の 名 前 を 与 えたものである 変 数 は 値 を 保 存 しておくための 箱 のようによく 言 われます この 箱 には 数 値 や 文 字 列 などの 値 を 保 存 することができ そしていつでも 取 り 出 したり 改 めて 違 う 値 を 保 存 す ることができます 整 数 整 数 文 字 文 字 変 数 変 数 2.6.2 変 数 のデータ 型 変 数 宣 言 するときには 変 数 名 と 同 時 に 変 数 のデータ 型 を 指 定 する 必 要 があります 型 にはプログラマが 拡 張 できない 基 本 型 (プリミティブ 型 )と プログラマが 拡 張 できる 参 照 型 (リファレンス 型 )があります 整 数 型 (byte,short,int,long) 数 値 型 浮 動 小 数 点 数 (float,double) 基 本 型 (プリミティブ 型 ) 文 字 (char) boolean 型 (boolean) データ 型 クラス(class) 参 照 型 (リファレンス 型 ) インターフェース(interface) 配 列 9

整 数 や 浮 動 小 数 点 数 そして 文 字 などです Java で 用 意 されているデータ 型 は 次 の 通 りです データ 型 メモリ 領 域 をどのような 値 に 使 用 するか( 取 り 得 る 値 ) boolean char true or false 16 ビット Unicode 文 字 u0000~ uffff byte 8 ビット 整 数 -128~127 short 16 ビット 整 数 -32768~32767 int 32 ビット 整 数 -2147483648~2147483647 long 64 ビット 整 数 -9223372036854775808~9223372036854775807 float double 32 ビット 単 精 度 浮 動 小 数 点 数 64 ビット 倍 精 度 浮 動 小 数 点 数 2.7 メソッドとフィールド 計 算 機 に 必 要 なものは 加 算 や 減 算 といったデータを 処 理 する 機 能 と 計 算 対 象 や 計 算 結 果 などの データ に 分 けることができます Java では 機 能 をメソッドと 呼 び データ をフィールドと 呼 びます クラスには そのクラスから 作 り 出 されるモノが 持 つ 機 能 (メソッド)とデータ(フィ ールド)を 記 述 していきます class クラス 名 { フィールド 1 フィールド 2 メソッド 1 メソッド 2 どんなメソッドとフィールドを 用 意 するかでそのクラスから 作 り 出 されるものが 決 まります 目 的 の 処 理 を 行 わせるために 適 切 なメソッドとフィールドを 設 計 しなけ ればなりません 10

2.7.1 メソッド メソッドの 書 式 は 次 のようになっています [ 修 飾 子 ] 戻 り 値 のデータ 型 メソッド 名 ( 引 数 1, 引 数 2,.){ ここでは 詳 しく 解 説 はいたしませんが メソッドは 呼 び 出 す 時 単 に 呼 び 出 すだけ ではなく 値 を 指 定 することもできます 例 えテレビに 対 して チャンネルを 変 えろ と いうメソッドを 呼 び 出 すことも 出 来 ますが チャンネルを"1"に 変 えろ と 何 か 値 を 指 定 して 呼 び 出 す 場 合 もあります また 現 在 のチャンネルを 教 えろ というメソッドを 呼 び 出 せばテレビが 持 っているデータを 参 照 して 呼 び 出 し 元 に 値 を 返 してきます ここでは 説 明 のために 一 番 簡 単 な 構 成 のメソッドを 見 てみます void メソッド 名 (){ 引 数 も 戻 り 値 もないメソッドです クラスの 場 合 { から の 間 にメソッドや フィールドを 記 述 しましたが メソッドの 場 合 も { から の 間 にメソッドが 行 い たい 処 理 を 記 述 します では 挨 拶 だけをする 簡 単 なクラスを 作 成 してみます class Robot{ void hello(){ System.out.println("こんにちは"); void bye(){ System.out.println("さようなら"); Robot クラスの 中 に hello メソッドと bye メソッドを 用 意 しました hello メソッド は 呼 び 出 されると こんにちは と 表 示 します また bye メソッドは 呼 び 出 されると さ ようなら と 表 示 します このように 必 要 な 機 能 をメソッドとして 追 加 しくことで そ のクラスから 作 成 されるモノが 持 つ 機 能 が 増 えていくことになります 11

2.7.2 フィールド フィールドの 書 式 は 次 のようになっています [ 修 飾 子 ] データ 型 変 数 名 ; ここでは 詳 しく 解 説 はいたしませんが フィールドには 変 数 を 記 述 します 変 数 と いうのは 値 を 一 時 的 に 保 管 する 場 所 のことで 値 のデータ 型 と 名 前 を 指 定 します デー タ 型 とは 値 の 種 類 のことで 例 えば 数 値 とか 文 字 列 などがあります 名 前 は 保 管 場 所 を 識 別 するために 付 けられた 名 前 です 例 えば 次 のように 記 述 します int old; String name; 整 数 を 扱 う old という 名 前 の 変 数 と 文 字 列 を 扱 う name という 名 前 の 変 数 を 記 述 しました では 数 値 をカウントするクラスを 作 成 してみます class Counter{ int num; void init(){ num = 0; void count(){ num = num + 1; void printnum(){ System.out.println(num); Counter クラスの 中 に 1 つのフィールドと 3 つのメソッドを 用 意 しました init メソ ッドを 呼 び 出 すと num 変 数 に 0 を 格 納 し count メソッドを 呼 び 出 すと num 変 数 に 格 納 されている 値 に 1 を 加 えて 再 度 num 変 数 に 格 納 します そして printnum メソッドを 呼 び 出 すと num 変 数 に 格 納 されている 値 を 出 力 します このようにフィールドは 同 じクラスのメソッドによって 値 を 設 定 したり 取 り 出 し たりして 使 われます メソッドもフィールドも 詳 細 に 説 明 するのはまた 別 のページで 行 いますので ここ ではどのように 使 われるのかを 覚 えておいてください 12

2.8 Java の 演 算 子 算 術 演 算 子 算 術 演 算 子 は 数 値 を 計 算 する 場 合 に 使 用 します 次 のようなものが 用 意 されていま す 演 算 子 使 用 例 意 味 + a + b a に b を 加 える - a - b a から b を 引 く * a * b a に b をかける / a / b a を b で 割 る % a % b a を b で 割 った 余 り 単 項 マイナス 演 算 子 単 項 演 算 子 は 数 値 の 正 と 負 を 反 転 させるために 使 用 します 次 のようなものが 用 意 されています 演 算 子 使 用 例 意 味 + +a a の 正 負 をそのまま - -a a の 正 と 負 を 反 転 インクリメント デクリメント 演 算 子 演 算 の 中 でも 数 値 を 1 つだけ 増 加 することと 1 つだけ 減 少 させる 処 理 は 比 較 的 多 く 使 用 されます + 演 算 子 や - 演 算 子 を 使 って 記 述 すると 次 のようになります int num = 7; num = num + 1; 変 数 num に 代 入 されている 値 と 1 を 加 算 し その 結 果 を 改 めて 変 数 num に 格 納 しています 1 つだけ 減 らす 場 合 も - 演 算 子 を 使 って 同 じように 記 述 することが できます このように 1 だけ 増 加 する 又 は 1 だけ 減 算 するために 用 意 された 演 算 子 がインク リメント 演 算 子 (++)とデクリメント 演 算 子 (--)です 演 算 子 使 用 例 意 味 ++ a++ 又 は ++a a の 値 を 1 増 加 する -- a-- 又 は --a a の 値 を 1 減 らす 13

例 えば 先 ほどの 例 は 次 のように 書 き 換 えることができます int num = 7; num++; 同 じように 変 数 の 値 を 1 つだけ 減 らす 場 合 には 次 のように 記 述 することができま す int num = 7; num--; ++ 演 算 子 や -- 演 算 子 は 対 象 となる 変 数 の 値 を 変 化 させますので 演 算 結 果 を 変 数 に 代 入 する 必 要 はありません なお a++ と 記 述 する 代 わりに ++a と 記 述 することもできますが 結 果 が 異 な る 場 合 があります 前 置 と 後 置 インクリメント 演 算 子 とデクリメント 演 算 子 にはそれぞれ 前 置 と 後 置 の 二 種 類 が 用 意 されています インクリメント 演 算 子 の 前 置 きと 後 置 きは 次 のようになります 前 置 : ++ 変 数 後 置 : 変 数 ++ デクリメント 演 算 子 の 前 置 きと 後 置 きは 次 のようになります 前 置 : -- 変 数 後 置 : 変 数 -- 前 置 であっても 後 置 であってもインクリメント 演 算 子 は 対 象 の 変 数 の 値 を 1 だけ 増 加 させ デクリメント 演 算 子 の 場 合 は 対 象 の 変 数 の 値 を 1 だけ 減 少 させることに 違 い はありません 次 の 例 を 見 て 下 さい int a = 7; a++; System.out.println(a); // 8 ++a; System.out.println(a); // 9 前 置 であっても 後 置 であってもこのような 使 い 方 の 場 合 には 同 じ 結 果 となります 14

前 置 と 後 置 で 結 果 が 異 なる 場 合 前 置 と 後 置 で 結 果 が 異 なる 場 合 について 確 認 します 次 の 例 を 見 て 下 さい int a = 7; int b; b = a++; System.out.println(a); System.out.println(b); 後 置 のインクリメント 演 算 子 を 使 っています この 場 合 は 次 のように 実 行 されます int a = 7; int b; b = a; a = a + 1; System.out.println(a); // 8 System.out.println(b); // 7 後 置 のインクリメント 演 算 子 の 場 合 まずインクリメント 演 算 子 が 書 かれていない かのように 文 が 実 行 されます 今 回 の 場 合 であれば 変 数 b に 変 数 a を 代 入 してい ますので 数 値 の 7 が 変 数 b に 代 入 されます それから 変 数 a の 値 を 1 だけ 増 加 さ せます 次 の 例 を 見 て 下 さい int a = 7; int b; b = ++a; System.out.println(a); System.out.println(b); 前 置 のインクリメント 演 算 子 を 使 っています この 場 合 は 次 のように 実 行 されます int a = 7; int b; a = a + 1; b = a; System.out.println(a); // 8 System.out.println(b); // 8 前 置 のインクリメント 演 算 子 の 場 合 まず 対 象 の 変 数 を 1 だけ 増 加 させます よっ て 変 数 a の 値 が 8 となります それからインクリメント 演 算 子 を 除 いた 文 の 実 行 を します 今 回 の 場 合 であれば 変 数 b に 変 数 a を 代 入 していますので 数 値 の 8 が 変 15

数 b に 代 入 されます 今 回 の 場 合 はインクリメント 演 算 子 と 代 入 が 含 まれる 場 合 でしたが a++; や --b; などのよう 文 でない 場 合 には 前 置 と 後 置 で 結 果 が 異 なる 場 合 がありますので 注 意 して 下 さい ビット 演 算 子 整 数 の 値 に 対 してビット 単 位 で 処 理 を 行 うために 用 意 されているのがビット 演 算 子 です 次 の 演 算 子 が 用 意 されています 演 算 子 使 用 例 意 味 & a & 0xFF00FF00 a と 0xFF00FF00 のビット AND a 0xFF00FF00 a と OxFF00FF00 のビット OR ^ a ^ 0xFF00FF00 a と OxFF00FF00 のビット XOR ~ ~a a のビット 反 転 (ビット NOT) << a << 3 a を 左 へ 3 ビットシフト >> a >> 3 a を 右 へ 3 ビットシフト( 符 号 有 り) >>> a >>> 3 a を 右 へ 3 ビットシフト( 符 号 無 し) 数 値 を 2 進 数 の 形 式 で 表 示 し 各 ビットに 対 して 演 算 を 行 います シフト 演 算 子 ビット 演 算 子 の 中 でも 下 記 の 3 つはシフト 演 算 子 と 呼 ばれることもあります 演 算 子 使 用 例 意 味 << a << 3 a を 左 へ 3 ビットシフト >> a >> 3 a を 右 へ 3 ビットシフト( 符 号 有 り) >>> a >>> 3 a を 右 へ 3 ビットシフト( 符 号 無 し) これらの 3 つの 演 算 子 は 対 象 の 値 の 各 ビットを 右 または 左 へシフトします 10 進 数 で 右 または 左 へ 数 値 をシフトした 場 合 それは 数 値 を 1/10 にしたり 10 倍 す ることを 意 味 します 例 えば 1230 を 左 へシフトして 12300 とす れば 10 倍 したことに なりますし 右 へシフトして 123 とすれば 1/10 になったこととなります 同 じように 2 進 数 でシフトした 場 合 は 1/2 にしたり 2 倍 したりすることを 意 味 します 代 入 演 算 子 変 数 に 値 を 代 入 する 時 に 使 用 する 代 入 演 算 子 (=)はこれまでのサンプルなどでも 使 用 してきました 演 算 子 使 用 例 意 味 = a = b a に b を 代 入 する = の 右 辺 に 書 かれた 値 や 変 数 などを 左 辺 に 書 かれた 変 数 に 代 入 します 16

代 入 演 算 子 は = の 他 に 別 の 演 算 子 と 組 み 合 わせた 次 のものが 用 意 されています 演 算 子 使 用 例 意 味 += a += b a = a + b と 同 じ -= a -= b a = a - b と 同 じ *= a *= b a = a * b と 同 じ /= a /= b a = a / b と 同 じ %= a %= b a = a % b と 同 じ &= a &= b a = a & b と 同 じ = a = b a = a b と 同 じ ^= a ^= b a = a ^ b と 同 じ <<= a <<= b a = a << b と 同 じ >>= a >>= b a = a >> b と 同 じ >>>= a >>>= b a = a >>> b と 同 じ これらの 演 算 子 は 変 数 に 代 入 する 値 に 何 らかの 演 算 を 行 って その 結 果 を 再 度 同 じ 変 数 に 代 入 する 場 合 に 便 利 です 関 係 演 算 子 今 後 処 理 を 制 御 するための 様 々な 方 法 が 出 てきます その 中 でもある 条 件 を 満 た している 時 だけ 実 行 する 条 件 分 岐 や 条 件 が 満 たされている 間 は 繰 り 返 し 同 じ 処 理 を 行 う 繰 り 返 し 処 理 などが 多 く 利 用 する 機 会 が 多 いと 思 います 詳 しい 解 説 は 別 のページで 行 いますので 下 記 のサンプルだけ 簡 単 に 見 てください int old = 10; if (old >= 20){ System.out.println("20 歳 以 上 です"); else{ System.out.println("20 歳 未 満 です"); 変 数 old に 代 入 された 値 を 20 と 比 較 します 大 きいか 等 しければ 20 歳 以 上 で す と 画 面 に 出 力 し 小 さい 場 合 には 20 歳 未 満 です と 画 面 に 出 力 します このような 条 件 式 で 使 用 されるのが 関 係 演 算 子 です 関 係 演 算 子 は 2 つの 値 を 比 べ ます 大 きいか 小 さいかまたは 等 しいかなどを 評 価 し 結 果 として 式 全 体 が true 又 は false となります 左 辺 関 係 演 算 子 右 辺 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 式 が 評 価 され 結 果 として 式 が true か false となる 17

関 係 演 算 子 として 用 意 されているのは 次 の 通 りです 演 算 子 使 用 例 意 味 < a < b a は b よりも 小 さい <= a <= b a は b よりも 小 さいか 等 しい > a > b a は b よりも 大 きい >= a > b a は b よりも 大 きいか 等 しい == a == b a と b は 等 しい!= a!= b a は b は 等 しくない instanceof a instanceof b 参 照 型 変 数 a が b クラス/インターフェース/ 配 列 のインス タンスかどうか 関 係 演 算 子 を 含 む 式 が 正 しければ true となり 間 違 っていれば false となります 例 えば 10 < 20 は 正 しいので 10 < 20 という 式 が true となります 論 理 演 算 子 関 係 演 算 子 を 使 うことで 様 々な 条 件 を 記 述 することができますが さらに 論 理 演 算 子 を 使 うことで 10 より 大 きく かつ 30 より 小 さい や x が 10 と 等 しい 又 は y が 20 と 等 しい などのように 複 数 の 条 件 式 を 組 み 合 わせたより 複 雑 な 条 件 式 を 記 述 でき ます 論 理 演 算 子 を 使 った 場 合 も 結 果 として 式 が boolean 型 の true( 真 )か false( 偽 )のいずれ かとなります 論 理 演 算 子 として 用 意 されているのは 次 の 通 りです 演 算 子 使 用 例 意 味 && a && b a と b が 共 に true の 時 に true a b a か b の 少 なくとも 1 つが true の 場 合 に true!!a a が true の 場 合 に false a が false の 場 合 に true 論 理 演 算 子 の 場 合 には 対 象 となる 値 が boolean 型 の 値 です これは boolean 型 の 値 を 指 定 する 場 合 もありますが 通 常 は 関 係 演 算 子 を 使 った 条 件 式 などを 記 述 します ではそれぞれ 確 認 してみます 論 理 積 && は 論 理 積 とも 呼 ばれ 演 算 子 の 左 辺 及 び 右 辺 の 値 が 共 に true の 場 合 だけ 全 体 も true となります 左 辺 && 右 辺 18

左 辺 と 右 辺 の 値 による 全 体 の 値 の 一 覧 は 次 の 通 りです 左 辺 右 辺 全 体 true true true true false false false true false false false false 次 の 例 を 見 てください int num = 10; boolean b; b = num > 5 && num <= 20; この 場 合 まず num > 5 について 判 定 します 結 果 は true です 次 に num <= 20 を 判 定 します 結 果 は true です そして&& 演 算 子 の 両 端 の 値 が 共 に true ですので 式 num > 5 && num <= 20 は true となります なお 最 後 に && 演 算 子 が 判 定 されるのは > 演 算 子 や <= 演 算 子 と 比 べて 優 先 順 位 が 低 いためです 論 理 和 は 論 理 和 とも 呼 ばれ 演 算 子 の 左 辺 または 右 辺 の 値 の 少 なくとも 一 つが true の 場 合 に 全 体 が true となります 左 辺 右 辺 左 辺 と 右 辺 の 値 による 全 体 の 値 の 一 覧 は 次 の 通 りです 左 辺 右 辺 全 体 true true true true false true false true true false false false 次 の 例 を 見 てください int num1 = 10; int num2 = 20; boolean b; b = num1 > 20 num2 < 30; 19

この 場 合 まず num1 > 20 について 判 定 します 結 果 は false です 次 に num2 < 30 を 判 定 します 結 果 は true です そして 演 算 子 の 両 端 の 値 の 少 なくとも 一 つが true ですので 式 num1 > 20 num2 < 30 は true となります なお && 演 算 子 と 演 算 子 の 優 先 順 位 は 同 じではなく && の 方 が 優 先 順 位 が 高 くなっています 次 の 例 を 見 てください int num1 = 30; int num2 = 10; boolean b; b = num1 > 20 num2 < 30 && num2 > 20; この 場 合 先 に num2 < 30 && num2 > 20 が 判 定 されます これは false となりま す 次 に num1 > 20 false が 判 定 されますので 全 体 としては true となります もし 先 に num1 > 20 num2 < 30 から 判 定 された 場 合 は 次 に true && num2 > 20 が 判 定 されるため 全 体 としては false となり 本 当 の 結 果 とは 変 わってしまいます このように 論 理 演 算 子 が 複 数 含 まれるような 式 の 場 合 には 優 先 順 位 に 注 意 して 下 さい 論 理 否 定! は 論 理 否 定 とも 呼 ばれ 演 算 子 の 右 辺 の 値 を 反 転 します! 右 辺 右 辺 の 値 による 全 体 の 値 の 一 覧 は 次 の 通 りです 右 辺 true false 全 体 false true 次 の 例 を 見 てください int num = 10; boolean b; b =!(num > 20); この 場 合 まず num > 20 について 判 定 します 結 果 は false です そして! 演 算 子 によっての 式!(num > 20) は true となります なお! 演 算 子 は 優 先 順 位 がかなり 高 いので 必 要 に 応 じて 括 弧 を 使 って 下 さい 20

判 定 される 順 番 && 演 算 子 や 演 算 子 では 左 辺 及 び 右 辺 の 値 を 使 って 全 体 の 判 定 を 行 いますが どち らの 演 算 子 もまず 左 辺 から 判 定 します 左 辺 && 右 辺 && 演 算 子 の 場 合 で 考 えてみると まず 左 辺 を 判 定 します ここで 左 辺 が false だっ た 場 合 には 全 体 が false と 確 定 するため 右 辺 の 判 定 は 行 いません 左 辺 右 辺 演 算 子 の 場 合 もまず 左 辺 を 判 定 します ここで 左 辺 が true だった 場 合 には 全 体 が true と 確 定 するため 右 辺 の 判 定 は 行 いません ここで 順 番 を 何 故 気 にするのかと 言 えば まず 左 辺 から 先 に 判 定 されるため 左 辺 と 右 辺 のどちらに 何 を 記 述 するのかによって 処 理 効 率 が 変 わる 場 合 があります 左 辺 だけ で 結 果 が 確 定 する 場 合 が 多 いようにしておけば 右 辺 を 判 定 する 必 要 がなく 効 率 的 です また 左 辺 で 結 果 が 確 定 した 場 合 に 右 辺 は 判 定 されませんので 右 辺 にインクリメン ト 演 算 子 を 含 む 式 が 記 述 されていた 場 合 など 式 そのものが 処 理 されない 場 合 もありま す 次 の 例 を 見 てください int num1 = 30; int num2 = 25; boolean b; b = num1 > 10 ++num2 < 40; この 場 合 演 算 子 の 左 辺 だけで 全 体 が true となることが 確 定 するため 右 辺 はまっ たく 処 理 されません その 為 変 数 num2 の 値 も 1 増 えることはあ りません もしも 左 辺 が false だった 場 合 には 右 辺 も 判 定 されるため 変 数 num2 の 値 が 式 を 判 定 後 に 1 だけ 増 加 します このように 論 理 演 算 子 を 使 用 する 場 合 には 注 意 が 必 要 となります 条 件 演 算 子 ( 三 項 演 算 子 ) 条 件 演 算 子 は 三 項 演 算 子 とも 呼 ばれる 演 算 子 で 条 件 によって 処 理 を 分 けることが できます 書 式 は 次 の 通 りです す 条 件 式? 式 1 : 式 2 条 件 式 の 値 が true だった 場 合 に 式 1 を 処 理 し false だった 場 合 に 式 2 を 処 理 しま 21

文 字 列 の 連 結 + 演 算 子 は 算 術 演 算 子 の 加 算 や 単 項 演 算 子 としても 使 われていますが 文 字 列 に 対 して 使 用 すると 文 字 列 と 文 字 列 を 連 結 する 演 算 子 となります 文 字 列 1 + 文 字 列 2 次 の 例 を 見 てください System.out.println(" 目 覚 まし" + " 時 計 "); 上 記 では 目 覚 まし と 時 計 という 2 つの 文 字 列 を 連 結 しています 文 字 列 を 連 結 するというのは 左 側 の 文 字 列 の 後 ろに 右 側 の 文 字 列 をつなげた 文 字 列 となります よって 目 覚 まし 時 計 という 文 字 列 を 画 面 に 出 力 することになります 演 算 子 の 優 先 順 位 演 算 子 の 優 先 順 位 と 結 合 規 則 は 次 の 通 りです 優 先 順 位 高 演 算 子. [] () { ;, ++ -- ~! * / % + - << >> >>> < > <= >= ==!= & ^ && 低?: = *= /= %= += -= <<= >>= >>>= &= ^= = たとえば int a =2; int b = a + 3*a; 3 * a を 先 に 計 算 しますから + より * の 方 が 優 先 順 位 が 高 いといいます 22

上 記 の 演 算 子 の 表 は 上 にかかれている 演 算 子 のほうが 優 先 順 位 が 高 くなっていま す 優 先 順 位 と 異 なる 順 に 計 算 したい 場 合 は 丸 カッコを 用 いて 計 算 順 序 を 明 示 します (a+ 3) * a 2.9 制 御 構 造 複 雑 な 処 理 を 行 うプログラムを 作 成 するためには 制 御 構 造 (control structure) を 用 いる すなわち さまざまな 制 御 構 造 を 組 み 合 わせてプログラムを 作 成 することが できます これは いわゆる 構 造 化 プログラミングの 発 想 です 制 御 構 造 は 選 択 と 繰 り 返 しに 分 類 されます 2.9.1 If 選 択 文 If 文 の 処 理 一 : 条 件 式 を 評 価 した 結 果 に 応 じて 処 理 を 分 けたい 場 合 に 使 われるのが if 文 です 書 式 は 次 のようになっています if ( 条 件 式 ){ 実 行 する 文 1; 実 行 する 文 2; 条 件 式 が false だった 場 合 にはブロック 内 の 処 理 は 何 も 行 わず if 文 の 次 の 文 へ 処 理 が 移 ります 実 際 には 次 のように 記 述 します int x=0; if (x==1) System.out.println("x=1"); 上 位 の 例 では 変 数 x は1の 場 合 にはブロック 内 の 処 理 を 実 行 して x=1 と 画 面 に 表 示 します 23

If 文 の 処 理 二 : if 文 を 使 えば 条 件 式 が true の 時 だけ 行 う 処 理 を 記 述 できますが 条 件 式 が false だ った 場 合 の 処 理 も 合 わせて 記 述 することができます その 場 合 の 書 式 は 次 の 通 りです if ( 条 件 式 ){ true の 時 に 実 行 する 文 1; true の 時 に 実 行 する 文 2; else{ false の 時 に 実 行 する 文 1; false の 時 に 実 行 する 文 2; 条 件 式 を 評 価 し true だった 場 合 には 条 件 式 の 後 のブロック 内 の 文 を 実 行 し false だった 場 合 には else の 後 のブロック 内 の 文 を 実 行 します 条 件 式 の 評 価 は 必 ず true か false になるためどちらか 一 方 のブロック 内 の 文 だけを 実 行 することになります 実 際 には 次 のように 記 述 します int x=0; if(x==1) System.out.println("X=1"); else System.out.println("X!=1"); 上 位 の 例 では 変 数 x の 値 が 1 の 場 合 には x=1 と 画 面 に 表 示 します そして 変 数 x の 値 が 1 ではない 場 合 には x!=1 と 画 面 に 表 示 します この 処 理 流 れは 条 件 演 算 子 ( 三 項 演 算 子 )と 同 じです たとえば if(x>0) y=x; else y=-x; 条 件 演 算 子 で 書 き 換 えて 下 記 とおりです y = x>0?x:-x; 24

If 文 の 処 理 三 : ここまでは 一 つの 条 件 式 を 使 って 条 件 分 岐 を 行 ってきましたが 今 度 は 複 数 の 条 件 式 を 使 いより 複 雑 な 条 件 文 を 行 ってみます 書 式 は 次 の 通 りです if ( 条 件 式 1){ 条 件 式 1 が true の 時 に 実 行 する 文 1; 条 件 式 1 が true の 時 に 実 行 する 文 2; else if ( 条 件 式 2) { 条 件 式 1 が false で 条 件 式 2 が true の 時 に 実 行 する 文 1; 条 件 式 1 が false で 条 件 式 2 が true の 時 に 実 行 する 文 2; else if ( 条 件 式 3) { else{ 全 ての 条 件 式 が 共 に false の 時 に 実 行 する 文 1; 全 ての 条 件 式 が 共 に false の 時 に 実 行 する 文 2; 複 数 の 条 件 式 が 使 われている 場 合 は 上 の 条 件 式 から 順 に 評 価 していきます まず 条 件 式 1 を 評 価 し true だった 場 合 は 直 後 のブロック 内 の 処 理 を 実 行 して if 文 を 終 了 しま す 条 件 式 1 の 評 価 が false だった 場 合 だけ 次 の 条 件 式 2 を 評 価 します 条 件 式 2 が true だった 場 合 には 直 後 のブロック 内 の 処 理 を 実 行 し て if 文 を 終 了 します このように 順 に 条 件 式 を 評 価 し 全 ての 条 件 式 が false だった 場 合 に else の 後 のブロック 内 の 文 を 実 行 します 実 際 には 次 のように 記 述 します if (x==1) { System.out.println("X=1"); else if (x==2) { System.out.println("X=2"); else if (x==3){ System.out.println("X=3"); else { System.out.println("other"); 25

If 文 の 処 理 四 : もう 1 つもっと 複 雑 の 条 件 式 使 われている 場 合 があります if 文 のネスト( 入 れ 子 構 造 )といいます if( 条 件 式 1){ if( 条 件 式 2){ 条 件 式 2 が true の 場 合 の 処 理 else{ 条 件 式 1 が true で 条 件 式 2 が false の 場 合 else{ if( 条 件 式 3){ 条 件 式 1 が false で 条 件 式 3 が true の 場 合 else{ 条 件 式 1 も 条 件 式 3 も false の 場 合 このような 記 述 になります それぞれ if 文 の 中 にさらに if else 文 を else 文 の 中 にさらに if else 文 を 記 述 して ネストしています では 実 際 にサンプルプログラムを 見 ていきます if (x == 1) { if(y == 1) System.out.println("x = 1,y = 1"); else System.out.println("x = 1,y!= 1"); else if(x!=1) { if(y == 1) System.out.println("x!= 1,y = 1"); else System.out.println("x!= 1,y!= 1"); 26

2.9.2 Switch 選 択 文 ある 変 数 の 値 を 複 数 の 値 と 比 較 し 値 に 応 じた 処 理 を 行 うような 場 合 を 考 えてみま す if 文 を 使 って 記 述 すると 次 のようになります int num = 3; if (num == 1){ System.out.println(" 非 常 に 不 満 "); else if (num == 2){ System.out.println(" 少 し 不 満 "); else if (num == 3){ System.out.println("どちらとも 言 えない"); else if (num == 4){ System.out.println(" 少 し 満 足 "); else if (num == 5){ System.out.println(" 大 変 満 足 "); このように if 文 を 使 っても 記 述 できますが 対 象 となる 値 毎 に 処 理 を 分 けるには switch 文 を 使 って 記 述 することもできます switch 文 の 利 用 switch 文 は 対 象 の 式 を 評 価 した 結 果 の 値 に 応 じ 値 に 一 致 するラベルの 位 置 へ 処 理 を 移 すために 使 います 条 件 分 岐 とは 厳 密 には 少 し 違 いますが 同 じような 使 い 方 ができ る 文 ですす switch 文 の 書 式 は 次 のようになっています switch ( 式 ){ case 定 数 1: 実 行 する 文 1; 実 行 する 文 2; break; case 定 数 2: 実 行 する 文 1; 実 行 する 文 2; break; 27

switch 文 ではまず 式 を 評 価 します 式 には 単 に 整 数 の 値 が 代 入 された 変 数 などを 単 に 記 述 してもいいですし 計 算 式 などを 記 述 することも 可 能 です ただ いずれの 場 合 であっても 式 の 評 価 した 結 果 が 整 数 でなければなりません 浮 動 小 数 点 数 や 文 字 列 など は 記 述 できません また 整 数 であっても long 型 の 値 は 使 用 できません 式 には 例 えば 次 のように 記 述 します int num = 3; switch (num){ // 変 数 の 値 が 式 を 評 価 した 値 switch (num % 2){ // 演 算 結 果 が 式 を 評 価 した 値 次 に switch 文 の { から のブロック 内 に 実 行 したい 処 理 を 羅 列 していきます int num = 3; switch (num){ System.out.println(" 非 常 に 不 満 "); System.out.println(" 少 し 不 満 "); System.out.println("どちらとも 言 えない"); System.out.println(" 少 し 満 足 "); System.out.println(" 大 変 満 足 "); switch 文 は 式 を 評 価 した 値 に 一 致 するラベルへ 処 理 を 移 動 させるために 使 われま す そこでどの 値 だったらどの 処 理 を 行 うのかを 指 定 するためにブロック 内 にラベルを 記 述 していきます ラベルは 次 のような 形 式 となっています case 定 数 : ブロック 内 にラベルを 記 述 すると 式 を 評 価 した 値 と 一 致 するラベルのところへ 処 理 を 移 すことができます 28

例 えば 5 つのラベルを 記 述 すると 次 のようになります int num = 3; switch (num){ case 1: System.out.println(" 非 常 に 不 満 "); case 2: System.out.println(" 少 し 不 満 "); case 3: System.out.println("どちらとも 言 えない"); case 4: System.out.println(" 少 し 満 足 "); case 5: System.out.println(" 大 変 満 足 "); ラベルに 書 いた 値 が 1 2 3 4 5 ですので 式 の 値 が 1 から 5 の 場 合 に 対 応 するラベルの 位 置 へ 処 理 が 移 ります 今 回 の 場 合 変 数 num の 値 が 3 ですの で case 3: のラベルの 位 置 に 処 理 が 移 ります そしてその 後 に 記 述 された System.out.println("どちらとも 言 えない"); が 実 行 されます 注 意 して 頂 きたいのはあくまでラベルが 書 かれた 位 置 に 処 理 が 移 るだけというこ とです ラベルの 位 置 へ 移 動 した 後 は switch 文 の 最 後 までそれ 以 降 の 文 を 順 に 実 行 し ていきます よって System.out.println("どちらとも 言 えない"); が 実 行 された 後 は System.out.println(" 少 し 満 足 "); と System.out.println(" 大 変 満 足 "); が 実 行 されます もしもラベルの 位 置 へ 移 動 した 後 に 次 のラベルの 前 まで 来 たら switch 文 を 終 了 さ せたい 場 合 には break 文 を 使 います break 文 についてはまた 別 のページで 詳 しく 解 説 しますが switch 文 の 中 で break 文 が 実 行 されると switch 文 を 終 了 します 具 体 的 には 次 のように 記 述 します int num = 3; switch (num){ case 1: System.out.println(" 非 常 に 不 満 "); break; case 2: System.out.println(" 少 し 不 満 "); break; case 3: 29

System.out.println("どちらとも 言 えない"); break; case 4: System.out.println(" 少 し 満 足 "); break; case 5: System.out.println(" 大 変 満 足 "); break; 上 記 のように break 文 を 記 述 すると break 文 を 実 行 した 時 点 で switch 文 は 終 了 しま す よって 上 記 の 場 合 では System.out.println("どちらとも 言 えない"); が 実 行 された 後 に break; が 実 行 されて switch 文 は 終 了 します 以 上 が switch 文 の 大 まかな 使 い 方 です if 文 を 使 えば 同 じようなことが 記 述 できる 場 合 が 多 いのですが 一 つの 変 数 の 値 に 応 じて 処 理 を 分 けたい 場 合 には switch 文 の 方 が 見 やすく 記 述 できる 場 合 があります default 句 式 の 値 と 一 致 するラベルが 無 かった 場 合 は 何 も 実 行 せずに switch 文 を 終 了 します が 一 致 するラベルが 無 かった 場 合 に 何 か 実 行 させたい 処 理 がある 場 合 には default 句 を 使 います 書 式 は 次 の 通 りです switch ( 式 ){ case 定 数 1: 実 行 する 文 ; break; case 定 数 2: 実 行 する 文 ; break; default: 実 行 する 文 1; 実 行 する 文 2; 上 記 の 場 合 式 を 評 価 した 結 果 の 値 が 定 数 1 にも 定 数 2 にも 一 致 しなかった 場 合 には default: の 位 置 に 処 理 が 移 ります そしてその 後 に 書 かれた 文 が 順 に 実 行 されて いきます 例 えば 次 のように 記 述 します 30

int num = 3; switch (num){ case 4: System.out.println(" 少 し 満 足 "); break; case 5: System.out.println(" 大 変 満 足 "); break; default: System.out.println(" 満 足 していない"); 上 記 の 場 合 変 数 num の 値 が 4 または 5 以 外 の 場 合 には 全 て System.out.println(" 満 足 していない"); の 文 を 実 行 します 2.9.3 while 繰 り 返 し 文 主 に 指 定 した 回 数 だけ 繰 り 返 し 目 的 で 利 用 される for 文 に 対 して 条 件 が 満 たされ ている 間 は 何 度 でも 繰 り 返 す 目 的 で 利 用 されるのが while 文 です 書 式 は 次 の 通 りです while ( 条 件 式 ){ 実 行 する 文 1; 実 行 する 文 2; while 文 では 条 件 式 を 評 価 し true だった 場 合 には { から のブロック 内 に 記 述 された 文 を 実 行 します では 簡 単 な 例 を 使 い while 文 がどのように 処 理 されるのかを 確 認 してみます int x=1; while(x<3) { System.out.println("x="+x); x++; 注 意 :while( 条 件 式 )の 後 には;(セミコロン)は 不 要 です 31

do while 文 while 文 ではまず 条 件 式 を 評 価 してから 1 回 目 の 繰 り 返 しを 行 います その 為 場 合 によっては 一 度 も 繰 り 返 し 処 理 を 行 わないことがあります それ に 対 してまず 繰 り 返 しを 一 度 行 ってから 条 件 式 を 評 価 したい 場 合 に 利 用 されるのが do..while 文 です 書 式 は 次 の 通 りです do{ 実 行 する 文 1; 実 行 する 文 2; while ( 条 件 式 ); do..while 文 ではまず { から のブロック 内 に 記 述 された 文 を 実 行 します そ して 条 件 式 を 評 価 し true だった 場 合 には 再 度 ブロック 内 の 処 理 を 行 いますが false だっ た 場 合 には do..while 文 を 終 了 して 次 の 文 へ 処 理 が 移 ります 注 意 すべき 点 は 最 後 にセミコロン(;)を 付 ける 必 要 がある 点 です 2.9.4 for for 文 は 指 定 した 回 数 だけ 処 理 を 繰 り 返 す 時 に 使 われます 書 式 は 次 の 通 りです for ( 初 期 化 式 ; 条 件 式 ; 変 化 式 ){ 実 行 する 文 1; 実 行 する 文 2; for 文 では 条 件 式 を 評 価 し true だった 場 合 には { から のブロック 内 に 記 述 された 文 を 実 行 します そしてブロック 内 の 処 理 が 一 通 り 終 わると 改 めて 条 件 式 を 評 価 します そしてまた true だった 場 合 にはブロック 内 の 文 の 実 行 し false だった 場 合 には for 文 を 終 了 します ではまず 条 件 式 だけを 使 って for 文 を 記 述 してみます 次 の 例 を 見 て 下 さい for (int i = 0; i < 2; i++){ System.out.println(i); 32

この 例 では 条 件 式 i < 2 が true となる 間 繰 り 返 し 処 理 を 実 行 します 繰 り 返 し 処 理 を 1 度 実 行 するために 条 件 を 変 化 させなければ 無 限 に 繰 り 返 しを 行 ってしまいます ので 今 回 の 例 では 繰 り 返 しの 中 で 実 行 される 文 の 一 つとして 変 数 i の 値 を 1 ずつ 増 加 させています この 例 では 次 のように 文 が 実 行 されていきます 1)i = 0; 2) 条 件 式 を 評 価 i は 2 よりも 小 さいので 繰 り 返 しを 実 行 3) System.out.println(i); 4)i++; 5) 条 件 式 を 評 価 i は 2 よりも 小 さいので 繰 り 返 しを 実 行 6) System.out.println(i); 7)i++; 8) 条 件 式 を 評 価 count は 2 よりも 小 さくないので 繰 り 返 しを 終 了 このように for 文 ではまず 最 初 に 条 件 式 が 評 価 されます もしも 条 件 式 がいきなり false となった 場 合 には 繰 り 返 し 処 理 は 実 行 されません 条 件 式 が true だった 場 合 には for 文 の { から までのブロック 内 の 文 を 順 に 実 行 していきます ブロック 内 の 最 後 の 文 を 実 行 したら 1 回 目 の 繰 り 返 しが 終 了 です そして for 文 の 最 初 に 戻 り 改 めて 条 件 式 を 評 価 します true なら 再 度 ブロック 内 の 文 を 実 行 し false だ った 場 合 には for 文 の 次 の 文 へ 処 理 が 移 ります for 文 はこのように 条 件 式 の 評 価 とブロック 内 の 処 理 の 実 行 を 繰 り 返 す 為 のもので す 2.9.5 break break 文 は for 文 while 文 do..while 文 switch 文 のブロック 内 で 使 用 され break 文 が 実 行 されるとブロックを 抜 けて 次 の 処 理 へ 移 ります break 文 の 書 式 は 次 のように なっています break; switch 文 の 中 で break 文 をどのように 使 うのかについては switch 文 を 説 明 する 部 分 を 参 照 して 下 さい まずは for 文 での 使 い 方 を 確 認 します for 文 は 条 件 式 が true の 間 ブロック 内 の 処 理 を 繰 り 返 し 実 行 しますが break 文 が 実 行 されると for 文 を 終 了 し 次 の 処 理 へ 移 ります 33

for ( 初 期 化 式 ; 条 件 式 ; 変 化 式 ){ if ( 条 件 式 ){ break; if 文 などと 組 み 合 わせて break 文 を 記 述 します (if 文 などと 組 み 合 わせなければ 必 ず 1 回 目 の 繰 り 返 しの 途 中 で break 文 が 実 行 され for 文 が 終 了 してしまいます) 実 際 には 次 のように 記 述 します int sum = 0; for (int i = 1; i <= 100; i++){ sum += i; if (sum > 100){ break; System.out.println("sum = " + sum); この 場 合 1 から 100 までの 数 値 を 順 に 加 算 していきますが 合 計 が 100 を 超 えた 時 点 で break 文 を 実 行 し for 文 を 終 了 し 次 の 文 へ 処 理 が 移 ります while 文 の 場 合 も 基 本 的 に 同 じです 繰 り 返 しの 途 中 で break 文 が 実 行 されると while 文 を 終 了 し 次 の 処 理 へ 移 ります while ( 条 件 式 ){ if ( 条 件 式 ){ break; 実 際 には 次 のように 記 述 します 34

int num = 1; while(true){ System.out.println(num); num++; if (num > 100){ break; この 場 合 while 文 の 条 件 式 が true となっていますので 条 件 式 を 評 価 した 結 果 は 常 に true となりこのままでは 無 限 ループとなります ただし 変 数 num の 値 が 100 を 越 えたら break 文 が 実 行 され while 文 が 終 了 します do..while 文 の 場 合 も 基 本 的 には 同 じです 2.9.6 continue 文 continue 文 は break 文 と 同 じく for 文 while 文 do..while 文 のブロック 内 で 使 用 さ れ continue 文 が 実 行 されると 実 行 された 位 置 からブロックの 最 後 まで 残 りの 処 理 をス キップします continue 文 の 書 式 は 次 のようになっています continue; スキップという 意 味 が 分 かりにくいかもしれませんが 次 の 例 を 見 て 下 さい for (int i = 0; i < 10; i++){ if (i == 3){ continue; System.out.println(i); 上 記 では 変 数 i の 値 が 3 の 時 に continue 文 が 実 行 されます continue 文 が 実 行 さ れるとブロック 内 でそれ 以 降 に 記 述 された 処 理 を 全 て 行 わずに 次 の 繰 り 返 しの 条 件 判 断 に 進 みます つまり 上 記 の 場 合 は 変 数 i の 値 が 3 の 時 だけ System.out.println(i); が 実 行 されません なお for 文 の 場 合 は 変 化 式 が 別 途 用 意 されているので 気 にしなくても 大 丈 夫 ですが while 文 などでは 条 件 式 の 値 を 変 化 させる 処 理 も 含 めてスキップさせてしまわないよう 35

に 気 をつけて 下 さい 例 えば 次 のように 記 述 してしまうと 変 数 i が 3 になると 変 数 i の 値 を 変 化 さ せる 処 理 もスキップしてしまうため 次 の 繰 り 返 し 処 理 になっても 変 数 i の 値 が 変 化 せずに 無 限 ループとなってしまいます int i = 0; while(i < 10){ if (i == 3){ continue; i++; System.out.println(i); なお break 文 と 同 じく 繰 り 返 し 処 理 が 多 重 になっている 場 合 には continue 文 を 含 む 一 番 内 側 の 繰 り 返 し 処 理 をスキップして 次 の 繰 り 返 しへ 移 ります 任 意 の 繰 り 返 し 処 理 をスキップさせるには 次 のページで 解 説 するラベル 付 き continue を 使 って 下 さい 36

2.10 配 列 2.10.1 概 念 同 じ 基 本 データ 型 のデータをいくつかまとめて 一 方 向 または 多 方 向 に 並 べたデー タ 型 は 配 列 (array)と 呼 ばれます 配 列 には 要 素 を 一 方 向 に 並 べた1 次 元 配 列 (one-dimensional array)と 多 方 向 に 並 べた 多 次 元 配 列 (multi-dimensional array)があります 2.10.2 配 列 宣 言 配 列 を 使 用 するには まず 最 初 に 使 用 する 配 列 を 宣 言 しなくてはいけません 宣 言 は 次 のように 行 います 型 名 配 列 変 数 名 []; 変 数 の 場 合 と 同 じく 格 納 される 値 のデータ 型 と 配 列 を 区 別 するための 配 列 変 数 名 を 指 定 します 一 つの 配 列 には 同 じデータ 型 の 値 しか 格 納 することはできません 変 数 の 場 合 は 宣 言 するだけで 一 つの 値 を 格 納 できる 場 所 が 確 保 されましたが 配 列 の 場 合 では 値 を 格 納 する 場 所 を 必 要 な 数 だけ 後 から 確 保 する 必 要 があります 場 所 を 確 保 するには new 演 算 子 を 使 って 次 のように 行 います 型 名 配 列 変 数 名 []; 配 列 変 数 名 = new 型 名 [ 要 素 数 ]; 一 つの 配 列 に 確 保 される 一 つ 一 つの 場 所 を 要 素 と 呼 びます new 演 算 子 では 型 名 の 後 の [ から ] の 間 に 要 素 の 数 である 要 素 数 を 指 定 して 格 納 する 場 所 である 要 素 を 確 保 し それを 配 列 変 数 に 代 入 します これで 配 列 は 要 素 数 の 数 だけの 値 を 格 納 するこ とができるようになります なお 配 列 の 宣 言 と 要 素 の 確 保 はまとめて 次 のように 記 述 することもできます 型 名 配 列 変 数 名 [] = new 型 名 [ 要 素 数 ]; 例 えば int 型 の 値 を 5 つ 格 納 できる 配 列 を 用 意 するには 次 のように 記 述 します int a[]; a = new int[5]; int b[] = new int[5]; 上 は 配 列 の 宣 言 と 要 素 の 確 保 を 別 々に 行 った 場 合 下 は 要 素 の 宣 言 と 配 列 の 確 保 を まとめて 行 った 場 合 です 配 列 の 宣 言 の 別 の 方 法 Java では 先 に 記 述 した 記 述 方 法 の 他 に 次 の 書 式 を 使 うことができます 型 名 [] 配 列 変 数 名 ; 37

どちらの 書 式 であっても 配 列 の 宣 言 に 違 いはありません どちらかの 方 法 で 統 一 し て 使 うようにしていればいいと 思 います ただどちらかの 書 式 では 記 述 しにくい 時 もあ りますので 二 つの 記 述 方 法 があることは 覚 えておいて 下 さい この 書 式 を 使 って int 型 の 値 を 5 つ 格 納 できる 配 列 を 用 意 するには 次 のように 記 述 します int[] a; a = new int[5]; int[] b = new int[5]; 2.10.3 初 期 化 変 数 では 次 のように 宣 言 と 同 時 に 初 期 値 を 代 入 することができました 型 名 変 数 名 = 初 期 値 ; 配 列 の 場 合 で 配 列 の 宣 言 と 要 素 の 確 保 そして 各 要 素 への 初 期 値 の 代 入 をまとめて 行 うには 次 の 書 式 を 使 います 型 名 配 列 変 数 名 [] = { 値 1, 値 2, ; 配 列 の 各 要 素 に 代 入 する 初 期 値 を { から の 間 にカンマ(,)で 区 切 って 記 述 し ます 要 素 の 確 保 が 行 われていませんが 値 を 記 述 した 数 と 同 じ 要 素 を 自 動 的 に 確 保 し ます 実 際 には 次 のように 記 述 します int n[] = {18, 29, 36, 12; この 場 合 int 型 のデータを 扱 い 4 つの 要 素 を 持 つ 配 列 を 作 成 し 各 要 素 には 18 29 36 12 と 言 う 値 を 代 入 するということになります これは 次 のように 記 述 した 事 と 同 じです int n[]; n = new int[4]; n[0] = 18; n[1] = 29; n[2] = 36; n[3] = 12; この 書 式 はとても 便 利 ですが 配 列 の 要 素 数 の 分 だけ 必 ず 値 を 指 定 する 必 要 があり ます 8 個 の 要 素 が 必 要 だが 初 期 化 の 時 点 では 4 つ 要 素 だけ 初 期 値 を 代 入 したいといっ た 場 合 にはこの 書 式 ではなく 配 列 の 宣 言 を 行 って 要 素 を 確 保 してから 一 つ 一 つ 初 期 値 38

を 代 入 していくしかありません 2.10.4 配 列 の 長 さ 配 列 で 確 保 されている 要 素 の 数 を 調 べたい 場 合 があります 要 素 の 数 は 配 列 の 長 さ とも 呼 ばれますが 次 の 書 式 で 取 得 することができます 配 列 変 数 名.length 調 べたい 配 列 変 数 の 後 にドット(.)+length と 記 述 することで 配 列 の 長 さを 取 得 でき ます (なお length はフィールドではなく 特 別 な 構 文 です フィールドについてはクラ スの 説 明 の 時 に 行 います) 実 際 には 次 のように 記 述 します int n[] = {18, 29, 36, 12; System.out.println(n.length); 配 列 には 4 つの 要 素 が 確 保 されていますので 画 面 には 4 と 表 示 されます 配 列 の 長 さは 配 列 と 繰 り 返 し 処 理 を 組 み 合 わせて 使 用 する 場 合 によく 使 用 されま す 配 列 の 全 ての 要 素 を 順 に 処 理 したい 時 要 素 の 数 を 取 得 して 繰 り 返 しを 行 う 回 数 を 決 めます 次 の 例 を 見 てください int n[] = {18, 29, 36, 12; for (int i = 0; i < n.length; i++){ System.out.println(n[i]); 条 件 式 の 箇 所 で 配 列 変 数.length を 使 い 繰 り 返 し 回 数 を 決 めています 配 列 の 要 素 数 が 確 定 していれば 数 値 を 直 接 記 述 した 方 が 効 率 がいいのですが 配 列 変 数.length を 使 っておけば 後 で 配 列 の 要 素 の 数 が 変 更 になった 場 合 でも 修 正 は 必 要 ありません ま た 数 値 が 記 述 されているとなぜこの 数 値 なのか 後 から 分 からなくなる 可 能 性 もあり ますが 数 値 の 代 わりに 配 列 変 数.length が 記 述 されていれば 配 列 の 長 さだけ 処 理 したか っということがはっきりと 分 かります 2.10.5 多 次 元 配 列 配 列 は 複 数 の 値 をまとめて 管 理 できる 便 利 なものですが 配 列 の 各 要 素 に 代 入 する 値 に 別 の 配 列 を 使 うことができます 次 の 例 を 見 てください int kokugo[] = {80, 92, 45; int sansu[] = {75, 89, 54; 39

国 語 と 算 数 の 成 績 をそれぞれ 3 人 分 管 理 しています 3 人 分 の 国 語 の 成 績 を 管 理 す るの 配 列 を 一 つ 利 用 し 3 人 分 の 算 数 の 成 績 を 管 理 するのに 配 列 を 1 つ 利 用 しています ここでこの 二 つの 配 列 を 値 として 考 え 配 列 を 値 として 格 納 するような 別 の 配 列 を 用 意 します 配 列 の 宣 言 は 次 のようになっていました 型 名 配 列 変 数 名 []; 作 成 しようとする 配 列 に 格 納 されるデータ 型 は int 型 の 値 を 持 つ 配 列 です つまり データ 型 は int[]となります よって 配 列 を 値 として 持 つ 配 列 は 次 のように 記 述 すること ができます int[] seiseki[]; この 配 列 は 名 前 が seiseki で 型 名 が int[]です ただこの 記 述 方 法 でもエラーとは なりませんが 通 常 は 次 のいずれかの 記 述 方 法 を 使 います int seiseki[][]; int[][] seiseki; この 配 列 変 数 は 値 として 配 列 を 格 納 する 配 列 です この 配 列 変 数 を 使 うことで 3 人 分 の 成 績 を 格 納 した 配 列 を 値 として 持 つことができます このような 配 列 は 多 次 元 配 列 と 呼 ばれるます 2.10.6 多 次 元 配 列 の 要 素 の 確 保 多 次 元 配 列 であっても 配 列 と 違 いはないので 利 用 する 前 に 要 素 の 確 保 が 必 要 であ り 次 のように 記 述 します 型 名 配 列 変 数 名 [][]; 配 列 変 数 名 = new 型 名 [ 要 素 数 ][]; 例 えば 2 つの 要 素 を 持 つ 場 合 には 次 のようになります int seiseki[][]; seiseki = new int[2][]; これで 多 次 元 配 列 の 要 素 が 確 保 されました 次 に 要 素 に 値 を 格 納 していきますが 値 として 格 納 するのは 別 の 配 列 です 例 えば 次 のように 記 述 します int seiseki[][]; seiseki = new int[2][]; int kokugo[]; kokugo = new int[3]; kokugo[0] = 80; kokugo[1] = 92; kokugo[2] = 45; 40

int sansu[]; sansu = new int[3]; sansu[0] = 75; sansu[1] = 89; sansu[2] = 54; seiseki[0] = kokugo; seiseki[1] = sansu; 丁 寧 に 記 述 するとこのようになりますが 多 次 元 代 入 に 値 として 代 入 する 配 列 を 別 に 作 らなくても 次 のように 記 述 することができます int seiseki[][]; seiseki = new int[2][]; seiseki[0] = new int[3]; seiseki[1] = new int[3]; seiseki[0][0] = 80; seiseki[0][1] = 92; seiseki[0][2] = 45; seiseki[1][0] = 75; seiseki[1][1] = 89; seiseki[1][2] = 54; 慣 れないと 分 かりにくいと 思 いますが seiseki[0]を kokugo に seiseki[1]を sansu に 置 き 換 えてみて 頂 ければ 分 かると 思 います さらにまとめて 次 のように 記 述 することができます int seiseki[][]; seiseki = new int[2][3]; seiseki[0][0] = 80; seiseki[0][1] = 92; seiseki[0][2] = 45; seiseki[1][0] = 75; 41

seiseki[1][1] = 89; seiseki[1][2] = 54; この 場 合 int 型 の 値 を 持 つことができる 要 素 を 3 つ 分 確 保 した 配 列 を 値 として 持 つことができる 要 素 を 2 つ 確 保 した 配 列 を 作 成 します 結 局 のところ 多 次 元 配 列 におけ る 要 素 の 確 保 は 次 のように 記 述 できます 型 名 配 列 変 数 名 [][]; 配 列 変 数 名 = new 型 名 [ 要 素 数 ][ 値 の 配 列 の 要 素 数 ]; また 通 常 の 配 列 と 同 じように 配 列 の 宣 言 と 要 素 の 確 保 はまとめて 次 のように 記 述 することもできます 型 名 配 列 変 数 名 [][] = new 型 名 [ 要 素 数 ][ 値 の 配 列 の 要 素 数 ]; よって 先 ほどまでのサンプルは 次 のように 記 述 できます int seiseki[][] = new int[2][3]; seiseki[0][0] = 80; seiseki[0][1] = 92; seiseki[0][2] = 45; seiseki[1][0] = 75; seiseki[1][1] = 89; seiseki[1][2] = 54; 多 次 元 配 列 は 配 列 を 値 として 持 つような 配 列 であり 複 数 の 変 数 を 使 用 することで 繰 り 返 し 処 理 と 組 み 合 わせて 多 くの 値 をまとめて 処 理 することができるようになりま す なお 今 回 の 多 次 元 配 列 は 2 次 元 の 配 列 でしたが 2 次 元 の 配 列 を 値 として 持 つよう な 3 次 元 の 配 列 など 何 次 元 の 配 列 でも 作 成 は 可 能 です 2.10.7 多 次 元 配 列 の 初 期 化 配 列 の 各 要 素 に 初 期 値 を 設 定 する 方 法 は 次 のような 書 式 を 使 いました 型 名 配 列 変 数 名 [] = { 値 1, 値 2,..; 多 次 元 配 列 の 場 合 は 要 素 に 代 入 される 値 が 別 の 配 列 となりますので 次 のような 書 式 となります 型 名 配 列 変 数 名 1[] = { 値 1, 値 2,..; 型 名 配 列 変 数 名 2[] = { 値 1, 値 2,..; 型 名 配 列 変 数 名 [][] = { 配 列 変 数 名 1, 配 列 変 数 名 2; 別 途 作 成 された 配 列 を 値 のように 記 述 しています またさらに 次 のように 記 述 する 42

こともできます 型 名 配 列 変 数 名 [][] = {{ 値 1_1, 値 1_2,.., { 値 2_1, 値 2_2,..; 具 体 的 には 次 のように 記 述 します int num[][] = {{10, 8, 5, {9, 16, 4, {3, 7, 5; 通 常 の 配 列 では 値 をカンマ(,)で 区 切 って 記 述 していましたが 多 次 元 配 列 の 場 合 は 値 の 場 所 に 別 の 配 列 を 記 述 しています これは 次 のように 記 述 した 場 合 と 同 じです int num[][] = new int[2][3]; num[0][0] = 10; num[0][1] = 8; num[0][2] = 5; num[1][0] = 9; num[1][1] = 16; num[1][2] = 4; num[2][0] = 3; num[2][1] = 7; num[2][2] = 5; Java ではプログラムの 途 中 で 空 白 や 改 行 を 入 れることができますので 初 期 値 が 長 くなった 場 合 には 例 えば 次 のように 記 述 すると 分 かりやすいかもしれません int num[][] = { {10, 8, 5, {9, 16, 4, {3, 7, 5 ; 注 意 点 としては 通 常 の 配 列 と 同 じく 必 要 な 要 素 の 分 だけ 全 て 値 を 指 定 する 必 要 が あります 2.10.8 多 次 元 配 列 の 長 さ 多 次 元 配 列 の 場 合 も 配 列 変 数 名.length で 配 列 の 長 さを 取 得 することができます 配 列 変 数 名.length では 多 次 元 配 列 の 場 合 に 取 得 できる 値 を 確 認 してみます 次 の 例 を 見 てください int num[][] = {{1, 3, 5, {2, 4, 6; System.out.println(num.length); 43

多 次 元 配 列 における 要 素 の 数 なので この 場 合 は 2 と 出 力 されます もしも 要 素 として 代 入 されている 個 々の 配 列 の 要 素 数 を 取 得 したい 場 合 には 次 のように 要 素 に 対 して.length を 付 けて 取 得 して 下 さい 配 列 変 数 名 [インデックス].length 具 体 的 には 次 のように 記 述 します int num[][] = {{1, 3, 5, {2, 4, 6; System.out.println(num[0].length); System.out.println(num[1].length); この 場 合 は 多 次 元 配 列 の 要 素 に 代 入 されている 配 列 の 要 素 数 をそれぞれ 出 力 して いるため どちらも 3 と 出 力 されます 多 次 元 配 列 では 次 のページで 解 説 するように 要 素 に 代 入 する 配 列 の 長 さは 同 じで ある 必 要 がないため 各 要 素 に 代 入 されてる 配 列 の 長 さを 個 々に 取 得 する 必 要 がある 場 合 はこのように 多 次 元 配 列 名 [インデックス].length で 取 得 して 下 さい 参 考 資 料 (1) 丸 の 内 とら,いちばんやさしい Java 入 門, 技 術 評 論 社,2006 年 (2) 赤 間 世 紀,Java プログラミングの 基 礎 知 識, 技 報 堂,2002 年 インターネット (3) TATSUO IKURA,Java 入 門,JavaDrive(http://www.javadrive.jp/start/) (4) Eclipse で Java プログラミング 超 入 門, http://www.atmarkit.co.jp/ait/articles/0405/29/news021.html 44