1.JAVAプログラミング Javaは 以 下 の 工 程 を 経 て 実 行 されます JavaソースプラグラムはJavaコンパイラによりコンパイルされ Javaバイトコードに 変 換 さ れます JavaバイトコードはJVM(Java 仮 想 マシン) 上 で 実 行 されます Javaバイトコ



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

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

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

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

Microsݯft Word - 91 forܠ2009November.docx

PowerPoint プレゼンテーション

(1)1オールゼロ 記 録 ケース 厚 生 年 金 期 間 A B 及 びCに 係 る 旧 厚 生 年 金 保 険 法 の 老 齢 年 金 ( 以 下 旧 厚 老 という )の 受 給 者 に 時 効 特 例 法 施 行 後 厚 生 年 金 期 間 Dが 判 明 した Bは 事 業 所 記 号 が

富士山チェックリスト

計算式の取り扱い

の と す る (1) 防 犯 カ メ ラ を 購 入 し 設 置 ( 新 設 又 は 増 設 に 限 る ) す る こ と (2) 設 置 す る 防 犯 カ メ ラ は 新 設 又 は 既 設 の 録 画 機 と 接 続 す る こ と た だ し 録 画 機 能 付 防 犯 カ メ ラ は

Microsoft Word - 第3章.doc

新・明解Java入門

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

R4財務対応障害一覧

1 書 誌 作 成 機 能 (NACSIS-CAT)の 軽 量 化 合 理 化 電 子 情 報 資 源 への 適 切 な 対 応 のための 資 源 ( 人 的 資 源,システム 資 源, 経 費 を 含 む) の 確 保 のために, 書 誌 作 成 と 書 誌 管 理 作 業 の 軽 量 化 を 図

1 林 地 台 帳 整 備 マニュアル( 案 )について 林 地 台 帳 整 備 マニュアル( 案 )の 構 成 構 成 記 載 内 容 第 1 章 はじめに 本 マニュアルの 目 的 記 載 内 容 について 説 明 しています 第 2 章 第 3 章 第 4 章 第 5 章 第 6 章 林 地

は 固 定 流 動 及 び 繰 延 に 区 分 することとし 減 価 償 却 を 行 うべき 固 定 の 取 得 又 は 改 良 に 充 てるための 補 助 金 等 の 交 付 を 受 けた 場 合 にお いては その 交 付 を 受 けた 金 額 に 相 当 する 額 を 長 期 前 受 金 とし

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

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


企業結合ステップ2に関連するJICPA実務指針等の改正について③・資本連結実務指針(その2)

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

若 しくは 利 益 の 配 当 又 はいわゆる 中 間 配 当 ( 資 本 剰 余 金 の 額 の 減 少 に 伴 うものを 除 きます 以 下 同 じです )を した 場 合 には その 積 立 金 の 取 崩 額 を 減 2 に 記 載 す るとともに 繰 越 損 益 金 26 の 増 3 の

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

弁護士報酬規定(抜粋)

「1 所得税及び復興特別所得税の確定申告書データをお持ちの方」からの更正の請求書・修正申告書作成編

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

Microsoft Word - 【溶け込み】【修正】第2章~第4章

4. その 他 (1) 期 中 における 重 要 な 子 会 社 の 異 動 ( 連 結 範 囲 の 変 更 を 伴 う 特 定 子 会 社 の 異 動 ) 無 (2) 簡 便 な 会 計 処 理 及 び 四 半 期 連 結 財 務 諸 表 の 作 成 に 特 有 の 会 計 処 理 の 適 用 有

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

国 税 クレジットカード 納 付 の 創 設 国 税 のクレジットカード 納 付 については マイナンバー 制 度 の 活 用 による 年 金 保 険 料 税 に 係 る 利 便 性 向 上 に 関 するアクションプログラム( 報 告 書 ) においてその 導 入 の 方 向 性 が 示 されている

<4D F736F F F696E74202D2082C882E982D982C DD8ED88EE688F882CC82B582AD82DD C668DDA9770>

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

第4回税制調査会 総4-1

Microsoft Word - 不正アクセス行為の禁止等に関する法律等に基づく公安

WEB版「新・相続対策マスター」(ご利用の手引き)


の 基 礎 の 欄 にも 記 載 します ア 法 人 税 の 中 間 申 告 書 に 係 る 申 告 の 場 合 は 中 間 イ 法 人 税 の 確 定 申 告 書 ( 退 職 年 金 等 積 立 金 に 係 るものを 除 きます ) 又 は 連 結 確 定 申 告 書 に 係 る 申 告 の 場

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

積 み 立 てた 剰 余 金 の 配 当 に 係 る 利 益 準 備 金 の 額 は 利 益 準 備 金 1 の 増 3 に 記 載 します ⑸ 平 成 22 年 10 月 1 日 以 後 に 適 格 合 併 に 該 当 しない 合 併 により 完 全 支 配 関 係 がある 被 合 併 法 人 か

POWER EGG V2.01 ユーザーズマニュアル ファイル管理編

スライド 1

目 次 1 報 酬 給 与 額 事 例 1 報 酬 給 与 額 に 含 める 賞 与 の 金 額 が 誤 っていた 事 例 1 事 例 2 役 員 退 職 金 ( 役 員 退 職 慰 労 金 )を 報 酬 給 与 額 として 申 告 して いなかった 事 例 1 事 例 3 持 株 奨 励 金 を

検 討 検 討 の 進 め 方 検 討 状 況 簡 易 収 支 の 世 帯 からサンプリング 世 帯 名 作 成 事 務 の 廃 止 4 5 必 要 な 世 帯 数 の 確 保 が 可 能 か 簡 易 収 支 を 実 施 している 民 間 事 業 者 との 連 絡 等 に 伴 う 事 務 の 複 雑

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

10 期 末 現 在 の 資 本 金 等 の 額 次 に 掲 げる 法 人 の 区 分 ごとに それぞれに 定 める 金 額 を 記 載 します 連 結 申 告 法 人 以 外 の 法 人 ( に 掲 げる 法 人 を 除 きます ) 法 第 292 条 第 1 項 第 4 号 の5イに 定 める

<4D F736F F D2091E F18CB48D C481698E7B90DD8F9590AC89DB816A2E646F63>

所 得 税 と 住 民 税 の 税 率 表 所 得 税 と 住 民 税 の 税 率 は 以 下 の 通 りです 退 職 所 得 の 場 合 も この 税 率 表 を 使 います 1. 平 成 19 年 1 月 1 日 以 降 ( 所 法 891) 課 税 所 得 所 得 税 率 控 除 額 ~195

Microsoft Word - 養生学研究投稿規定(改)

1

< E95FB8CF689638AE98BC689FC90B390A CC8CA992BC82B582C982C282A282C E90E096BE8E9E8E9197BF2E786477>

<4D F736F F D20819C486F70658F6F93588ED297708AC7979D89E696CA837D836A B E A2E646F63>

Speed突破!Premium問題集 基本書サンプル

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

< 目 次 > 8. 雇 用 保 険 高 年 齢 雇 用 継 続 給 付 27 ( 育 児 休 業 給 付 介 護 休 業 給 付 ) 8.1 高 年 齢 雇 用 継 続 給 付 画 面 のマイナンバー 設 定 高 年 齢 雇 用 継 続 給 付 の 電 子 申 請 高

<4D F736F F D208E52979C8CA78E598BC68F5790CF91A390698F9590AC8BE08CF D6A2E646F6378>

年齢別人数計算ツールマニュアル

Microsoft Word - 奨学金相談Q&A.rtf

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

(Microsoft Word - \203A \225\345\217W\227v\227\314 .doc)

1

<4D F736F F D C97F195CF8AB DEC90E096BE8F912091E6312E313294C52E646F63>

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

通 知 カード と 個 人 番 号 カード の 違 い 2 通 知 カード ( 紙 )/H27.10 個 人 番 号 カード (ICカード)/H28.1 様 式 (おもて) (うら) 作 成 交 付 主 な 記 載 事 項 全 国 ( 外 国 人 含 む)に 郵 送 で 配 布 希 望 者 に 交

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

Microsoft Word - 佐野市生活排水処理構想(案).doc

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

全設健発第     号

4 参 加 資 格 要 件 本 提 案 への 参 加 予 定 者 は 以 下 の 条 件 を 全 て 満 たすこと 1 地 方 自 治 法 施 行 令 ( 昭 和 22 年 政 令 第 16 号 ) 第 167 条 の4 第 1 項 各 号 の 規 定 に 該 当 しない 者 であること 2 会 社

質 問 票 ( 様 式 3) 質 問 番 号 62-1 質 問 内 容 鑑 定 評 価 依 頼 先 は 千 葉 県 などは 入 札 制 度 にしているが 神 奈 川 県 は 入 札 なのか?または 随 契 なのか?その 理 由 は? 地 価 調 査 業 務 は 単 にそれぞれの 地 点 の 鑑 定

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

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

2 出 願 資 格 審 査 前 記 1の 出 願 資 格 (5) 又 は(6) により 出 願 を 希 望 する 者 には, 出 願 に 先 立 ち 出 願 資 格 審 査 を 行 いますので, 次 の 書 類 を 以 下 の 期 間 に 岡 山 大 学 大 学 院 自 然 科 学 研 究 科 等

6. 共 有 等 に 係 る 固 定 資 産 の 判 定 3 共 有 に 係 る 固 定 資 産 については それぞれの 共 有 者 が 他 に 固 定 資 産 を 所 有 している 場 合 であっても その 資 産 とは 別 個 に 共 有 されている 固 定 資 産 を 別 の 人 格 が 所

PowerPoint Presentation

<4D F736F F D AC90D1955D92E CC82CC895E DD8C D2816A2E646F63>

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

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

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

「給与・年金の方」からの確定申告書作成編

目 次 1. 積 算 内 訳 書 に 関 する 留 意 事 項 1 ページ 2. 積 算 内 訳 書 のダウンロード 3 ページ 3. 積 算 内 訳 書 の 作 成 (Excel 2003の 場 合 ) 6 ページ 4. 積 算 内 訳 書 の 作 成 (Excel 2007の 場 合 ) 13

(3) その 他 市 長 が 必 要 と 認 める 書 類 ( 補 助 金 の 交 付 決 定 ) 第 6 条 市 長 は 前 条 の 申 請 書 を 受 理 したときは 速 やかにその 内 容 を 審 査 し 補 助 金 を 交 付 すべきものと 認 めたときは 規 則 第 7 条 に 規 定 す

法 人 等 に 対 する 課 税 際 課 税 原 則 の 帰 属 主 義 への 見 直 しのポイント 総 合 主 義 から 帰 属 主 義 への 移 行 法 人 及 び 非 居 住 者 ( 法 人 等 )に 対 する 課 税 原 則 について 従 来 のいわゆる 総 合 主 義 を 改 め OECD

1. 業 務 概 要 貨 物 情 報 登 録 済 の 貨 物 に 対 して システムを 介 さずに 行 われた 税 関 手 続 きについて 税 関 が 許 可 承 認 等 を 行 った 旨 を 登 録 する また システムで 行 われた 以 下 の 税 関 手 続 き( 以 下 輸 出 申 告 等

<4D F736F F D EF8ED EF8C768AEE8F8082C C90C E A837E B312E646F63>


XML形式の電子報告書作成に当たっての留意事項

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

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

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

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

<4D F736F F D F4390B3208A948C E7189BB8CE F F8C668DDA97702E646F63>


スライド 1

01.活性化計画(上大久保)

2. 研 究 者 / 評 価 者 情 報 修 正 この 画 面 では 研 究 者 が 自 分 自 身 の 情 報 の 修 正 を 行 います (A) 研 究 者 / 評 価 者 情 報 の 修 正 () 研 究 者 / 評 価 者 情 報 修 正 画 面 を 開 く HOME 画 面 メニューの 研

損 益 計 算 書 ( 平 成 25 年 10 月 1 日 から 平 成 26 年 9 月 30 日 まで) ( 単 位 : 千 円 ) 科 目 金 額 営 業 収 益 304,971 営 業 費 用 566,243 営 業 総 損 失 261,271 営 業 外 収 益 受 取 利 息 3,545

第1章 簿記の一巡

4. その 他 (1) 期 中 における 重 要 な 子 会 社 の 異 動 ( 連 結 範 囲 の 変 更 を 伴 う 特 定 子 会 社 の 異 動 ) 無 (2) 簡 便 な 会 計 処 理 及 び 四 半 期 連 結 財 務 諸 表 の 作 成 に 特 有 の 会 計 処 理 の 適 用 有

Transcription:

Java5.0 2007 年 4 月 23 日 作 成 青 山 システムズ 青 山

1.JAVAプログラミング Javaは 以 下 の 工 程 を 経 て 実 行 されます JavaソースプラグラムはJavaコンパイラによりコンパイルされ Javaバイトコードに 変 換 さ れます JavaバイトコードはJVM(Java 仮 想 マシン) 上 で 実 行 されます JavaバイトコードはJVM 上 で 実 行 されます OS 上 で 実 行 されるわけではありません これはJavaプログラムはJVMがインストールされていれば OSに 依 存 せず 実 行 す ることができると 言 えます Javaの 特 徴 として 言 われている Write Once, Run Anywhere ( 一 度 プログラムを 作 ると どこでも 実 行 させることができる 環 境 に 合 わせてプログラムを 変 更 する 必 要 がない)ということです 青 山 システムズ 2

2.JAVAの 基 礎 2.1JAVAプログラミング Javaプログラミングには パッケージ 宣 言 インポート 宣 言 クラス インタフェースの 定 義 を 順 番 に 書 く 必 要 がある それぞれ パッケージ 宣 言 以 外 は1つのファイルにいくつ 書 いてもよい 青 山 システムズ 3

2.JAVAの 基 礎 2.2キーワードと 識 別 子 キーワード abstract, boolean, break, byte, case, catch, char, class, const, continue, default, do, double, else, 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, synchronized, this, throw, throws, transient, try, void, volatile, while 識 別 子 プログラムで 使 われるクラス フィールド メソッドなどの 名 前 は 識 別 子 と 呼 ばれる キーワードは 変 数 名 やメソッド 名 などの 識 別 子 として 用 いること はできません 青 山 システムズ 4

2.JAVAの 基 礎 2.3 基 本 データ(プリミティブ 型 ) 変 数 の 型 変 数 には 基 本 データ 型 と 参 照 型 の2 種 類 ある 基 本 データ 型 文 字 整 数 種 別 論 理 値 浮 動 小 数 char byte short int long float double 型 boolean 真 偽 値 true または false 2バイトUNICODE 文 字 ' u0000'~' uffff' 1バイト 符 号 付 整 数 -128~127 2バイト 符 号 付 整 数 -32768~32767 4バイト 符 号 付 整 数 -2147483648~ 2147483647 8バイト 符 号 付 整 数 約 -922 京 ~ 約 922 京 4バイト 浮 動 小 数 点 数 8バイト 浮 動 小 数 点 数 説 明 青 山 システムズ 5

2.JAVAの 基 礎 2.4 修 飾 子 修 飾 子 クラス インタ フェース メソッド コンスト ラクタ ブロック 変 数 説 明 public アクセス 修 飾 子 protected アクセス 修 飾 子 private アクセス 修 飾 子 static スタティック 修 飾 子 final ファイナル 修 飾 子 abstract 抽 象 修 飾 子 native ネイティブ 修 飾 子 synchronized 同 期 修 飾 子 transient 一 時 的 修 飾 子 volatile 揮 発 性 修 飾 子 strictfp 厳 密 浮 動 小 数 修 飾 子 const 定 数 青 山 システムズ 6

2.JAVAの 基 礎 2.4 修 飾 子 許 される 修 飾 子 は 複 数 書 いてもよいが 相 互 に 矛 盾 するものは 書 いてはいけない 青 山 システムズ 7

2.JAVAの 基 礎 2.5アクセス 制 御 public protected private は アクセス 修 飾 子 と 呼 ばれ 指 定 した 変 数 やクラスなどを どの 範 囲 から 参 照 可 能 かのスコープを 制 御 するのに 用 いられます クラス インタフェース メソッド コ ンストラクタ 変 数 の 修 飾 子 として 利 用 できます public は すべてのクラスからの 参 照 を 許 す protected は 他 ファイル 他 クラスからのアクセス をプロテクトする private は 自 クラスからのアクセスしか 許 さない という 意 味 になります アクセス 修 飾 子 自 クラス 自 ファイル サブクラス 他 クラス サブクラス 他 ファイル 他 クラス public protected なし private 青 山 システムズ 8

2.JAVAの 基 礎 2.6JavaBeansの 命 名 規 則 JavaBeans 再 利 用 が 容 易 なソフトウェアの 基 本 単 位 をコ ンポーネントと 言 う JavaBeansは コンポーネントの 構 成 方 法 を 示 す メソッドに 関 する 規 則 setterメソッド getterメソッド 青 山 システムズ 9

2.JAVAの 基 礎 2.7 静 的 インポート staticなフィールド メソッドの 修 飾 部 分 を 省 略 できる import static java.lang.math.pi; import static java.lang.system.out; と 宣 言 することによって プログラム 中 では PI outと 書 くことができる 青 山 システムズ 10

2.JAVAの 基 礎 2.8アプリケーションとアプレット Javaプログラムには アプリケーションとアプレッ トの2 種 類 があります アプリケーションはJVM 上 で 直 接 実 行 される プログラムコード 中 のmainメソッドが 最 初 に 実 行 される アプレットはブラウザ 上 のJVMによって 実 行 され る 青 山 システムズ 11

3.データと 演 算 子 3.1リテラル Java では 数 値 や 文 字 列 などの 値 を リテラル と 呼 びます リテラルには 次 のようなものがあります リテラル 数 字 整 数 10 進 数 (123 など) 16 進 数 (0x89ab など) 8 進 数 (0177 など) 浮 動 小 数 点 (1.23 1.23e45 など) 文 字 文 字 列 文 字 ('a' 'あ' など) 文 字 列 ("Hello" など) 論 理 値 (true または false) 空 (null) 青 山 システムズ 12

3.データと 演 算 子 3.2 演 算 子 Java で 利 用 可 能 な 演 算 子 を 以 下 に 示 します 大 半 は C C++ JavaScript と 同 様 の 演 算 子 です カテゴリ 演 算 子 説 明 使 用 例 + 加 算 a = b + c; - 減 算 a = b - c; 四 則 演 算 * 乗 算 a = b * c; / 除 算 a = b / c; % 剰 余 a = b % c; 単 項 演 算 子 ++ -- インクリメント デクリメント a++; --a; a--; --a; 代 入 演 算 子 = 代 入 演 算 子 a = b; 青 山 システムズ 13

3.データと 演 算 子 3.2 演 算 子 カテゴリ 演 算 子 説 明 使 用 例 == 等 しい if (a == b)!= 異 なる if (a!= b) 比 較 演 算 子 < > より 小 さい おり 大 きい if (a < b) if (a > b) <= 等 しいかより 小 さい if (a <= b) >= 等 しいかおり 大 きい if (a >= b) && かつ if ((a == b) && (c == d)) 論 理 演 算 子 または if ((a == b) (c == d))! ではない if (!(a == b)) 青 山 システムズ 14

3.データと 演 算 子 3.2 演 算 子 カテゴリ 演 算 子 説 明 使 用 例 & 論 理 積 (AND) a = b & c; 論 理 和 (OR) a = b c;! 論 理 否 定 (NOT) a =! b; ビット 演 算 子 ^ ~ 排 他 的 論 理 和 (EOR) ビット 反 転 a = b ^ c; a = ~ b; << 算 術 左 シフト a = b << 2; >> 算 術 右 シフト a = b >> 2; >>> 論 理 右 シフト a = b >>> 2; 青 山 システムズ 15

3.データと 演 算 子 3.2 演 算 子 カテゴリ 算 術 代 入 演 算 子 三 項 演 算 子 演 算 子 += -= *= /= %= &= = ^= <<= >>= >>>=? : 説 明 使 用 例 加 算 代 入 a += b; 減 算 代 入 a -= b; 乗 算 代 入 a *= b; 除 算 代 入 a /= b; 余 り 代 入 a %= b; 乗 算 代 入 a &= b; 除 算 代 入 a = b; 剰 余 代 入 a ^= b; 算 術 左 シフト 代 入 a <<= b; 算 術 右 シフト 代 入 a >>= b; 論 理 右 シフト 代 入 a >>>= b; 三 項 演 算 子 a = (b == c)? d : e; 青 山 システムズ 16

3.データと 演 算 子 3.3 単 項 演 算 子 インクリメント(++) デクリメント(--) 演 算 子 a++ と ++a はどちらも a の 値 をひとつ 増 やしたものを a に 代 入 しますが 式 の 値 が 異 なります a++ はインクリメントする 前 の ++a はインクリメントした 後 の 値 を 返 します a = 5; b = a++; // b には 5 が 代 入 される a = 5; b = ++a; // b には 6 が 代 入 される 型 やクラスを 一 時 的 に 変 換 して 参 照 することを キャスト と 呼 びます 例 えば 下 記 の 例 で int 値 を long 値 に 代 入 することは 可 能 ですが int 値 を short 値 に 代 入 しようとするとコンパイルエラーになります これは int short の 代 入 では 値 のオーバーフローが 発 生 してしまう 可 能 性 があるためです int intvalue = 123; long longvalue = intvalue; short shortvalue = intvalue; コンパイルエラー この 問 題 を 解 決 するには int 値 を 明 示 的 に short 値 に 変 換 してから 代 入 します これを short にキャストする と 言 います short shortvalue = (short)intvalue; 青 山 システムズ 17

3.データと 演 算 子 3.4 算 術 演 算 子 3.2を 参 照 青 山 システムズ 18

3.データと 演 算 子 3.5 比 較 演 算 子 演 算 子 > >= < <= ==!= instanceof 記 入 例 x > y x >= y x < y x <= y x == y x!= y x instanceof y 説 明 xがyよりも 大 きい 場 合 にtrueを 返 す xがyよりも 大 きいか 等 しい 場 合 にtrueを 返 す xがyよりも 小 さい 場 合 にtrueを 返 す xがyよりも 小 さいか 等 しい 場 合 にtrueを 返 す xとyが 等 しい 場 合 にtrueを 返 す xとyが 等 しくない 場 合 にtrueを 返 す xが yと 同 じクラス か yのサブクラス である 場 合 にtrueを 返 す 青 山 システムズ 19

3.データと 演 算 子 3.5 比 較 演 算 子 参 照 元 が 同 じケース 値 は 同 じだが 参 照 元 が 異 なるケース 青 山 システムズ 20

3.データと 演 算 子 3.6 論 理 演 算 子 条 件 演 算 子 演 算 子 && & ^! 記 入 例 x && y x y x & y x y x ^ y!x xとyの 両 方 がtrueの 場 合 にtrueを 返 す xとyのいずれかがtrueの 場 合 にtrueを 返 す xとyの 両 方 がブール 型 且 つ 両 方 ともtrueの 場 合 にtrueを 返 す 両 方 の 変 数 が 整 数 型 の 場 合 はビットごとのAND 演 算 を 行 う xとyの 両 方 がブール 型 且 ついずれかがtrueの 場 合 にtrueを 返 す 両 方 の 変 数 が 整 数 型 の 場 合 はビットごとのOR 演 算 を 行 う xとyの 両 方 がブール 型 且 つxとyが 異 なった 値 の 場 合 にtrueを 返 す 両 方 の 変 数 が 整 数 型 の 場 合 はビットごとのXOR 演 算 を 行 う xがfalse 場 合 にtrueを 返 す 説 明 青 山 システムズ 21

3.データと 演 算 子 3.6 論 理 演 算 子 条 件 演 算 子 && と& において 演 算 子 が 意 味 するところは 同 じです が その 振 る 舞 いには 明 確 な 違 いがある &&と&は 左 オペランドと 右 オペランドのいずれもがtrue の 場 合 trueを 返 す と は 左 オペランドと 右 オペランドのいずれかがtrueの 場 合 trueを 返 す && 演 算 子 は 特 性 からショートサーキット( 短 絡 する) 演 算 子 とも 言 われる 青 山 システムズ 22

3.データと 演 算 子 3.7Stringの 等 価 不 等 価 String オブジェクト 名 = 文 字 列 ; String オブジェクト 名 = new String( 文 字 列 ); new 演 算 子 を 使 用 しない 場 合 new 演 算 子 を 使 用 する 場 合 青 山 システムズ 23

3.データと 演 算 子 3.8 代 入 演 算 子 演 算 文 の 簡 略 記 入 例 同 様 な 書 き 方 += x += y x = x + y -= x -= y x = x - y 算 術 演 算 子 *= x *= y x = x * y /= x /= y x = x / y %= x %= y x = x % y &= x &= y x = x & y ビット 演 算 子 = x = y x = x y ^= x ^= y x = x ^ y <<= x <<= y x = x << y シフト 演 算 子 >>= x >>= y x = x >> y >>>= x >>>= y x = x >>> y 青 山 システムズ 24

4.クラスとインタフェース 4.1クラスの 定 義 クラス(class) クラス(class)はオブジェクト 指 向 プログラミングの 基 本 的 な 仕 組 みを 提 供 するもので オブジェクト(インスタンス とも 言 います)が 持 つ 属 性 (アトリビュート プロパティ とも 呼 ばれます)や メソッ ド( 関 数 ファンクション と 呼 ばれることもあります)などを 定 義 し ます class クラス 名 { 型 属 性 ; : 型 メソッド() {... } : } クラスのインスタンス 化 (new) あるクラスのインスタンスを 作 成 するには new を 用 います 例 えば TestClass という 名 前 のクラスのインスタンスを 作 るには 次 のようにします TestClass o = new TestClass(); 青 山 システムズ 25

4.クラスとインタフェース 4.1クラスの 定 義 クラス 修 飾 子 (public,...) クラスの 修 飾 子 には public final abstract strictfp を 指 定 することが できます 修 飾 子 class クラス 名 { : } インナークラス(クラス 内 部 に 定 義 するクラス)には 加 えて protected private static を 指 定 することが 可 能 になります class クラス 名 { 修 飾 子 class クラス 名 { : } } 青 山 システムズ 26

4.クラスとインタフェース 4.1クラスの 定 義 青 山 システムズ 27

4.クラスとインタフェース 4.1クラスの 定 義 メンバ 変 数 オブジェクトが 持 っている 状 態 を 表 します この 他 変 数 としてはメ ソッド 内 だけで 有 効 なローカル 変 数 もあります メソッド オブジェクトが 持 っている 振 る 舞 いを 表 します コンストラクタ クラスからオブジェクトが 生 成 さ れる 時 に 実 行 される 初 期 化 処 理 を 担 います 青 山 システムズ 28

4.クラスとインタフェース 4.1クラスの 定 義 アクセスレベル クラス メンバ 変 数 メソッド コンストラクタ public protected 指 定 無 し(デフォルト) private 青 山 システムズ 29

4.クラスとインタフェース 4.1クラスの 定 義 アクセスレベル 同 一 クラス 同 一 パッケージ サブクラス すべて public protected 指 定 無 し (デフォルト) private 青 山 システムズ 30

4.クラスとインタフェース 4.2 継 承 あるクラスのメンバ 変 数 やメソッドを 継 承 した サブクラス( 子 クラス)を 定 義 するには extends を 用 います class クラス 名 extends 親 クラス 名 { : } 下 記 の 例 では 上 記 で 作 成 した Person クラスを 継 承 する Member クラスを 定 義 しています Member クラス は Person クラスを 継 承 しているので myname myage などの 属 性 や GetName() SetName() などのメソッドを 引 き 継 ぎ 加 えて mynumber や SetNumber() などの 属 性 やメソッドを 備 えています class Member extends Person { int mynumber; public void SetNumber(int number) { mynumber = number; } public int GetNumber() { return mynumber; } } 青 山 システムズ 31

4.クラスとインタフェース 4.2 継 承 親 クラスの 参 照 (super) super は クラスの 継 承 における 親 クラス(スーパークラス)を 示 します java では 親 クラ スのコンストラクタは 暗 黙 的 には 呼 ばれないため 下 記 のように 明 示 的 に 呼 び 出 してやる 必 要 があります class Member extends Person { Member() { super( tanaka ); // 親 クラスのコンストラクタを 呼 び 出 す super.setage(26); // 親 クラスのメソッドを 呼 び 出 す return super.myname; // 親 クラスの 属 性 を 参 照 する } } クラスに 属 しているか 調 べる(instanceof) instanceof 演 算 子 は オブジェクト(インスタンス)が 指 定 したクラスまたはその 上 位 のクラ スに 属 しているかどうかを 調 べます MyButton b = new MyButton(); if (b instanceof Button) { System.out.println(" 属 してる"); } else { System.out.println(" 属 していない"); } 青 山 システムズ 32

4.クラスとインタフェース 4.3final final は 上 書 きされないことを 意 味 します クラスに 用 いた 場 合 はサ ブクラスを 定 義 できないことを メソッドに 用 いた 場 合 はサブクラスで メソッドをオーバーロードできないことを 変 数 に 用 いた 場 合 は 誰 もそ の 変 数 を 変 更 できないことを 意 味 します final class クラス 名 { : } class クラス 名 { final 型 メソッド 名 ( 引 数 ) { : } public static final double PI = 3.14159265358979323846; } 青 山 システムズ 33

4.クラスとインタフェース 4.4フィールド アクセス 修 飾 子 public protected private static static 宣 言 されたフィールドはクラス 変 数 と 呼 ばれ オブジェクトを 生 成 せずに 使 用 できる 初 期 化 一 般 にクラス 変 数 同 士 インスタンス 変 数 同 士 では のちに 宣 言 されるフィール ド をそれより 以 前 に 使 えない final 値 が 変 更 できないことを 示 す transient volatile インスタンス 変 数 につけられるがクラス 変 数 にはつけられない transient:オブジェクトのシリアライズを 避 ける volatile:コンパイラの 最 適 化 を 止 める メソッド 内 の 変 数 メソッド 内 にフィールドと 同 名 のローカル 変 数 を 定 義 すると そのメソッド 内 では フィールドが 隠 され ローカルな 変 数 が 使 われる 青 山 システムズ 34

4.クラスとインタフェース 4.5コンストラクタ コンストラクタとデストラクタ コンストラクタ は クラス 名 と 同 じ 名 前 を 持 つ 特 別 なメソッドです インスタンスが 生 成 された 時 に 自 動 的 に 呼 ばれ インスタンスの 初 期 化 処 理 を 行 います class Person { String myname; Person(String name) { myname = name; } } コンストラクタには 上 記 のように 引 数 を 持 つことができます 下 記 の 例 では Person クラスのインスタンス tanaka を 生 成 する 際 に コンストラクタの 処 理 を 利 用 して 名 前 (myname)の 設 定 を 行 っています Person tanaka = new Person("tanaka"); デストラクタ は クラスが 消 滅 する 際 に 自 動 的 に 呼 ばれる 特 別 なメソッドで クラ スの 後 始 末 処 理 を 記 述 します C++ 言 語 などではサポートされていますが Java ではすべての 破 棄 作 業 は 自 動 的 に 行 われるという 思 想 の 元 デストラクタは 不 要 と 考 えられています 青 山 システムズ 35

4.クラスとインタフェース 4.5コンストラクタ メンバ 変 数 の 隠 蔽 を 行 う 場 合 インスタンスメソッド 内 コンストラクタ 内 で 隠 蔽 されたメンバ 変 数 を 参 照 する 際 に 使 用 します this.メンバ 変 数 ; 複 数 のコンストラクタを 宣 言 し あるコンストラクタから 別 のコンストラクタを 参 照 する 場 合 に 使 用 します この 例 の 詳 細 についてはコンストラクタを 参 照 してください this( 引 数 値, ); 青 山 システムズ 36

4.クラスとインタフェース 4.5コンストラクタ 親 クラスの 参 照 (super)super は クラスの 継 承 における 親 クラス(スーパークラス)を 示 します java では 親 クラ スのコンストラクタは 暗 黙 的 には 呼 ばれないため 下 記 のように 明 示 的 に 呼 び 出 してやる 必 要 があります class Member extends Person { Member() { super("tanaka"); // 親 クラスのコンストラクタを 呼 び 出 す super.setage(26); // 親 クラスのメソッドを 呼 び 出 す return super.myname; // 親 クラスの 属 性 を 参 照 する } } 青 山 システムズ 37

4.クラスとインタフェース 4.6メソッド 戻 り 型 メソッド 名 ( 引 数 型 引 数 名 ) { メソッド 本 体 }; 1. 戻 り 型 メソッドの 呼 び 出 し 元 に 値 を 返 す 場 合 その 値 の 型 を 記 載 します 何 の 値 も 返 さない 場 合 はvoid 型 を 記 載 します void show( ) { //1 値 を 返 さないため 戻 り 型 はvoid //2calculate(10)でメソッドcalculateの 呼 び 出 し System.out.println(calculate(10)); } int calculate(int x) { //3 呼 び 出 し 元 に 返 す 値 の 型 intを 宣 言 int answer = x * 10; return answer; //4return 文 で 値 を 返 す } 関 連 ページ:break continue return 青 山 システムズ 38

4.クラスとインタフェース 4.6メソッド 2.( 引 数 型 引 数 名 ) メソッド 呼 び 出 し 元 から 渡 された 値 をメソッド 内 で 実 行 させるために 記 載 します 引 数 型 は 渡 される 値 の 型 引 数 名 は 渡 される 値 をメソッド 内 で 使 用 する 際 の 変 数 名 を 表 します 渡 される 値 がない 場 合 は 単 に( )を 記 載 します void show( ) { //1 渡 される 値 がないため( )を 記 載 //2calculate(10)でcalculateメソッドに 値 10を 渡 します System.out.println(calculate(10)); } int calculate(int x) { //3 値 10をint 型 変 数 xで 受 け メソッド 内 で 使 用 します int answer = x * 10; return answer; } 青 山 システムズ 39

4.クラスとインタフェース 4.6メソッド static abstract final native 戻 り 型 修 飾 子 アクセスレベル synchronized メソッド 名 ( 引 数 型 引 数 名 ) throws 例 外 名 説 明 アクセスレベルを 指 定 することにより メソッドを 他 のクラスから 参 照 できないなどを 指 定 できるようになります メソッドがインスタンスメソッドではなく クラスメソッドであることを 表 します 処 理 を 実 装 しないメソッド( 抽 象 メソッド)を 生 成 したい 時 に 使 用 します finalを 使 用 した 場 合 そのメソッドはサブクラスでオーバーライドすることができませ ん C 言 語 など 他 の 言 語 で 記 述 されたプログラムをJavaプログラム 内 で 使 用 したい 時 に 使 います 使 用 したいプログラムにnativeを 付 け 宣 言 します スレッドを 複 数 同 時 に 走 らせる 際 に 同 じデータに 対 し 複 数 のメソッドが 呼 び 出 される 場 合 があります そのような 場 合 安 全 にメソッドが 実 行 されるためにsynchronized を 使 用 します メソッドを 実 行 した 結 果 をメソッド 呼 び 出 し 元 に 返 すことができます ここでは 返 す 値 のデータ 型 を 指 定 します 返 す 値 がない 場 合 はvoid 型 を 使 用 します 戻 り 型 は 宣 言 時 の 必 須 項 目 です メソッド 名 を 宣 言 します メソッド 名 は 慣 例 的 に 小 文 字 から 始 め 単 語 の 切 れ 目 は 大 文 字 を 使 用 します またメソッド 名 として 動 詞 がよく 使 われます メソッド 名 は 宣 言 時 の 必 須 項 目 です メソッドに 値 を 渡 したい 時 に 渡 したい 値 の 引 数 型 引 数 名 を 宣 言 します 渡 したい 値 がない 場 合 は( )のみを 記 載 します ( 引 数 型 引 数 名 )は 宣 言 時 の 必 須 項 目 です メソッドで 何 らかの 例 外 をスローする 青 山 システムズ 際 に 使 用 します 40

4.クラスとインタフェース 4.7オーバロードとオーバライド オーバーライドを 定 義 する 際 には 以 下 の 規 定 がありま す 1.オーバーライドする 側 はオーバーライドされる 側 と 戻 り 型 インスタンスメソッド 名 引 数 型 引 数 の 数 が 同 じ でなければなりません どれか 一 つでも 異 なる 場 合 はオ ーバーライドとは 見 なされません 2.オーバーライドされる 側 のインスタンスメソッドに 指 定 されるアクセスレベルより 広 い 範 囲 を 持 つアクセスレベ ルをオーバーライドする 側 のインスタンスメソッドに 付 与 することはできません 例 えばオーバーライドされる 側 のインスタンスメソッドにprotectedが 指 定 されている 場 合 オーバーライドする 側 のインスタンスメソッドにpublic を 指 定 することはできません 3.オーバーライドされる 側 のインスタンスメソッドに 指 定 されるthrows 節 以 外 の 例 外 をオーバーライドする 側 の インスタンスメソッドに 指 定 することはできません 但 し オーバーライドされる 側 に 指 定 された 例 外 をより 限 定 する 例 外 をオーバーライドする 側 に 指 定 することはできます 4.オーバーライドされる 側 のインスタンスメソッドにfinal 修 飾 子 が 付 与 されている 場 合 そのインスタンスメソッ ドをオーバーライドすることはできません 5.オーバーライドされる 側 のインスタンスメソッドにabstract 修 飾 子 が 付 与 されている 場 合 そのメソッドはサブ クラスで 必 ずオーバーライドしなければなりません オーバーライドしない 場 合 はそのサブクラス 全 体 が abstractクラスになります 青 山 システムズ 41

4.クラスとインタフェース 4.7オーバロードとオーバライド オーバーロードを 定 義 する 際 には 以 下 の 規 定 があります 1. 異 なるメソッドと 認 識 される 部 分 は メソッドの 次 の 個 所 です 引 数 の 型 引 数 の 数 引 数 の 並 び 順 2. 次 の 個 所 が 異 なっていても 異 なるメソッドとは 認 識 されません コンパイルエラーとなります 戻 り 型 アクセスレベル 引 数 名 throws 節 青 山 システムズ 42

4.クラスとインタフェース 4.8 抽 象 クラス 青 山 システムズ 43

4.クラスとインタフェース 4.8 抽 象 クラス 抽 象 メソッドは 以 下 の 枠 内 のフォーマットで 宣 言 されます 抽 象 メソッ ドは 実 装 を 持 たないため {}は 必 要 ありません abstract 戻 り 型 メソッド 名 ( 引 数 型 引 数 名 ); 抽 象 クラスは 以 下 の 枠 内 のフォーマットで 宣 言 されます abstract class クラス 名 { クラス 本 体 } 抽 象 クラスには 以 下 のルールがあります 1. 抽 象 クラスのオブジェクトを 生 成 することはできません 2. 抽 象 クラスには 抽 象 メソッドがあってもいいし 抽 象 メソッドでないメソッド があってもいいです しかし 抽 象 メソッドがあるクラスは 必 ず 抽 象 クラス として 宣 言 しなければいけません 3. 抽 象 メソッドがない 抽 象 クラスを 宣 言 することもできます かならず 継 承 が 行 われ なんらかのメソッドの 変 更 があることを 表 します 4. 抽 象 クラスを 継 承 したサブクラスで 抽 象 メソッドを 実 装 (オーバーライド) しない 場 合 そのサブクラスは 抽 象 クラスとして 宣 言 されます 青 山 システムズ 44

4.クラスとインタフェース 4.8 抽 象 クラス メソッドのヘッダーのみ 宣 言 し 実 装 を 継 承 したサブクラスに 任 せる (インタフェースの 場 合 はインプリメントしたクラスに 任 せる)といった ことを 考 えると 抽 象 クラスとインタフェースは 似 た 役 割 をはたす しかし 両 者 には 大 きな 違 いがあります その 違 いを 以 下 のとおり 1. 抽 象 クラスには 抽 象 メソッドと 抽 象 メソッドでないメソッドの 両 方 を 宣 言 す ることができますが インタフェースは 抽 象 メソッドのみしか 宣 言 することができません 2. サブクラスで 継 承 できる 抽 象 クラスはJavaは 多 重 継 承 をサポートしてい ないため 1つのみです インプリメントするインタフェースは 複 数 インプリメントすることができます 3. 抽 象 クラスの 機 能 を 利 用 するためには 抽 象 クラスを 継 承 する 必 要 があり ます そのため その 機 能 は 継 承 関 係 内 に 限 られます インタフェースはインプリメントにより 利 用 することができます そのため その 機 能 が 継 承 関 係 内 に 限 られることはありません 青 山 システムズ 45

4.クラスとインタフェース 4.9インタフェース 青 山 システムズ 46

4.クラスとインタフェース 4.9インタフェース Greeting.javaファイル //1インタフェースGreetingの 作 成 interface Greeting { void greet( ); //2インタフェース 内 ではヘッダー 定 義 のみ } ShowingDate.javaファイル //3インタフェースShowingDateの 作 成 interface ShowingDate { void showdate( ); //4インタフェース 内 ではヘッダー 定 義 のみ } 青 山 システムズ 47

4.クラスとインタフェース 4.9インタフェース インタフェース(interface)インタフェース は ある 機 能 を 実 現 するクラスが 必 ず 実 装 するべきメソッ ドの 名 前 や 型 といった 作 法 のみを 定 義 するものです interface を 用 いて 定 義 します インタフェー スで 定 義 されるメソッド( 抽 象 メソッド)の 実 体 は implements を 用 いた 側 のクラスで 実 装 しなくては なりません interface インタフェース 名 { : } 下 記 は ActionListener インタフェースの 実 際 の 定 義 例 です EventListener インタフェースを 継 承 しています インタフェース 内 で 定 義 されるメソッドには 暗 黙 的 に abstract 宣 言 と public 宣 言 がつけられます public interface ActionListener extends EventListener { public void actionperformed(actionevent e); } インタフェースの 実 装 (implements)インタフェースを 実 装 するには implements を 用 いて 下 記 のように 定 義 します インタフェース 名 は カンマ(,)で 区 切 って 複 数 指 定 することができます implements を 用 いた 場 合 インタフェース 名 で 指 定 された 抽 象 メソッドを 実 装 することが 義 務 付 け られます class クラス 名 implements インタフェース 名 { : 青 山 システムズ 48 }

4.クラスとインタフェース 4.9インタフェース インタフェース 修 飾 子 (public,...)インタフェースの 修 飾 子 には public abstract strictfp を 指 定 することができます 修 飾 子 interface インタフェース 名 { : } インタフェースをクラス 内 に 定 義 する 場 合 には 加 えて protected private static を 指 定 する ことが 可 能 になります class クラス 名 { 修 飾 子 interface インタフェース 名 { : } } インタフェースの 継 承 (extends) 親 インタフェースの 定 義 を 継 承 するには extends を 用 います interface インタフェース 名 extends 親 インタフェース 名 { : } 青 山 システムズ 49

4.クラスとインタフェース 4.10 可 変 長 引 数 リスト 可 変 個 の 引 数 を 持 つメソッドを 実 現 したい 場 合 が 考 えられます C 言 語 のprintf 関 数 のような 機 能 です そういった 場 合 これまでのJavaでは 配 列 を 用 いて 実 現 してきまし た public void printcities(string[] cities){... } printcities(new String[]{" 京 都 ", " 大 阪 ", " 神 戸 "}); printcities(new String[]{" 東 京 ", " 千 葉 "}); 非 常 に 面 倒 です そこでJDK5.0からは 可 変 長 引 数 を 持 つメソッドを 定 義 する 機 能 が 追 加 されました 可 変 長 引 数 の 定 義 は 可 変 長 にしたい 引 数 の 型 の 後 ろに... を 追 加 し ます 例 えば 先 ほどの 例 は 以 下 のようになります public void printcities(string... cities){... } 呼 び 出 す 側 も 簡 単 になっており 配 列 を 用 いずにすませることができます printcities(" 京 都 ", " 大 阪 ", " 神 戸 "); printcities(" 東 京 ", " 千 葉 "); 青 山 システムズ 50

4.クラスとインタフェース 4.10 可 変 長 引 数 リスト 引 数 を 指 定 せずに 呼 び 出 すことも 可 能 です printcities(); さて 可 変 長 にされた 引 数 の 取 り 扱 いですが メソッド 内 では 配 列 として 扱 います 引 数 が 指 定 されなかった 場 合 には 要 素 0の 配 列 として 扱 います これはコンパイラによっ て 可 変 長 引 数 は 配 列 に 変 換 されるからです public void printcities(string... cities){ for(int i=0; i < cities.length; i++){ System.out.println(cities[i]); } } 可 変 長 引 数 は コンパイラによって 配 列 に 変 換 されると 知 っておけば 難 しいことはあり ません しかし 配 列 と 異 なって 以 下 のような 制 約 があります 注 意 してください メソッドが 複 数 の 引 数 をとる 場 合 最 後 の 引 数 にしかできません また1つのメソッドで1つしか 可 変 長 引 数 を 定 義 できません メソッドがオーバーローディングされていて 引 数 が 固 定 のメソッドと 可 変 個 のメソッド がマッチした 場 合 前 者 が 優 先 される 青 山 システムズ 51

4.クラスとインタフェース 4.11 列 挙 型 まずはじめに 簡 単 な enum 型 の 定 義 を 示 します public enum Color { RED, BLUE, YELLOW, BLACK, WHITE } enumは 内 部 的 にはクラスであり enum 型 を 定 義 する 場 所 はクラスを 定 義 する 場 所 と 同 じです enum 型 もクラス 同 様 パッケージに 属 します 基 本 的 には 1 ファイルにひとつの enum 型 を 定 義 し 型 名 と 同 じファイル 名 (Color 型 であれば Color.java)のファイルに 記 述 しますが 内 部 クラスのよう に 他 のクラスの 内 部 にも 定 義 することができます(クラス 内 部 で 定 義 した 場 合 暗 黙 的 に static な 型 となります) アクセス 権 やアクセス 方 法 もクラスの 場 合 と 同 じです 上 記 の Color クラスを javap コマンドで 逆 コンパイルすると 以 下 のように 表 示 されます Compiled from "Color.java"public class Color extends java.lang.enum{ public static final Color RED; public static final Color BLUE; public static final Color YELLOW; public static final Color BLACK; public static final Color WHITE; static {}; public static final Color[] values(); public static final Color valueof(java.lang.string); } 青 山 システムズ 52

4.クラスとインタフェース 4.11 列 挙 型 これから 以 下 のようなことがわかります enum 宣 言 された 型 は java.lang.enum を 継 承 している 各 メンバはそれ 自 身 宣 言 した 型 (もしくはそのサブクラス)のインスタンスであり public static final な 定 数 である values メソッドは 宣 言 された 定 数 全 てを 含 む 配 列 ( 順 序 は 記 述 順 )を 返 すメソッドで valueof メソッドは 文 字 列 から 定 数 インスタンスを 取 得 するメソッドです Color white = Color.valueOf( WHITE ); // white は Color.WHITE を 保 持 する Enum クラスでは 他 に 以 下 のようなメソッドが 定 義 されています メソッド public final String name() 説 明 宣 言 で 定 義 された 定 数 名 を 返 します オーバーライドすることはで きません public String tostring() public final int ordinal() 定 数 名 を 返 します デフォルトでは name() と 同 じ 値 を 返 しますが オーバーライドすることもできます 定 数 の 宣 言 された 順 番 を 返 します ただし 通 常 は 順 番 に 依 存 した プログラムを 記 述 するべきではありません 青 山 システムズ 53

4.クラスとインタフェース 4.12オブジェクト 指 向 クラスは 情 報 を 隠 蔽 し データをカプセル 化 する 継 承 関 係 は is a 合 成 は has a などと 呼 ばれる オブジェクト 指 向 とは クラス 継 承 ポリモーフィズムを 有 効 に 利 用 すること 結 合 度 が 弱 く 凝 集 度 が 高 いクラスがよいと 考 えられる 青 山 システムズ 54

5. 参 照 型 変 数 とオブジェクト 5.1 参 照 型 変 数 変 換 元 の 基 本 型 型 変 換 が 可 能 な 変 更 先 の 基 本 型 boolean char byte short int long float double なし int, long, float, double short, int, long, float, double int, long, float, double long, float, double float, double double なし 青 山 システムズ 55

5. 参 照 型 変 数 とオブジェクト 5.1 参 照 型 変 数 代 入 時 の 型 変 換 int x = 10; double y; y = x; int x = 10; short y; y = x; メソッド 呼 び 出 し 時 の 型 変 換 short x = 10; System.out.println(Integer.toString(x)); double y = 20.25; System.out.println(Integer.toString(y)); 青 山 システムズ 56

5. 参 照 型 変 数 とオブジェクト 5.1 参 照 型 変 数 Javaの 変 数 には 大 きく 分 けて2つの 型 があります 基 本 型 (プリミティブ 型 )と 参 照 型 (オブジェクト 型 )です 参 照 型 にはクラス 型 インタフェース 型 配 列 型 がありま す オブジェクトを 生 成 する 際 String s = new( Hello ); と 言 う 形 でオブジェクトsを 生 成 します このオブジェクト 変 数 sが クラス 型 の 変 数 と 言 えます 参 照 型 はオブジェクトを 参 照 するので 同 じオブジェクトを 指 す 変 数 が 複 数 あるときは 注 意 が 必 要 Stringは 不 変 の 文 字 列 を 表 すクラス 青 山 システムズ 57

5. 参 照 型 変 数 とオブジェクト 5.2 配 列 配 列 青 山 システムズ 58

5. 参 照 型 変 数 とオブジェクト 5.2 配 列 配 列 の 宣 言 配 列 型 [ ] 配 列 名 ; int[ ] intarray; String[ ] stringarray; 配 列 の 生 成 配 列 名 = new 配 列 型 [サイズ]; intarray = new int[10]; //int 型 の 配 列 intarrayを 宣 言 //String 型 の 配 列 stringarrayを 宣 言 //10 個 のint 型 データを 持 つ 配 列 intarrayを 生 成 double[ ] doublearray = new double[10]; // 配 列 の 宣 言 と 生 成 を 同 時 に 行 う こともできます int size = 10; char[ ] chararray = new char[size]; //int 型 の 値 であれば 変 数 を 配 列 のサイズ 指 定 に 使 うこともできます int intarray[ ] = new int[10];system.out.println(int[0]); //0が 表 示 されます 青 山 システムズ 59

5. 参 照 型 変 数 とオブジェクト 5.3 配 列 とオブジェクト 配 列 型 byte short int long float double char boolean 参 照 型 (オブジェクト 型 ) 初 期 値 0 0 0 0L 0.0f 0.0d ' u0000' FALSE NULL 青 山 システムズ 60

5. 参 照 型 変 数 とオブジェクト 5.3 配 列 とオブジェクト 構 文 配 列 型 [ ] 配 列 名 = {データ,データ, }; double[ ] doublearray = {1.05d,1.06d,1.07d}; //double 型 の 配 列 doublearrayを 宣 言 生 成 String[ ] stringarray = {"Sunday","Monday","Tuesday"}; //String 型 の 配 列 stringarrayを 宣 言 生 成 String[ ] stringarray = new String[10]; System.out.println(stringArray[0].length( )); // 配 列 要 素 (stringarray[0])にstringオブジェクトの 生 成 を 行 っていないため // 例 外 NullPointerExceptinが 返 されます String[ ] stringarray = new String[10]; stringarray[0] = new String("Sunday"); //Stringオブジェクトの 生 成 System.out.println(stringArray[0].length( )); // 配 列 要 素 (stringarray[0])にstringオブジェクトの 生 成 を 行 っているため // 正 しく 実 行 されます String[ ] stringarray = {"Sunday","Monday","Tuesday"}; System.out.println(stringArray[0]); // 初 期 化 子 を 指 定 した 場 合 は 配 列 の 各 要 素 のオブジェクトの // 生 成 も 同 時 に 行 われます 青 山 システムズ 61

5. 参 照 型 変 数 とオブジェクト 5.4 メソッドとオブジェクト メソッドの 引 数 はコピーされてメソッドに 渡 される 引 数 として 渡 される 基 本 データ 型 変 数 の 値 は 変 化 しない 引 数 として 渡 される 参 照 型 変 数 の 型 は 変 化 しないが そ の 変 数 の 指 すオブジェクトを 変 更 することができる 青 山 システムズ 62

5. 参 照 型 変 数 とオブジェクト 5.5 ガーペッジコレクション 参 照 されるオブジェクトのメモリは ガーペッジコレクタに 回 収 される ガーペッジコレクションを 促 されるが そのタイミングは 調 整 することができない finalizeによって 後 始 末 処 理 (メモリ 以 外 のリソースの 回 収 など)ができる 青 山 システムズ 63

6. 型 変 換 6.1 基 本 データ 型 の 暗 黙 的 型 変 換 変 換 元 の 基 本 型 型 変 換 が 可 能 な 変 更 先 の 基 本 型 boolean char byte short int long float double なし int, long, float, double short, int, long, float, double int, long, float, double long, float, double float, double double なし 青 山 システムズ 64

6. 型 変 換 6.1 基 本 データ 型 の 暗 黙 的 型 変 換 算 術 演 算 子 単 項 演 算 子 (+, -, ~) 二 項 演 算 子 (+, -, *, /, %, >>, >>>, <<, &, ^, ) ルール char, byte, short 型 の 変 数 はint 型 に 型 変 換 されます 上 記 以 外 の 型 の 変 数 は 型 変 換 は 行 われません 一 方 の 変 数 がdouble 型 の 場 合 もう 一 方 の 変 数 もdouble 型 に 型 変 換 されます 両 方 の 変 数 にdouble 型 が 含 まれず 一 方 の 変 数 がfloat 型 の 場 合 もう 一 方 の 変 数 もfloat 型 に 型 変 換 されます 両 方 の 変 数 にdouble 型 float 型 が 含 まれず 一 方 の 変 数 が long 型 の 場 合 もう 一 方 の 変 数 もlong 型 に 型 変 換 されます 両 方 の 変 数 にdouble 型 float 型 long 型 が 含 まれない 場 合 は 両 方 の 型 がint 型 に 変 換 されます 青 山 システムズ 65

6. 型 変 換 6.2 参 照 型 の 暗 黙 的 型 変 換 変 換 元 の 参 照 型 クラス 型 インタフェース 型 配 列 型 変 換 先 の 参 照 型 クラス 型 インタフェース 型 配 列 型 クラス 型 インタフェース 型 配 列 型 クラス 型 インタフェース 型 配 列 型 変 換 先 のクラス 型 が 変 換 元 のクラス 型 のスーパークラスで あること 変 換 先 のインタフェース 型 のインタフェースを 変 換 元 のクラ ス 型 のクラスが 実 装 していること 型 変 換 不 可 変 換 先 のクラス 型 がObjectクラスであること 変 換 先 のインタフェース 型 が 変 換 元 のインタフェース 型 の スーパーインタフェースであること 型 変 換 不 可 型 変 換 のルール 変 換 先 のクラス 型 がObjectクラスであること 変 換 先 のインタフェース 型 がCloneableインタフェース Serializableインタフェースであること 変 換 元 の 配 列 要 素 のデータ 型 と 変 換 先 の 配 列 要 素 の データ 型 において 型 変 換 のルールに 合 致 していること 青 山 システムズ 66

6. 型 変 換 6.3 基 本 データ 型 のキャスト ( 変 換 したい 型 ) 変 換 元 の 変 数 ; int x = 10; byte y = (byte)x; キャストのルール boolean 型 以 外 の 基 本 型 の 変 数 を 他 のboolean 型 以 外 の 基 本 型 の 変 数 にキャストできます boolean 型 はどの 型 へもキャストできません 青 山 システムズ 67

6. 型 変 換 6.4 参 照 型 のキャスト 変 換 元 の 参 照 型 クラス 型 インタフェース 型 配 列 型 変 換 先 の 参 照 型 クラス 型 インタフェース 型 配 列 型 クラス 型 インタフェース 型 配 列 型 クラス 型 インタフェース 型 配 列 型 変 換 元 のクラスと 変 換 先 のクラスに 継 承 関 係 があること どちらが スーパークラスであって もかまわない すべてキャスト 可 能 参 照 型 の 配 列 であること すべてキャスト 可 能 すべてキャスト 可 能 キャスト 不 可 変 換 先 のクラス 型 がObjectクラスであること キャスト 不 可 型 変 換 のルール 変 換 元 の 配 列 要 素 のデータ 型 と 変 換 先 の 配 列 要 素 のデータ 型 において キャストのルール に 合 致 していること 青 山 システムズ 68

7.フロー 制 御 7.1 基 本 ループ 繰 り 返 し(for)for 文 は 処 理 を 繰 り 返 して 実 行 する 場 合 に 用 います 下 記 の 例 は println() を 10 回 繰 り 返 す 例 です 最 初 に i に 0 を 代 入 し i の 値 を ++ でインクリメントしながら i の 値 が 10 よりも 小 さい 間 System.out.println(i) の 実 行 を 繰 り 返 します int i; for (i = 0; i < 10; i++) { System.out.println(i); } 繰 り 返 し(while)while 文 は 条 件 が 真 である 間 処 理 を 繰 り 返 します 下 記 の 例 では i の 値 が 10 よりも 小 さい 間 println() の 実 行 を 繰 り 返 します int i = 0; while (i < 10) { System.out.println(i); i++; } 繰 り 返 し(do while)do while 文 は while 文 と 似 ていますが 条 件 が 偽 でも 最 低 1 回 は 処 理 を 実 行 する 点 がことな ります int i = 0; do { System.out.println(i); i++; } while (i < 10); 青 山 システムズ 69

7.フロー 制 御 7.2 多 重 ループとbreak/continue 処 理 を 抜 ける(break)break は 最 も 内 側 の for ループ while ループ do ループや case 文 の 残 りの 処 理 を 飛 ばし 処 理 を 抜 けます 下 記 の 例 では i の 値 が 5 の 時 に for ループを 抜 け 出 し finish!! を 書 き 出 します for (i = 0; i < 10; i++) { if (i == 5) { break; } System.out.println(i); } System.out.println("finish!!"); ラベルを 指 定 することにより 多 重 のループを 一 度 に 抜 け 出 すこともできます 下 記 の 例 では i == 1 j == 5 の 時 に loop1 のラベルで 指 定 した 外 側 の for ループを 抜 けます ラベルには 任 意 の 名 前 をつけることが できます loop1: for (i = 0; i < 10; i++) { for (j = 0; j < 10; j++) { if ((i == 1) && (j == 5)) { break loop1; } } } 青 山 システムズ 70

7.フロー 制 御 7.2 多 重 ループとbreak/continue 処 理 を 繰 り 返 す(continue)continue は 最 も 内 側 の for ループ while ループ do ループ 文 の 残 りの 処 理 を 飛 ばし 次 のループを 開 始 します Perl 言 語 の next 文 に 相 当 します 下 記 の 例 では i の 値 が 5 の 時 に println() の 実 行 をスキップし i が 6 のループに 移 ります for (i = 0; i < 10; i++) { if (i == 5) { continue; } System.out.println(i); } break と 同 様 に ラベルで 指 定 した 多 重 ループの 外 側 のループに 作 用 さ せることも 可 能 です 青 山 システムズ 71

7.フロー 制 御 7.3 ラベルつきループ 7.2を 参 照 青 山 システムズ 72

7.フロー 制 御 7.4 拡 張 forループ 拡 張 for 文 は for 文 を 拡 張 した 新 しい 構 文 です 配 列 および 全 てのコレクションクラスに 対 して 適 応 することができます 例 えば 以 下 のようなStringを 格 納 したArrayListを 考 えます List<String> list = new ArrayList<String>(); list.add(" 京 都 "); list.add(" 大 阪 "); list.add(" 神 戸 "); この 要 素 を1つずつ 取 り 出 して 標 準 出 力 に 出 力 する 場 合 これまでのfor 文 を 用 いれば 例 えば 以 下 のようになりました for(iterator<string> iterator=list.iterator(); iterator.hasnext(); ){ System.out.println(iterator.next()); } これを 拡 張 for 文 を 用 いて 記 述 すると 以 下 のようになります for(string city : list){ System.out.println(city); } 青 山 システムズ 73

7.フロー 制 御 7.4 拡 張 forループ 非 常 に 簡 単 に 記 述 することができます 拡 張 for 文 の 文 法 を 以 下 に 示 します for( 型 変 数 名 : 式 ){ 文 } 式 の 部 分 には 以 下 のいずれかを 返 す 式 を 記 述 します 配 列 次 の 節 で 説 明 する java.lang.iterable インタフェースを 実 装 したクラスのインスタンスjava.util.Setや java.util.listのインスタンスなど 他 の 点 ではこれまでのfor 文 と 同 じです 宣 言 した 変 数 はforループ 内 でのみ 使 用 することができま す またjava.util.Setやjava.util.ListはIterableインタフェースのサブクラスですので これらを 実 装 したコレクションクラスを 拡 張 for 文 で 使 用 することができます 非 常 に 便 利 な 拡 張 for 文 ですが これまでの 通 常 のfor 文 でできることを 全 て 実 現 できるわけではあ りません 配 列 やコレクションクラスの 要 素 を 1つずつ 先 頭 から 取 得 することができるだけです つまり 後 ろから 順 に 取 得 することや 1つ 飛 ばしに 取 得 することなどはできません そういった 場 合 には 通 常 のfor 文 を 使 用 してください 青 山 システムズ 74

7.フロー 制 御 7.5 条 件 分 岐 if 文 は もし なら という 制 御 を 実 現 します 次 の 例 では もし a の 値 が 3 であれば "a is 3." を 表 示 します int a = 3; if (a == 3) { System.out.println("a is 3."); } else は さもなくば を 意 味 します 次 の 例 では もし a の 値 が 3 であれば "a is 3." を さもなくば "a is not 3." を 表 示 します int a = 3; if (a == 3) { System.out.println("a is 3."); } else { System.out.println("a is not 3."); } else if を 繰 り 返 して 使 用 することもできます 次 の 例 では もし a が 3 であれば "a is 3." を a が 4 であれば "a is 4." を さもなくば "a is unknown." を 表 示 します int a = 3; if (a == 3) { System.out.println("a is 3."); } else if (a == 4) { System.out.println("a is 4."); } else { System.out.println("a is unknown."); } 青 山 システムズ 75

7.フロー 制 御 7.5 条 件 分 岐 分 岐 (switch)switch 文 は 条 件 で 指 定 した 値 に 応 じて 処 理 を 振 り 分 けます 条 件 には 数 値 のみを 指 定 することができます case 文 の 値 には 固 定 値 を 指 定 します 実 行 時 に 値 の 変 わる 変 数 を 指 定 することはできません default は 他 のどの 条 件 にもマッチしなかった 場 合 に 実 行 されます int n = 3; switch (n) { case 1: System.out.println("n is one."); break; case 2: System.out.println("n is two."); break; case 3: System.out.println("n is tree."); break; default: System.out.println("unknwon"); break; } 青 山 システムズ 76

7.フロー 制 御 7.6 switch 文 と 列 挙 子 ラッパクラス J2SE1.4 までは switch 文 で 使 用 できる 型 は 整 数 プリミティブ 型 (int/short/char/byte)のみでした が J2SE5.0 では enum 型 参 照 も 使 用 できるように 言 語 仕 様 が 拡 張 されました Color color;... switch (color) { case RED:... case BLUE:... case YELLOW:... case BLACK:... case WHITE:... } この 際 case 文 のラベルには 定 数 名 だけを 記 述 します 通 常 は 外 部 から enum 型 の 定 数 を 参 照 するときにはクラス 名 が 必 要 ですが(たとえば Color.RED というように) case 文 のラベルとして 使 用 するときは 特 別 に 定 数 名 だけで 良 い 事 になっています 青 山 システムズ 77

8. 例 外 8.1 例 外 例 外 とは プログラム 動 作 における 予 期 せぬ 事 象 (エラー)のこと Javaでは 例 外 が 発 生 した 時 あらかじめ 用 意 されているエラーメッセージ(Exception in thread main java.lang.arithmeticexception など)を 表 示 しプログラムを 終 了 これがJavaのデフォルトの 例 外 処 理 Javaではデフォルトの 例 外 処 理 以 外 に エラーメールの 送 信 エラーログの 生 成 強 制 終 了 処 理 の 実 行 と いった 任 意 の 例 外 処 理 を 付 け 加 えることができる 以 下 はJavaで 例 外 処 理 を 行 う 上 で 使 用 するキーワードです 例 外 をスローする 例 外 ハンドラ 例 外 をキャッチする 青 山 システムズ 78

8. 例 外 8.2 例 外 の 種 類 とその 扱 い 例 外 が 発 生 した 際 例 外 オブジェクトが 生 成 されることからもわかるように Javaでは 例 外 をクラスにより 管 理 しています すべての 例 外 クラスはThrowableクラスの 子 孫 クラスです 例 外 関 連 のクラスは 大 きく 分 けて3つに 分 かれます Errorクラス RuntimeExceptionクラス RuntimeExceptionクラス 以 外 のExceptionクラスです Errorクラスには 例 外 処 理 では 復 旧 できない 種 類 の 例 外 クラスが 継 承 されています OutOfMemory(メモリの 不 足 )などです RuntimeExceptionクラスには JavaVMの 内 部 で 発 生 する 例 外 クラスが 継 承 されています NullPointerException(Null 参 照 を 通 してオブ ジェクトのメンバにアクセス) ArithmeticException( 整 数 を0で 除 算 )などです Errorクラス RuntimeExceptionクラスを 継 承 する 例 外 クラスにおいては 任 意 の 例 外 処 理 を 記 述 することは あまり 推 奨 されていません それはこれらの 例 外 クラスが 単 に 典 型 的 なプログラムを 記 述 した 際 においても その 数 は 膨 大 なものとなり 任 意 の 例 外 処 理 を 記 述 するメリットを 例 外 処 理 を 記 述 する 煩 雑 さ プログラム の 見 苦 しさが 上 回 ってしまうためです これらのデメリットを 上 回 るメリットがあるときのみ 任 意 の 例 外 処 理 を 記 述 します 例 外 処 理 を 記 載 しなくてもいい 事 からこれらの 例 外 は 非 チェック 例 外 と 呼 ばれています 一 方 RuntimeException 以 外 のExceptionクラスにおいては 必 ず 任 意 の 例 外 処 理 を 記 述 しなければなりま せん 記 述 しない 場 合 (デフォルトの 例 外 処 理 の 場 合 )はコンパイルエラーとなります 例 外 処 理 を 必 ず 記 載 する 必 要 があることからこれらの 例 外 はチェック 例 外 と 呼 ばれています 例 外 クラスとしては FileNotFoundException(ファイルが 見 つからなかった 場 合 )などがあります Exceptionクラスの 子 孫 クラスはクラス 名 の 最 後 に 必 ずExceptionが 付 きます ErrorクラスとExceptionクラ スの 区 別 は 容 易 に 行 えます 青 山 システムズ 79

8. 例 外 8.2 例 外 の 種 類 とその 扱 い try { 例 外 をスローする 可 能 性 のある 処 理 } catch ( 例 外 クラス 型 引 数 名 ) { 例 外 処 理 ( 例 外 ハンドラ) } finally { 最 後 に 必 ず 実 行 される 処 理 } 青 山 システムズ 80

8. 例 外 8.2 例 外 の 種 類 とその 扱 い try { 例 外 をスローする 可 能 性 のある 処 理 } catch ( 例 外 クラス 型 引 数 名 ) { 例 外 処 理 ( 例 外 ハンドラ) } finally { 最 後 に 必 ず 実 行 される 処 理 } try 節 では 例 外 をスローする 可 能 性 のある 処 理 を { }で 囲 みます try 節 で 囲 まれた 処 理 の 中 で 例 外 が 発 生 した 場 合 Java 実 行 時 環 境 は 該 当 する 例 外 ハンドラが 書 かれていないか 捜 しにいきます catch 節 ではスローされた 例 外 に 対 する 処 理 を 行 う 例 外 ハンドラを 記 載 します スローされた 例 外 オブ ジェクトとcatch 節 に 記 載 された 例 外 クラス 型 が 合 致 した 場 合 Java 実 行 時 環 境 はそのcatch 節 の 例 外 ハ ンドラを 実 行 します catch 節 に 記 載 された 引 数 名 を 利 用 して 該 当 する 例 外 オブジェクトの 情 報 を 参 照 す ることもできます finally 節 は 例 外 が 発 生 するしないにかかわらず 必 ず 実 行 したい 処 理 を 記 載 する 時 に 使 用 します 例 え ばファイルオープン 処 理 を 行 う 場 合 オープン 処 理 が 成 功 する 成 功 しないにかかわらずファイルクロー ズ 処 理 を 行 わなければならないとします そのような 時 にfinally 節 にファイルクローズ 処 理 を 記 載 します finally 節 は 必 須 項 目 ではありません 青 山 システムズ 81

8. 例 外 8.2 例 外 の 種 類 とその 扱 い 青 山 システムズ 82

8. 例 外 8.3 例 外 とメソッド メソッドのオーバーライドを 行 う 際 throwsで 指 定 する 例 外 クラス 型 の 指 定 方 法 の 注 意 点 スーパークラスのメソッドで 指 定 される 例 外 クラス 型 以 外 のチェッ ク 例 外 の 例 外 クラス 型 をサブクラスのメソッドで 指 定 することはで きない 非 チェック 例 外 の 例 外 クラス 型 は 指 定 可 能 スーパークラスのメソッドで 指 定 される 例 外 クラス 型 より 範 囲 の 広 い 例 外 クラス 型 をサブクラスのメソッドで 指 定 することはできな い スーパークラスのメソッドで 例 外 クラス 型 FileNotFoundException が 指 定 されていた 場 合 そのスーパークラスである 例 外 クラス 型 IOExceptionをサブクラスのメソッドに 指 定 することはできない 青 山 システムズ 83

8. 例 外 8.4 独 自 の 例 外 メソッド 名 ( 引 数 型 引 数 名 ) throws 例 外 クラス 型, 青 山 システムズ 84

8. 例 外 8.4 独 自 の 例 外 throwを 使 用 することにより 任 意 の 場 所 で 例 外 を 発 生 さ せることができる 以 下 のフォーマットによりthrowを 使 用 枠 内 の 例 外 オブジェクトを 参 照 する 式 には new 例 外 ク ラス を 使 用 throw 例 外 オブジェクトを 参 照 する 式 ; 青 山 システムズ 85

9.アサーション 9.1 アサーション アサーションとは 何 か アサーションは プログラムの 仕 様 をソースコードに 明 記 するものです 具 体 的 には プログラムの 実 行 時 に は 発 生 し 得 ない 場 合 を false とする boolean 式 を 含 み 仮 に false になるようなら java.lang.assertionerror を 発 生 させます AssertionError が 発 生 する 場 合 は プログラムが 予 期 しない 動 作 を 実 行 していることを 示 し ています 当 該 行 に 制 御 が 渡 るまでに なんらかのバグが 作 り 込 まれているということです アサーションは 行 として 記 述 して チェックポイントの 役 割 を 果 たします 極 論 すれば チェックポイント 間 を 結 ぶのが 制 御 です 何 らかの 処 理 の 前 に 記 述 すれば 事 前 条 件 をチェックし 後 ならば 事 後 条 件 をチェックでき ます 処 理 に 依 存 しないクラス 固 有 の 不 変 条 件 も ありえない 変 数 値 到 達 するはずのない 制 御 としてチェッ ク 可 能 です アサーションのシンタックス Java の 言 語 仕 様 で 採 用 されたアサーション 機 能 は 極 めてシンプルです 新 しく 追 加 されたキーワード "assert" を 使 い シンタックスは 次 の 二 通 りが 使 えます assert Expression1 ; assert Expression1 : Expression2 ; いずれの 場 合 も Expression1 は boolean 値 (true/false) を 返 す 式 です Expression2 は 値 を 返 す 任 意 の 式 で 値 は AssertionError のコンストラクタ 引 数 になります この 値 の 文 字 列 表 現 が 詳 細 メッセージに 使 わ れ 通 常 は 変 数 の 値 などの デバッグに 役 立 つトレース 情 報 を 記 述 します // x が null だと AssertionError assert x!= null; // y が 負 だと AssertionError // 詳 細 メッセージは "y = " + y assert y >= 0: "y = " + y; 青 山 システムズ 86

9.アサーション 9.2 アサーションの 有 効 化 と 無 効 化 アサーションを 適 切 に 記 述 する 場 合 アサーションが 通 れば その 点 までの 制 御 は 意 図 どおりに 通 っていることを 確 認 できたことになります アサーショ ンは チェックポイントの 役 割 を 果 たします アサーション 条 件 は 適 切 に 動 作 していれば 成 功 する 条 件 を 記 述 するので デバッグ 済 みの 完 成 したコード は 有 効 / 無 効 に 関 わらず 動 作 に 変 化 がないようにします アサーションをコンパイル 時 に 有 効 にするには コマンド "javac" にフラグ "- source 1.4" を 指 定 します 実 行 時 に 有 効 にするには コマンド "java" にフ ラグ "-ea" などを 指 定 します アサーションのコンパイル アサーションは デフォルトでは 無 効 になっています コンパイル 時 に "assert" をキーワード にするかどうか 指 定 するフラグがあります javac コマンドのアサーションフラグ: >javac -source 1.4 MyClass // assert をキーワードとして 認 識 する >javac -source 1.3 MyClass // assert をキーワードとして 認 識 しない SDK 1.4 でのデフォルトは "-source 1.3" です デフォルトの 場 合 は そのソースコードの 中 でアサーション 機 能 が 無 効 と 考 えられ "assert" が 識 別 子 /ラベルとして 使 われていても 警 告 はされますがコンパイルされます 一 方 "-source 1.4" を 指 定 すると アサーション 機 能 が 有 効 と 考 えられ エラーとなってクラ スファイルも 生 成 されません 青 山 システムズ 87

9.アサーション 9.2 アサーションの 有 効 化 と 無 効 化 アサーションの 実 行 java コマンドによる 実 行 時 にも フラグで 有 効 にしないと アサーション 行 は 空 行 と 等 価 の 扱 いで 無 視 されます 開 発 時 にはデバッグのために 有 効 にして 本 番 稼 動 時 には 無 効 にするのが 基 本 的 な 使 い 方 です java コマンドのアサーションフラグ: -ea[:<packagename>... :<classname>] - enableassertions[:<packagename>... :<classname>] 指 定 したクラス/パッ ケージのアサーションを 有 効 にする -da[:<packagename>... :<classname>] - disableassertions[:<packagename>... :<classname>] 指 定 したクラス/パッ ケージのアサーションを 無 効 にする -esa -enablesystemassertions システムクラス/ライブラリのアサーションを 有 効 にする -dsa -disablesystemassertions システムクラス/ライブラリのアサーションを 無 効 にする ピリオド 三 つ(...)がクラス 名 に 対 するワイルドカードとして 機 能 します "-ea/-da" の 場 合 クラス/パッケージ 名 を 指 定 しないと 全 てのクラスローダー が 全 てのパッケージに 対 してアサーションを 有 効 にしてクラスをロードします こ のとき システムライブラリ(コアパッケージ"rt.jar")は 明 示 的 なクラスローダを 持 たないので 除 外 されます コアパッケージのアサーションも 有 効 にしたい 場 合 は "-esa/-dsa" を 追 加 して 指 定 します 青 山 システムズ 88

9.アサーション 9.3 アサーションの 不 適 切 な 使 用 publicメソッド 内 の 引 数 のチェックにはアサーションを 用 い ない アサーション 内 では 副 作 用 があるboolean 式 は 使 用 し ない エンドユーザの 入 力 処 理 のチェックにはアサーションを 用 いない 青 山 システムズ 89

9.アサーション 9.4 不 変 条 件 クラスのオブジェクトが 満 たしておくべき 条 件 メソッド 実 行 前 と メソッド 実 行 後 にこの 条 件 を 確 認 します メソッド 実 行 前 に この 条 件 がエラーになると メソッド 呼 び 出 し 前 のプログラムコードにバグが あることを 表 します メソッド 実 行 後 にこの 条 件 がエラーになると メソッド 内 のプログラムコードにバグがあることを 表 します 不 変 条 件 の 例 としては クラスのメンバ 変 数 に 正 しい 値 が 設 定 されているか メンバ 変 数 同 士 の 関 係 は 正 しいか などがあります publicなメソッドの 引 数 チェックは 行 わない publicなメソッドの 引 数 チェックは 通 常 のプログラムコードの 中 で 常 に 行 われる べきであり アサーションを 利 用 して 行 うべきでないとされています プログラムで 必 要 な 処 理 をアサーションで 行 わない プログラムで 必 要 な 処 理 をアサーションで 行 うべきではありません 変 数 xを10 倍 する 処 理 があった 場 合 assert x * 10 > 100; と 記 載 するとアサーションを 利 用 しない 場 合 10 倍 する 処 理 が 行 われません この 場 合 は x = x * 10; assert x > 100; と 記 載 します 青 山 システムズ 90

9.アサーション 9.5 事 前 条 件 事 後 条 件 事 前 条 件 メソッドの 引 数 が 満 たしておくべき 条 件 この 条 件 がエ ラーになると メソッド 呼 び 出 し 前 のプログラムコードにバ グがあることを 表 します 事 後 条 件 メソッドの 処 理 終 了 時 点 で 満 たしておくべき 条 件 この 条 件 がエラーになると メソッド 内 のプログラムコードにバグ があることを 表 します 青 山 システムズ 91

10.スレッド 10.1 スレッド スレッドとは プログラムを 実 行 している 主 体 ( 例 えて 言 うなら1 人 の 人 間 )です すべてのプログラ ムはスレッドによって 実 行 されています 1つのスレッドは ひとりの 人 間 がプログラムを1 行 ずつ 読 んでプログラムの 流 れを 追 いかけるように 命 令 を1つずつ 解 釈 し 処 理 を 実 行 していきます スレッド(Thread)とはもともと 糸 という 意 味 ですが プログラムの 実 行 は 糸 をたぐるように 順 番 に 命 令 が 実 行 されていくため そのような 名 前 がついています 1つのスレッドはあくまでも1 本 の 糸 で あり 2つの 処 理 を 同 時 に 行 うことはありません Threadクラスを 継 承 する 方 法 Threadクラスを 継 承 したクラスを 利 用 して 新 しいスレッドを 実 行 するには 次 のような 手 順 を 用 います Threadクラスを 継 承 するクラスを 作 成 する そのクラスでrunメソッドを 宣 言 する そのクラスのインスタンスを 作 成 する そのインスタンスのstartメソッドを 呼 び 出 す Runnableインタフェースを 実 装 する 方 法 Runnableインタフェースを 実 装 したクラスを 利 用 して 新 しいスレッドを 実 行 するには 次 の 手 順 に 従 います Runnableインタフェースを 実 装 したクラスを 作 成 する そのクラスでrunメソッドを 実 装 する そのクラスのインスタンスを 作 成 する そのインスタンスを 引 数 としたコンストラクタでThreadクラスのインスタンスを 作 成 する そのThreadクラスのインスタンスのstartメソッドを 呼 び 出 す 青 山 システムズ 92

10.スレッド 10.2 スレッドの 状 態 初 期 状 態 新 しいスレッドを 作 成 した 状 態 です この 状 態 ではまだスレッドは 動 作 していません 次 の 章 で 説 明 するstart メソッドにより 実 行 可 能 状 態 となります 実 行 可 能 状 態 スレッドが 動 作 している 状 態 です この 状 態 は さらに 実 行 中 と 実 行 準 備 完 了 の2つ の 状 態 に 分 けられます 実 行 中 は 時 分 割 処 理 によって 実 際 にCPUによって 処 理 が 実 行 されている 状 態 です 通 常 のCPUが1つしかないコンピュータでは 実 行 中 のスレッド は 同 時 には 最 大 で1つだけしか 存 在 しません その 他 のスレッドは 実 行 準 備 完 了 状 態 で CPU 時 間 が 割 り 当 てられるのを 待 機 しています ブロック 状 態 ディスクの 入 出 力 操 作 や スレッドの 排 他 制 御 や 同 期 処 理 などにより スレッドの 動 作 が 一 時 的 に 休 止 している 状 態 です ブロック 状 態 となっている 原 因 が 解 消 されれば 実 行 可 能 状 態 に 戻 ります スレッドは 動 作 中 に 何 度 も 実 行 可 能 状 態 と ブロック 状 態 を 行 き 来 することができます 終 了 状 態 スレッドの 処 理 が 終 了 した 状 態 です 青 一 山 度 システムズ 終 了 状 態 になったスレッドは 再 び 動 作 を 開 始 93 することはありません

10.スレッド 10.2 スレッドの 状 態 戻 り 型 static int static int static int 定 数 MAX_PRIORITY MIN_PRIORITY NORM_PRIORITY 説 明 スレッドに 設 定 できる 最 高 優 先 順 位 10を 表 しま す スレッドに 設 定 できる 最 低 優 先 順 位 1を 表 しま す スレッドに 設 定 できるデフォルト 優 先 順 位 5を 表 します int void 戻 り 型 メソッド getpriority setpriority 説 明 スレッドの 優 先 順 位 を 返 します スレッドの 優 先 順 位 を 変 更 します 青 山 システムズ 94

10.スレッド 10.2 スレッドの 状 態 生 成 1.new 演 算 子 によりスレッドオブジェクトが 生 成 されます 生 成 段 階 ではまだスレッドオブジェクトにシステム 資 源 は 割 り 当 てられていません 実 行 可 能 2.startメソッドの 実 行 によりスレッドは 実 行 可 能 状 態 になりま す この 状 態 になりスレッドオブジェクトにシステム 資 源 が 割 り 当 てられます 実 行 3.Javaを 実 行 するシステムのスケジュール 機 能 に 従 い 実 行 可 能 状 態 にあるスレッドのうち1つが 実 行 (CPUが1つの 場 合 )されます この 時 runメソッドが 実 行 されます 4-1.Javaを 実 行 するシステムのスケジュールに 従 い より 優 先 度 の 高 いスレッドが 実 行 されたり タイムスケジュールによ り 他 のスレッドが 実 行 された 場 合 現 在 実 行 されているスレッ ドは 実 行 可 能 状 態 となり 再 び 実 行 状 態 になるのを 待 ちます 4-2.yieldメソッドは 同 一 優 先 度 のメソッドが 実 行 可 能 状 態 に ある 場 合 実 行 状 態 であるyeildメソッドを 呼 び 出 したスレッド を 実 行 可 能 状 態 にし 他 の 実 行 可 能 状 態 にあるスレッドを 実 行 状 態 にするためのものです システムのスケジュール 機 能 にも 依 存 しますが より 低 い 優 先 度 のスレッドが 実 行 可 能 状 態 にある 場 合 は yieldメソッドは 無 視 されます 実 行 不 可 何 らかの 処 理 により 実 行 状 態 にあるスレッドが 実 行 状 態 でなく なります( 実 行 不 可 状 態 ) この 間 他 のスレッドが 実 行 状 態 になります 青 山 システムズ 95

10.スレッド 10.3 モニター クラスやインスタンスはそれぞれ ロック というものを 持 っています ロックと は 鍵 のことです スレッドは synchronizedブロックの 開 始 時 に synchronized 文 で 指 定 したオブジェクトのロックを 取 得 し 終 了 時 にそのロッ クを 開 放 します あるスレッドがロックを 取 得 している 状 態 では 他 のスレッド は 同 じロックを 取 得 することができません ロックが 返 却 されるまで 待 たされ ます つまり 同 じオブジェクトのロックを 獲 得 しようとするsynchronizedブロック 同 士 は 原 則 として 同 時 には 並 行 して 実 行 されないことになります オブジェク トに 鍵 をかけて 他 のスレッドに 邪 魔 されないようにして 作 業 をしていると 考 えるとよいでしょう ただし オブジェクトに 対 して 鍵 をかけると 考 えると synchronizedブロックの 実 行 は 絶 対 に 割 り 込 まれないと 思 うかもしれませんが それは 誤 りです ロックが 使 用 中 であるかどうかを 気 にするのは あくまでも スレッドが synchronizedブロックを 実 行 しようとしているときだけです あるスレッドが synchronizedブロックでオブジェクトを 独 占 しているつもりでも synchronizedを 利 用 していない 箇 所 からのアクセスを 防 ぐことはできません 青 山 システムズ 96

10.4 モニターによるスレッドの 制 御 10. スレッド 10.4 モニターによるスレッドの 制 御 課 税 後 価 格 は105.0 円 です 課 税 後 価 格 は210.0 円 です priceputで 新 しい 価 格 が 設 定 される 前 に 課 税 後 価 格 は210.0 円 です pricegetが 実 行 されたため 価 格 がダブ っている 課 税 後 価 格 は420.0 円 です 課 税 後 価 格 は525.0 円 です 青 山 システムズ 97

10.スレッド 10.4 モニターによるスレッドの 制 御 実 行 結 果 を 意 図 したように 導 き 出 すためには 以 下 の 点 を 考 慮 する 必 要 があります 1.pricePutメソッド もしくはpriceGetメソッドでオブジェクトの 値 (ここ では 変 数 workarea)を 操 作 している 間 他 の 処 理 からオブジェクトへ のアクセスを 防 ぐ 必 要 があります priceputメソッドで 値 を 設 定 してい ると 同 時 に pricegetメソッドでオブジェクトへアクセスがあった 場 合 そのオブジェクトが 破 壊 されてしまう 恐 れがあります これを 防 ぐため にはsynchronizedを 使 用 します synchronizedで 指 定 された 処 理 は 処 理 を 実 行 しているオブジェクトを 他 の 処 理 からアクセスされないよ うロックします 2.pricePutメソッドで 変 数 workareaに 値 を 代 入 した 後 にpriceGetメ ソッドでその 値 を 抜 出 す 必 要 があります このためにはpricePutメ ソッドを 動 作 させるスレッドとpriceGetメソッドを 動 作 させるスレッドの 間 で 何 らかの 同 期 を 行 う 必 要 があります スレッドを 同 期 させる 方 法 として waitメソッド notifyallメソッドを 使 用 します 青 山 システムズ 98

10.スレッド 10.5 synchronized メソッドに 指 定 する 場 合 synchronized 戻 り 型 メソッド 名 ( 引 数 型 引 数 名 ){ メソッド 本 体 } ; ブロックに 指 定 する 場 合 synchronized (ロックするオブジェク ト){ } ; クリティカルセクションコード 青 山 システムズ 99

10.スレッド 10.5 synchronized synchronizedはメソッド ブロックに 対 して 指 定 するもので す synchronizedが 指 定 されると 指 定 されたメソッド ブ ロックが 属 するオブジェクトはメソッド ブロックを 実 行 して いる 間 同 じオブジェクト 内 のsynchronizedが 指 定 された メソッド ブロックからアクセスされないようロックされます オブジェクトを 共 有 するメソッド ブロックをクリティカルセ クションと 言 います synchronizedはクリティカルセクショ ンに 指 定 します 今 回 の 例 題 では 変 数 workareaを 共 有 するpricePutメソッドと pricegetメソッドがクリティカルセ クションです 青 山 システムズ 100

10.スレッド 10.6 スレッド 関 連 の 重 要 なメソッド メソッド 名 start yield sleep join getpriority setpriority interrupt holdslock run wait notify notifyall スレッドの 優 先 度 を 返 します 動 作 スレッドを 実 行 可 能 状 態 にします 同 じスレッドで 二 回 以 上 このメソッドを 呼 び 出 すと 例 外 IllegalThreadStateExceptionをスローします 実 行 中 のスレッドの 実 行 を 休 止 させ 他 のスレッドに 実 行 のチャンスを 与 えます ただし 次 にどのスレッド を 実 行 するかは 分 かりません 実 行 中 のスレッドを 実 行 不 可 能 状 態 にします 引 数 で 与 えられた 時 間 だけスリープしますが ミリ 秒 単 位 で 指 定 するものと ミリ 秒 とナノ 秒 の 二 つを 指 定 できるものがあります オブジェクト 変 数 に 対 してこのメソッドを 実 行 すると そのスレッドの 終 了 を waitします 引 数 を 指 定 して 待 ち 時 間 の 上 限 を 指 定 することも 可 能 です スレッドの 優 先 度 を 引 数 で 与 えられた 値 にします 優 先 度 は MIN_PRIORITY(1)~MAX_PRIORITY(10) まであり デフォルトはNORM_PRIORITY(5)です スレッドに 割 り 込 みを 行 います waitで 待 機 していたスレッドでは waitが 例 外 InterruptedExceptionをス ローします スレッドが 引 数 に 指 定 されたオブジェクトのロックを 待 っている 場 合 に 真 を 返 します 継 承 または 実 装 したクラスにてオーバーライドしてスレッドの 処 理 内 容 を 記 述 します 他 のスレッドがこのオブジェクトの notify() メソッドまたは notifyall() メソッドを 呼 び 出 すまで 現 在 のス レッドを 待 機 させます このメソッドは 検 査 例 外 InterruptedExceptionをスローします ロックの 開 放 を 待 機 しているスレッドに 通 知 して 1 つを 再 開 します このオブジェクトで 複 数 のスレッドが 待 機 中 の 場 合 は そのうちの 1 つを 再 開 します スレッドがオブジェクトのモニターを 取 得 していない 場 合 例 外 IllegalMonitorStateExceptionをスローします ロックの 開 放 を 待 機 している 全 てのスレッドに 通 知 をして 全 てのスレッドを 再 開 します スレッドがオブジェ クトのモニターを 取 得 していない 場 合 例 外 IllegalMonitorStateExceptionをスローします 青 山 システムズ 101

11.ネストクラス インナークラス 11.1 ネストクラス インナークラス クラス 内 で 定 義 するクラスをネストクラス(インナークラス 内 部 クラス)という メソッドなどの 中 でなければ staticなものと 非 staticなも のがある 非 staticクラスのオブジェクトは 外 側 のクラスのオブジェク トを 生 成 してから 生 成 する 青 山 システムズ 102

11.ネストクラス インナークラス 11.2 メソッド 内 のインナークラス メソッド 内 で 定 義 するクラスをロ 一 カルインナークラス( 局 所 内 部 クラス)という ローカルインナークラスからは タト 側 のメソッドのfinalな 引 数 finalな 変 数 またそのメソッドを 持 つクラスのフィー ルドにアクセスできる 青 山 システムズ 103

11.ネストクラス インナークラス 11.3 無 名 クラス( 匿 名 クラス) メソッド 内 で 無 名 クラスを 定 義 し そのオブジェクトを 生 成 し 使 うことができる 無 名 クラスは 既 存 のクラスのサブクラスか インタフェー スを 実 装 するクラスとして 定 義 できる 無 名 クラスのオブジェクトを 生 成 し 他 のメソッドに 引 数 と して 渡 せる 青 山 システムズ 104

11.ネストクラス インナークラス 11.4 無 名 クラスの 使 用 例 無 名 クラスは イベントドリブン 型 プログラムによく 使 われ る 青 山 システムズ 105

12. 入 出 力 とシリアライズ デシリアライズ 12.1 Scanner 正 規 表 現 を 使 用 してプリミティブ 型 および 文 字 列 の 構 文 解 析 が 可 能 な 単 純 なテキストスキャナで す Scanner は 区 切 り 文 字 のパターンを 使 用 して 入 力 をトークンに 分 割 します デフォルトでは 区 切 り 文 字 は 空 白 文 字 です 作 成 されたトークンは さまざまな next メソッドを 使 用 して 異 なる 型 の 値 に 変 換 できます たとえば 次 のコードを 使 用 して System.in からの 数 値 の 読 み 込 みをユーザに 許 可 できます Scanner sc = new Scanner(System.in); int i = sc.nextint(); 別 の 例 として 次 のコードを 使 用 して mynumbers ファイル 内 のエントリから long 型 を 割 り 当 て ることができます Scanner sc = new Scanner(new File("myNumbers")); while (sc.hasnextlong()) { long along = sc.nextlong(); } 青 山 システムズ 106

12. 入 出 力 とシリアライズ デシリアライズ 12.1 Scanner スキャナは 空 白 文 字 以 外 の 区 切 り 文 字 も 使 用 できます 次 の 例 では 文 字 列 から 複 数 の 項 目 を 読 み 取 ります String input = "1 fish 2 fish red fish blue fish"; Scanner s = new Scanner(input).useDelimiter(" s*fish s*"); System.out.println(s.nextInt()); System.out.println(s.nextInt()); System.out.println(s.next()); System.out.println(s.next()); s.close(); 画 面 には 次 のように 表 示 されます 1 2 red blue 次 のコードでも 同 じ 出 力 を 生 成 できます このコードでは 4 つのトークンを 一 度 に 構 文 解 析 する 正 規 表 現 を 使 用 します String input = "1 fish 2 fish red fish blue fish"; Scanner s = new Scanner(input); s.findinline("( d+) fish ( d+) fish ( w+) fish ( w+)"); MatchResult result = s.match(); for (int i=1; i<=result.groupcount(); i++) System.out.println(result.group(i); s.close(); 青 山 システムズ 107

12. 入 出 力 とシリアライズ デシリアライズ 12.1 Scanner コンストラクタの 概 要 Scanner(File source) 指 定 されたファイルからスキャンされた 値 を 生 成 する Scanner を 新 しく 作 成 します Scanner(InputStream source) 指 定 された 入 力 ストリームからスキャンされた 値 を 生 成 する Scanner を 新 しく 作 成 します Scanner(String source) 指 定 された 文 字 列 からスキャンされた 値 を 生 成 する Scanner を 新 しく 作 成 します 青 山 システムズ 108

12. 入 出 力 とシリアライズ デシリアライズ 12.1 Scanner メソッドの 概 要 String String boolean String findinline(pattern pattern) 区 切 り 文 字 を 無 視 して 次 に 現 れる 指 定 されたパターンの 検 索 を 試 みます findinline(string pattern) 区 切 り 文 字 を 無 視 して 次 に 現 れる 指 定 された 文 字 列 から 構 築 されたパターンの 検 索 を 試 みます hasnext(pattern pattern) 次 の 完 全 なトークンが 指 定 されたパターンに 一 致 する 場 合 は true を 返 します next(pattern pattern) 指 定 されたパターンに 一 致 する 次 のトークンを 返 します 青 山 システムズ 109

12. 入 出 力 とシリアライズ デシリアライズ 12.2 パターン PatternオブジェクトとMatcherオブジェクトの 生 成 Javaで 正 規 表 現 を 用 いるためには2つのオブジェクトが 必 要 です 正 規 表 現 を 表 すオブジェクト(java.util.regex.Pattern オブジェクト) 入 力 シーケンス(マッチの 対 象 となる 文 字 列 )を 持 ち マッチを 行 うオ ブジェクト(java.util.regex.Matcher オブジェクト) String 型 で 表 した 正 規 表 現 を 引 数 に 取 るPatternのクラスメソッド compileによってpatternオブジェクトが 生 成 されます 正 規 表 現 の 文 字 面 をString 型 で 表 す 際 文 字 クラスなどに 用 いるバックク オートはバッククオートによってエスケープしなければなりません Matcher オブジェクトはPatternオブジェクトのmatcherメソッドに よって 生 成 されます このMatcherオブジェクトから 正 規 表 現 の マッチ 検 索 置 換 などの 各 種 メソッドを 呼 び 出 すことができます 青 山 システムズ 110

12. 入 出 力 とシリアライズ デシリアライズ 12.2 パターン x 0n 0nn 0mnn xhh uhhhh t n r f a e cx 構 文 マッチ 対 象 文 字 文 字 x バックスラッシュ 文 字 8 進 値 0n を 持 つ 文 字 (0 <= n <= 7) 8 進 値 0nn を 持 つ 文 字 (0 <= n <= 7) 8 進 値 0mnn を 持 つ 文 字 (0 <= m <= 3 0 <= n <= 7) 16 進 値 0xhh を 持 つ 文 字 16 進 値 0xhhhh を 持 つ 文 字 タブ 文 字 (' u0009') 改 行 文 字 (' u000a') キャリッジリターン 文 字 (' u000d') 用 紙 送 り 文 字 (' u000c') 警 告 (ベル) 文 字 (' u0007') エスケープ 文 字 (' u001b') x に 対 応 する 制 御 文 字 青 山 システムズ 111

12. 入 出 力 とシリアライズ デシリアライズ 12.2 パターン 構 文 [abc] [^abc] [a-za-z] [a-d[m-p]] [a-z&&[def]] [a-z&&[^bc]] [a-z&&[^m-p]]. d D s S w W マッチ 対 象 文 字 クラス a b または c ( 単 純 クラス) a b c 以 外 の 文 字 ( 否 定 ) a ~ z または A ~ Z ( 範 囲 ) a ~ d または m ~ p: [a-dm-p] ( 結 合 ) d e f ( 交 差 ) b と c を 除 く a ~ z: [ad-z] ( 減 算 ) m ~ p を 除 く a ~ z: [a-lq-z] ( 減 算 ) 定 義 済 みの 文 字 クラス 任 意 の 文 字 ( 行 末 記 号 とマッチする 場 合 もある) 数 字 : [0-9] 数 字 以 外 : [^0-9] 空 白 文 字 : [ t n x0b f r] 非 空 白 文 字 : [^ s] 単 語 構 成 文 字 : [a-za-z_0-9] 非 単 語 文 字 : [^ w] 青 山 システムズ 112

12. 入 出 力 とシリアライズ デシリアライズ 12.2 パターン 構 文 p{lower} p{upper} p{ascii} p{alpha} p{digit} p{alnum} p{punct} p{graph} p{print} p{blank} p{cntrl} p{xdigit} p{space} マッチ 対 象 POSIX 文 字 クラス (US-ASCII のみ) 小 文 字 の 英 字 : [a-z] 大 文 字 の 英 字 : [A-Z] すべての ASCII 文 字 : [ x00- x7f] 英 字 : [ p{lower} p{upper}] 10 進 数 字 : [0-9] 英 数 字 : [ p{alpha} p{digit}] 句 読 文 字 :!"#$%&'()*+,-./:;<=>?@[ ]^_`{ }~ のいずれか 表 示 できる 文 字 : [ p{alnum} p{punct}] プリント 可 能 文 字 : [ p{graph}] 空 白 またはタブ: [ t] 制 御 文 字 : [ x00- x1f x7f] 16 進 数 字 : [0-9a-fA-F] 空 白 文 字 : [ t n x0b f r] 青 山 システムズ 113

12. 入 出 力 とシリアライズ デシリアライズ 12.2 パターン 構 文 p{ingreek} p{lu} p{sc} P{InGreek} [ p{l}&&[^ p{lu}]] ^ $ b B A G Z z マッチ 対 象 Unicode ブロックとカテゴリのクラス ギリシャ 語 ブロックの 文 字 ( 単 純 ブロック) 大 文 字 ( 単 純 カテゴリ) 通 貨 記 号 ギリシャ 語 ブロック 以 外 の 文 字 ( 否 定 ) 大 文 字 以 外 の 文 字 ( 減 算 ) 境 界 正 規 表 現 エンジン 行 の 先 頭 行 の 末 尾 単 語 境 界 非 単 語 境 界 入 力 の 先 頭 前 回 のマッチの 末 尾 最 後 の 行 末 記 号 がある 場 合 は それを 除 く 入 力 の 末 尾 入 力 の 末 尾 青 山 システムズ 114

12. 入 出 力 とシリアライズ デシリアライズ 12.2 パターン X? X * X + X { n } X ( n,} X { n, m } X?? X *? X +? X { n }? X ( n,}? X { n, m }? 構 文 マッチ 対 象 最 長 一 致 数 量 子 X 1 回 または 0 回 X 0 回 以 上 X 1 回 以 上 X n 回 X n 回 以 上 X n 回 以 上 m 回 以 下 最 短 一 致 数 量 子 X 1 回 または 0 回 X 0 回 以 上 X 1 回 以 上 X n 回 X n 回 以 上 X n 回 以 上 m 回 以 下 青 山 システムズ 115

12. 入 出 力 とシリアライズ デシリアライズ 12.2 パターン X?+ X *+ X ++ X { n }+ X ( n,}+ X { n, m }+ XY X Y X または Y (X ) X 前 方 参 照 を 行 う 正 規 表 現 グループ n Q E 構 文 X 1 または 0 回 X 0 回 以 上 X 1 回 以 上 X n 回 X n 回 以 上 X n 回 以 上 m 回 以 下 X の 直 後 に Y 強 欲 な 数 量 子 論 理 演 算 子 前 方 参 照 マッチした n 番 目 の 前 方 参 照 を 行 う 正 規 表 現 グループ 引 用 マッチ 対 象 正 規 表 現 ではないが 次 の 文 字 をエスケープする 正 規 表 現 ではないが E までのすべての 文 字 をエスケープする 青 山 システムズ 116 正 規 表 現 ではないが Q で 開 始 された 引 用 をエスケープする

12. 入 出 力 とシリアライズ デシリアライズ 12.3 文 字 列 の 検 索 と 分 割 Scannerで 文 字 列 や 入 力 の 検 索 ができる Stringのsplitで 文 字 列 を 分 割 できる 青 山 システムズ 117

12. 入 出 力 とシリアライズ デシリアライズ 12.4 printfとformat printfとformatによって いろいろなデータを 文 字 列 に 埋 め 込 んで 出 力 できる その 際 書 式 などを 指 定 することができる 青 山 システムズ 118

12. 入 出 力 とシリアライズ デシリアライズ 12.5 File java.ioパッケージの 中 で ファイル 操 作 に 関 するクラス が java.io.fileクラスになります Fileクラスには ファイ ルやディレクトリが 存 在 するか 否 かを 確 認 したり 読 み 書 きが 可 能 かどうか また 種 類 やファイルサイズを 確 認 す るメソッドが 提 供 されています 1. 2. 3. 4. コンストラクタ File(String pathname) File(String parent, String child) File(File parent, String child) File(URI uri) 青 山 システムズ 119

12. 入 出 力 とシリアライズ デシリアライズ 12.5 File メソッド 名 概 要 boolean exists() boolean canread() boolean canwrite() boolean isfile() boolean isdirectory() String getname() String getpath() boolean renameto(file dest) boolean delete() boolean createnewfile() throws IOException boolean mkdir() ファイルやディレクトリが 存 在 するか 否 かを 確 認 する 指 定 されたファイルがアプリケーションから 読 み 取 り 可 能 かを 確 認 する 指 定 されたファイルがアプリケーションから 書 き 込 み 可 能 かを 確 認 する この 抽 象 パス 名 が 示 すファイルがファイルであるかどうかを 判 定 する この 抽 象 パス 名 が 示 すファイルがディレクトリであるかどうかを 判 定 する ファイルやディレクトリ 名 称 を 文 字 列 として 取 得 する 抽 象 パス 名 をパス 名 の 文 字 列 に 変 換 する ファイル 名 を 変 更 する ファイルやディレクトリを 削 除 する この 抽 象 パス 名 が 示 す 空 のファイルを 生 成 します この 抽 青 象 パス 山 システムズ 名 が 示 すディレクトリを 生 成 します 120

12. 入 出 力 とシリアライズ デシリアライズ 12.6 ReaderとWriter java.io.filereader テキストファイルの 読 み 込 み 1. 2. 3. コンストラクタ FileReader(String filename) FileReader(File file) FileReader(FileDescriptor fd) 青 山 システムズ 121

12. 入 出 力 とシリアライズ デシリアライズ 12.6 ReaderとWriter int read() メソッド 名 int read(char[] cbuf) abstract int read (char[] cbuf, int off, int len) 概 要 単 一 文 字 を 読 み 込 んで0 ~ 65535 (0x00-0xffff) の 範 囲 の 整 数 としての 読 み 込 まれた 文 字 を 返 します ストリームの 終 わりに 達 した 場 合 は -1 を 返 します 文 字 列 を 読 み 込 んで 引 数 で 指 定 した 配 列 に 格 納 します ストリームの 終 わりに 達 し た 場 合 は -1を 返 します offとlenまでの 一 部 の 文 字 を 読 み 込 んで 配 列 へ 格 納 します ストリームの 終 わりに 達 した 場 合 は -1 を 返 します 青 山 システムズ 122

12. 入 出 力 とシリアライズ デシリアライズ 12.6 ReaderとWriter java.io.filewriterクラスのインスタンスを 生 成 するには 以 下 のコン ストラクタを 使 用 します 1. 2. 3. 4. 5. コンストラクタ FileWriter(File file) FileWriter(File file, boolean append) FileWriter(String filename) FileWriter(String filename, boolean append) FileWriter(FileDescriptor fd) 青 山 システムズ 123

12. 入 出 力 とシリアライズ デシリアライズ 12.6 ReaderとWriter メソッド 名 void write(int c) void write(string str) void write (String str, int off, int len) void write(char[] cbuf) void write (char[] cbuf, int off, int len) 概 要 単 一 の 文 字 を 出 力 ストリームへ 書 き 込 みます 文 字 列 を 出 力 ストリームへ 書 き 込 みます オフセット offから 始 まる 文 字 数 lenを 出 力 ストリームへ 書 き 込 みま す 文 字 の 配 列 を 出 力 ストリームへ 書 き 込 みます 配 列 要 素 offから 始 まる 要 素 数 lenを 出 力 ストリームへ 書 き 込 みま す 青 山 システムズ 124

12. 入 出 力 とシリアライズ デシリアライズ 12.7 シリアライズ デシリアライズ 省 略 青 山 システムズ 125

12. 入 出 力 とシリアライズ デシリアライズ 12.8 継 承 とシリアライズ デシリアライズ 省 略 青 山 システムズ 126

13. 基 本 パッケージ 13.1 java.langとobject java.langクラス クラスの 概 要 Math Object Runtime String StringBuffer StringBuilder System Math クラスは 指 数 関 数 対 数 関 数 平 方 根 および 三 角 関 数 といっ た 基 本 的 な 数 値 処 理 を 実 行 するためのメソッドを 含 んでいます Object クラスは クラス 階 層 のルートです Java アプリケーションはすべて Runtime クラスの 単 一 のインスタンスを 持 ちます String クラスは 文 字 列 を 表 します スレッドセーフな 可 変 の 文 字 列 文 字 の 可 変 シーケンスです System クラスには 有 用 なクラスフィールドおよびメソッドがありま す 青 山 システムズ 127

13. 基 本 パッケージ 13.1 java.langとobject java.lang.object の 主 なメソッド メソッドの 概 要 boolean equals(object obj) このオブジェクトとほかのオブジェクトが 等 しいかどうかを 示 します int hashcode() オブジェクトのハッシュコード 値 を 返 します void notify() このオブジェクトのモニターで 待 機 中 のスレッドを 1 つ 再 開 します void notifyall() このオブジェクトのモニターで 待 機 中 のすべてのスレッドを 再 開 します tostring() String オブジェクトの 文 字 列 表 現 を 返 します void wait() ほかのスレッドがこのオブジェクトの notify() メソッドまたは notifyall() メソッド を 呼 び 出 すまで 現 在 青 のスレッドを 山 システムズ 待 機 させます 128

13. 基 本 パッケージ 13.2 String == equals 同 じオブジェクトかどうかの 比 較 同 じ 文 字 列 を 保 持 しているかどうかの 比 較 青 山 システムズ 129

13. 基 本 パッケージ 13.2 String int char int int 戻 り 型 String boolean boolean String String String String String length( ) charat(int) compareto(string) compareto(object) equals(object) concat(string) replace(char, char) trim( ) メソッド substring(int) substring(int, int) indexof(string) lastindexof(string) endswith(string) startswith(string) startswith(string, int) tolowercase( ) touppercase( ) 説 明 オブジェクトの 保 有 する 文 字 数 を 返 します 指 定 されたインデックス 番 号 の 位 置 にある 文 字 を 返 します 指 定 されたインデックス 番 号 の 位 置 から 終 端 までの 文 字 列 を 返 します 第 2 引 数 が 指 定 されている 場 合 は 第 1 引 数 から 第 2 引 数 までの 文 字 列 を 返 しま す indexofでは 指 定 された 文 字 列 の 最 初 の 出 現 のインデックス 番 号 を 返 します lastindexofでは 指 定 された 文 字 列 の 最 後 の 出 現 のインデックス 番 号 を 返 し ます 呼 び 出 したStringオブジェクトの 文 字 列 が 引 数 で 指 定 した 文 字 列 で 終 わって ( 始 まって)いればtrueをかえします 第 2 引 数 がある 場 合 は それはStringオ ブジェクトの 文 字 列 の 探 索 を 開 始 する 開 始 点 (オフセット)を 意 味 します 呼 び 出 すStringオブジェクトの 文 字 列 と 引 数 の 値 を 比 較 し 等 しい 場 合 は0を Stringオブジェクトの 方 が 大 きい 場 合 は 正 の 整 数 を 小 さい 場 合 は 負 の 整 数 を 返 します 引 数 がオブジェクト 型 の 場 合 はString 型 に 変 換 され 比 較 されま す 呼 び 出 すStringオブジェクトと 引 数 の 値 を 比 較 し 等 しい 場 合 はtrueを 返 しま す 呼 び 出 すStringオブジェクトの 末 尾 に 引 数 の 文 字 列 を 付 け 加 えます 第 1 引 数 で 指 定 された 文 字 を 第 2 引 数 で 指 定 された 文 字 に 置 き 換 えます 呼 び 出 すStringオブジェクトの 両 端 の 空 白 文 字 を 削 除 します 呼 び 出 すStringオブジェクトを 小 文 字 ( 大 文 字 )に 変 換 します 青 山 システムズ 130

13. 基 本 パッケージ 13.3 StringBuilderとStringBuffer StringBuilderについて 文 字 の 可 変 シーケンスです このクラスは StringBuffer と 互 換 性 がある API を 提 供 します が 同 期 化 は 保 証 されません このクラスは 文 字 列 バッファが 単 一 のスレッド ( 一 般 的 な ケース) により 使 用 されていた 場 合 の StringBuffer の 簡 単 な 代 替 として 使 用 されるよう 設 計 されています このクラスは ほとんどの 実 装 で 高 速 に 実 行 されるので 可 能 な 場 合 は StringBuffer よりも 優 先 して 使 用 することをお 勧 めします StringBuilder の 基 本 的 なオペレーションには append メソッドおよび insert メソッドがあり これらのメソッドはどんな 種 類 のデータも 受 け 取 ることができるようにオーバーロードされてい ます メソッドはそれぞれ 与 えられたデータを 効 率 的 に 文 字 列 に 変 換 し 文 字 列 中 の 文 字 を 文 字 列 ビルダに 追 加 または 挿 入 します append メソッドは 常 に ビルダの 末 尾 に 与 えられた 文 字 を 追 加 し insert メソッドは 指 定 された 位 置 に 文 字 を 追 加 します たとえば z を 現 在 start を 含 む 文 字 列 ビルダオブジェクトと 見 なす 場 合 z.append("le") メソッド 呼 び 出 しは 文 字 列 ビルダの 内 容 が startle になるように 変 更 するのに 対 して z.insert(4, "le") というメソッド 呼 び 出 しは 文 字 列 ビルダの 内 容 が starlet になるように 作 用 します 一 般 に sb が StringBuilder のインスタンスを 参 照 している 場 合 sb.append(x) は sb.insert(sb.length(), x) と 同 じ 結 果 になります 各 文 字 列 ビルダには 容 量 があります 文 字 列 ビルダに 含 まれる 文 字 列 の 長 さが 容 量 を 超 過 しないかぎり 新 しい 内 部 バッファを 割 り 当 てる 必 要 はありません 内 部 バッファがオーバーフローする 場 合 自 動 的 に 容 量 が 増 加 しま す StringBuilder のインスタンスは 複 数 のスレッドで 使 用 するには 安 全 ではありません このよ うな 同 期 が 必 要 な 場 合 は StringBuffer を 使 用 することをお 勧 めします 青 山 システムズ 131

13. 基 本 パッケージ 13.3 StringBuilderとStringBuffer StringBufferについて スレッドセーフな 可 変 の 文 字 列 文 字 列 バッファは String と 似 ていますが 変 更 できる 点 が 異 なります 文 字 列 バッファには 常 に 文 字 列 が 格 納 されていますが 文 字 列 の 長 さと 内 容 は 特 定 のメソッドの 呼 び 出 しにより 変 更 できます 文 字 列 バッファは 複 数 のスレッドによって 安 全 に 使 用 することができます メソッドは 必 要 に 応 じて 同 期 化 され 特 定 のインスタンスでのすべてのオペレーションが 関 連 のある 個 々のス レッドによって 行 われるメソッドの 呼 び 出 しの 順 序 と 一 致 する 連 続 した 順 序 で 発 生 するように 動 作 します StringBuffer の 基 本 的 なオペレーションには append メソッドおよび insert メソッドがあり これらのメソッドはどんな 種 類 のデータも 受 け 取 ることができるようにオーバーロードされてい ます メソッドはそれぞれ 与 えられたデータを 効 率 的 に 文 字 列 に 変 換 し 文 字 列 中 の 文 字 を 文 字 列 バッファに 追 加 または 挿 入 します append メソッドは 常 に バッファの 末 尾 に 与 えられ た 文 字 を 追 加 し insert メソッドは 指 定 された 位 置 に 文 字 を 追 加 します たとえば z を 現 在 start を 含 む 文 字 列 バッファオブジェクトと 見 なす 場 合 z.append("le") は 文 字 列 バッファの 内 容 が startle になるように 変 更 するのに 対 して z.insert(4, "le") とい うメソッド 呼 び 出 しは 文 字 列 バッファの 内 容 が starlet になるように 作 用 します 一 般 に sb が StringBuffer のインスタンスを 参 照 している 場 合 sb.append(x) は sb.insert(sb.length(), x) と 同 じ 結 果 になります 処 理 にソースシーケンスが 関 連 する 場 合 (ソースシーケンスからの 追 加 や 挿 入 など) このク ラスは その 処 理 を 実 行 している 文 字 列 バッファとだけ 同 期 化 し ソースとは 同 期 化 しません 各 文 字 列 バッファには 容 量 があります 文 字 列 バッファに 含 まれる 文 字 列 の 長 さが 容 量 を 超 過 しないかぎり 新 しい 内 部 バッファ 配 列 を 割 り 当 てる 必 要 はありません 内 部 バッファが オーバーフローする 場 合 自 動 的 に 容 量 が 増 加 します JDK 5 以 降 このクラスは 単 一 のス レッド StringBuilder により 使 用 されるよう 設 計 された 等 価 のクラスで 補 足 されています StringBuilder クラスは このクラスと 同 じ 処 理 をすべてサポートしながらも 高 速 であり 同 期 を 実 行 しないので 通 常 はこのクラスに 青 山 優 システムズ 先 して 使 用 される 必 要 があります 132

13. 基 本 パッケージ 13.3 StringBuilderとStringBuffer メソッドの 概 要 StringBuilder StringBuilder StringBuilder StringBuilder StringBuilder StringBuilder StringBuilder StringBuilder append(char c) char 引 数 の 文 字 列 表 現 をこのシーケンスに 追 加 します append(char[] str) char 配 列 引 数 の 文 字 列 表 現 をこのシーケンスに 追 加 します append(char[] str, int offset, int len) char 配 列 引 数 の 部 分 配 列 の 文 字 列 表 現 をこのシーケンスに 追 加 します appendcodepoint(int codepoint) codepoint 引 数 の 文 字 列 表 現 をこのシーケンスに 追 加 します delete(int start, int end) このシーケンスの 部 分 文 字 列 内 の 文 字 をすべて 削 除 します insert(int offset, boolean b) boolean 引 数 の 文 字 列 表 現 をこのシーケンスに 挿 入 します insert(int offset, char c) char 引 数 の 文 字 列 表 現 をこのシーケンスに 挿 入 します insert(int offset, char[] str) char 配 列 引 数 の 文 字 列 表 現 をこのシーケンスに 挿 入 します 青 山 システムズ 133

13. 基 本 パッケージ 13.3 StringBuilderとStringBuffer メソッドの 概 要 StringBuilder StringBuilder StringBuilder StringBuilder StringBuilder int int StringBuilder insert(int index, char[] str, int offset, int len) insert(int offset, int i) insert(int offset, long l) length() offsetbycodepoints(int index, int codepointoffset) codepointoffset コードポイントによって 指 定 された index からのオフセットである このシーケンス 内 のインデックスを 返 します reverse() str 配 列 引 数 の 部 分 配 列 の 文 字 列 表 現 をこのシーケンスに 挿 入 します insert(int offset, double d) double 引 数 の 文 字 列 表 現 をこのシーケンスに 挿 入 します insert(int offset, float f) float 引 数 の 文 字 列 表 現 をこのシーケンスに 挿 入 します 2 番 目 の int 引 数 の 文 字 列 表 現 をこのシーケンスに 挿 入 します long 引 数 の 文 字 列 表 現 をこのシーケンスに 挿 入 します この 文 字 列 の 長 さを 返 します 青 山 システムズ 134 この 文 字 シーケンスが 逆 の 並 び 順 のシーケンスに 置 換 されます

13. 基 本 パッケージ 13.3 StringBuilderとStringBuffer メソッドの 概 要 void void setcharat(int index, char ch) 指 定 されたインデックス 位 置 の 文 字 が ch になるように 設 定 します setlength(int newlength) この 文 字 シーケンスの 長 さを 設 定 します 青 山 システムズ 135

13. 基 本 パッケージ 13.4 ラッパクラス 基 本 データ 型 byte short int long char float double boolean クラス Byte Short Integer Long Character Float Double Boolean API 仕 様 による 概 要 Byte クラスは byte 値 の 標 準 ラッパーです Short クラスは short 値 の 標 準 ラッパーです Integer クラスは プリミティブ 型 int の 値 をオブジェクト 内 にラップします Integer 型 のオブジェ クトには 型 が int の 単 一 のフィールドが 入 ります Long クラスは プリミティブ 型 long の 値 をオブジェクト 内 にラップします Long 型 のオブジェクト には 型 が long の 単 一 フィールドが 入 ります Character クラスは プリミティブ 型 char の 値 をオブジェクトにラップします Character 型 のオ ブジェクトには 型 が char の 単 一 フィールドが 入 ります Float クラスは プリミティブ 型 float の 値 をオブジェクト 内 にラップします Float 型 のオブジェクト には float 型 の 単 一 のフィールドがあります Double クラスは プリミティブ 型 double の 値 をオブジェクトにラップします 型 double のオブ ジェクトには 型 が double の 単 一 フィールドが 入 ります Boolean クラスは プリミティブ 型 boolean の 値 をオブジェクトにラップします Boolean 型 のオ ブジェクトには 型 が boolean の 単 一 フィールドが 入 ります 青 山 システムズ 136

13. 基 本 パッケージ 13.5 ボクシング アンボクシング ボクシング アンボクシングは プリミティブ 型 と 対 応 する ラッパクラス 参 照 (たとえば int と Integer)を 自 動 的 に 相 互 変 換 するものです J2SE1.4までは プリミティブ 型 とラッパクラス 参 照 を 相 互 変 換 するためには 明 示 的 にデータ 変 換 しなければいけ ませんでした コレクションにはオブジェクトしか 登 録 できないため プリ ミティブ 型 データをコレクションに 登 録 したりコレクションか ら 取 得 する 際 など 毎 回 データ 変 換 が 必 要 でした J2SE5.0では そのような 変 換 が 自 動 的 に 行 われるように なりました 青 山 システムズ 137

13. 基 本 パッケージ 13.5 ボクシング アンボクシング ボクシング 変 換 により 以 下 のようなプログラムを 記 述 することが 出 来 ます Integer i = 100; Character c = 'c';これまでプリミティブ 型 で 実 現 されていた 整 数 リテラル 代 入 時 のナ ローイング 変 換 (int short, int byteなど)は 同 時 に 行 うことができますが 数 値 のワ イドニング 変 換 (short int 等 )はコンパイルエラーとなります Byte b = 100; // 100 は int 型 リテラルであるが byte に 代 入 可 能 である short s = 10; int i = s; // OK( 暗 黙 のワイドニング 変 換 ) Integer j = s; // コンパイルエラー もちろん プリミティブ 型 で 暗 黙 的 に 変 換 できないようなケースではボクシング 変 換 で も 同 様 にコンパイルエラーとなります int i = 100; byte b = i; // byte 型 は int 型 より 表 せる 値 の 範 囲 が 狭 いため コンパイルエラー Byte bb = i; // 同 様 にコンパイルエラー 青 山 システムズ 138

13. 基 本 パッケージ 13.5 ボクシング アンボクシング アンボクシングは ラッパクラスからプリミティブ 型 への 変 換 です int i = new Integer(100); char c = new Character('c') 暗 黙 の 型 変 換 についてもボクシングの 場 合 と 同 じことが 言 えますが 暗 黙 の 型 変 換 はプリミティブ 型 のみで 起 こるという 点 には 注 意 してください int i = new Short(10); // Short short int と 変 換 される オートアンボクシングにより これまでプリミティブ 型 しか 記 述 できなかった 箇 所 にオブジェクトを 記 述 できるようになりました if 文 や for 文 while 文 などの 条 件 式 のところに Boolean 型 の 参 照 を 記 述 できますし switch...case 文 の 値 としても Integer/Short/Character/Byte 型 の 参 照 が 記 述 で きます アンボクシングを 実 行 したときに ラッパクラス 参 照 が null であれば NullPointerException が 発 生 します Inteter a = null; int b = a; // NullPointerException 発 生 青 山 システムズ 139

13. 基 本 パッケージ 13.5 ボクシング アンボクシング ボクシングとアンボクシングおよびジェネリクスを 組 み 合 わせることにより プリミティブ 型 値 を 扱 うコレクションを 操 作 するプログラムが 大 幅 に 簡 略 化 されます たとえばこれ までは 以 下 のようなプログラムを 書 いていました List list = new ArrayList(); list.add(new Integer(100)); list.add(new Integer(200)); int a = ((Integer) list.get(0)).intvalue(); int b = ((Integer) list.get(1)).intvalue(); これが J2SE5.0 では 次 のように 書 くことができます List<Ingeter> list = new ArrayList<Integer>(); list.add(100); // ボクシング list.add(200); int a = list.get(0); // アンボクシング int b = list.get(1); 青 山 システムズ 140

13. 基 本 パッケージ 13.6 ロケールと 数 値 通 貨 のフォーマット コンストラクタの 概 要 Locale(String language) 言 語 コードからロケールを 構 築 します Locale(String language, String country) 言 語 国 からロケールを 構 築 します Locale(String language, String country, String variant) 言 語 国 バリアントからロケールを 構 築 します メソッドの 概 要 static Locale String String getdefault() Java 仮 想 マシンのこのインスタンスに 対 して デフォルトロケールの 現 在 の 値 を 取 得 します getdisplaycountry() ユーザへの 表 示 に 適 した ロケールの 国 の 名 前 を 返 します getdisplaylanguage() ユーザへの 表 示 に 適 した ロケールの 言 語 の 名 前 を 返 します 青 山 システムズ 141

13. 基 本 パッケージ 13.6 ロケールと 数 値 通 貨 のフォーマット メソッドの 概 要 String String Currency static NumberFormat int int int format(double number) フォーマットの 特 殊 化 です format(long number) フォーマットの 特 殊 化 です getcurrency() 通 貨 値 のフォーマット 時 に この 数 値 フォーマットが 使 用 する 通 貨 を 取 得 します getcurrencyinstance() 現 在 のデフォルトロケールに 対 する 通 貨 フォーマットを 返 しま す getmaximumfractiondigits() 数 値 の 小 数 部 分 として 可 能 な 最 大 桁 数 を 返 します getmaximumintegerdigits() 数 値 の 整 数 部 分 として 可 能 な 最 大 桁 数 を 返 します getminimumfractiondigits() 青 山 システムズ 142 数 値 の 小 数 部 分 として 可 能 な 最 小 桁 数 を 返 します

13. 基 本 パッケージ 13.6 ロケールと 数 値 通 貨 のフォーマット メソッドの 概 要 int Number void getminimumintegerdigits() 数 値 の 整 数 部 分 として 可 能 な 最 小 桁 数 を 返 します parse(string source) 指 定 された 文 字 列 の 先 頭 からテキストを 解 析 して 数 値 を 生 成 します setcurrency(currency currency) 通 貨 値 のフォーマット 時 に この 数 値 フォーマットが 使 用 する 通 貨 を 設 定 します 青 山 システムズ 143

13. 基 本 パッケージ 13.6 ロケールと 数 値 通 貨 のフォーマット メソッドの 概 要 static Currency static Currency String getinstance(locale locale) 指 定 されたロケールの 国 の Currency インスタンスを 返 します getinstance(string currencycode) 指 定 した 通 貨 コードの Currency インスタンスを 返 します tostring() その 通 貨 の ISO 4217 通 貨 コードを 返 します 青 山 システムズ 144

13. 基 本 パッケージ 13.7 日 付 を 扱 うクラス java.util.date java.util.calendar java.text.dataformat 日 付 を 表 すクラス 日 付 を 表 すabstractクラス 日 付 のフォーマットを 表 すabstract クラス 青 山 システムズ 145

13. 基 本 パッケージ 13.7 日 付 を 扱 うクラス Dateの 主 なコンストラクタとメソッド Date() Date(long date) boolean equals(object obj) long gettime() void settime(long time) String tostring() Date オブジェクトを 割 り 当 て 初 期 化 します Date オブジェクトを 割 り 当 て 初 期 化 します 2 つの 日 付 が 等 しいかどうかを 比 較 します Date オブジェクトで 表 される 1970 年 1 月 1 日 00:00:00 GMT か らのミリ 秒 数 を 返 します Date オブジェクトを 1970 年 1 月 1 日 00:00:00 GMT から time ミリ 秒 の 時 点 を 表 すように 設 定 します Date オブジェクトを 次 の 形 式 の String に 変 換 します 青 山 システムズ 146

13. 基 本 パッケージ 13.7 日 付 を 扱 うクラス Calendarの 主 なメソッド メソッドの 概 要 boolean int Date void void equals(object obj) gettime() この Calendar を 指 定 された Object と 比 較 します getfirstdayofweek() 週 の 最 初 の 日 が 何 であるかを 取 得 します この Calendar の 時 刻 値 ( エポック からのミリ 秒 単 位 のオフセット) を 表 す Date オブ ジェクトを 返 します set(int year, int month, int date, int hourofday, int minute) カレンダフィールド YEAR MONTH DAY_OF_MONTH HOUR_OF_DAY および MINUTE の 値 を 設 定 します settime(date date) この Calendar の 時 間 を 指 定 された Date に 設 定 します String tostring() カレンダの 文 字 列 表 現 を 返 します 青 山 システムズ 147

13. 基 本 パッケージ 13.7 日 付 を 扱 うクラス DataFormatの 主 なメソッド メソッドの 概 要 String static DateFormat static DateFormat static DateFormat Date format(date date) Date を 日 付 / 時 刻 文 字 列 にフォーマットします getdateinstance() デフォルトのロケールに 対 し デフォルトのフォーマットスタイル を 持 つ 日 付 フォーマッタを 取 得 します getdateinstance(int style) デフォルトのロケールに 対 し 指 定 されたフォーマットスタイルを 持 つ 日 付 フォーマッタを 取 得 します getdateinstance(int style, Locale alocale) 指 定 されたロケールに 対 し 指 定 されたフォーマットスタイルを 持 つ 日 付 フォーマッタを 取 得 します parse(string source) 指 定 された 文 字 列 の 先 頭 からテキストを 解 析 して 日 付 を 生 成 し ます 青 山 システムズ 148

13. 基 本 パッケージ 13.8 Math Math クラスは 指 数 関 数 対 数 関 数 平 方 根 および 三 角 関 数 といった 基 本 的 な 数 値 処 理 を 実 行 するためのメソッドを 含 んで います 青 山 システムズ 149

13. 基 本 パッケージ 13.8 Math 省 略 青 山 システムズ 150

14.コレクションとジェネリックス 14.1 コレクション コレクションとは 複 数 の 要 素 の 集 まりを 言 います コレクション フ レームワークとはその 要 素 の 集 まりを 操 作 管 理 するための 方 法 を 定 義 したアーキテクチャです Javaでは コレクション フレームワー クはインタフェースをベースに 設 計 されています 青 山 システムズ 151