プログラミング言語

【Javaコード入門】enum型(列挙型)_③コンストラクター/フィールド/メソッドの定義

列挙型もまたクラスの一種ですから、配下にコンストラクターやフィールド/メソッドを定義することも可能です。 WeekdayEnum.java public enum WeekdayEnum { Sunday("sun"), Monday("mon"), Tuesday("tue"), Wednesday("wed"), Thursday("thu"), Friday("fr…

【Javaコード入門】enum型(列挙型)_②列挙型のメソッド

列挙型は、暗黙的にEnumクラス(java.langパッケージ)を継承したクラスの一種です。そして、列挙定数を参照した「WeekdayEnum.Sunday」は、Enumオブジェクトです。Enumオブジェクトでは、以下のようなメソッドを利用できます。 Enumクラスのメソッド メソッ…

【Javaコード入門】enum型(列挙型)_①列挙型を定義する – enum型

列挙型を定義する – enum型 [modifier] enum name { member, …} modifier:修飾子(public、strictfpのみ) name:列挙型の名前 member:列挙定数 列挙型の宣言には、enumキーワードを利用します。enumブロックの配下に、名前(列挙定数)をカンマ区切りで列…

【Javaコード入門】例外処理

例外(exception)とは、アプリケーションを実行した時に発生する異常な状態、エラーのことを言います。Javaでは例外はクラスとして表されます。 例外処理_目次 例外処理 try…catch命令 finally句 throw命令

【Javaコード入門】例外処理_④throw命令

例外をスローする – throw命令 throw exclazz exclazz:例外オブジェクト 例外はキャッチ(捕捉)するばかりでなく、自分で投げることもできます(これを「例外をスローする」と言います)。メソッドの中で例外をスローする際には、メソッド定義でもthrows句…

【Javaコード入門】例外処理_③finally句

例外の有無に関わらず、処理を実行する – finally句 try { tstatements} catch(exclazz ex) { cstatements} finally { fstatements} tstatements:例外が発生する可能性がある処理 exclazz:例外クラス ex:例外クラスを表す変数名 cstatements:例外が発生…

【Javaコード入門】例外処理_②try…catch命令

例外を処理する – try…catch命令 try {tstatements} catch(exclazz ex) {cstatements} tstatements:例外が発生する可能性がある処理 exclazz:例外クラス ex:例外クラスを表す変数名 cstatements:例外が発生した時に実行される処理 コードの中で発生する…

【Javaコード入門】例外処理_①例外処理

以下は、例外オブジェクトの階層構造です。 Object┗Throwable ┣Error ┃┗エラー例外 ┗Exception ┣RuntimeException ┃┗実行時例外(非検査例外) ┗検査例外 例外は、大きく(1)エラー例外、(2)実行時例外、(3)検査例外に分類できます。エラー例外は、仮想…

【Javaコード入門】ストリーム

Javaでデータの入出力を行うには、ストリームというしくみを利用するのが一般的です。 ストリーム_目次 ストリーム FileInputStream/FileOutputStreamクラス InputStreamReader/OutputStreamWriterクラス BufferedReader/BufferedWriterクラス ObjectInpu…

【Javaコード入門】ストリーム_⑥Fileクラス

ファイルの操作 – Fileクラス File(String path) path:ファイルのパス Fileクラスは、フォルダー/ファイルの情報を管理すると共に、フォルダー/ファイルを操作するための手段を提供するクラスです。FileInputStream/FileOutputStreamなど、ファイルを扱…

【Javaコード入門】ストリーム_⑤ObjectInputStream/ObjectOutputStreamクラス

オブジェクトの保存 – ObjectInputStream/ObjectOutputStreamクラス ObjectInputStream(InputStream in)ObjectOutputStream(OutputStream out) in:入力ストリーム out:出力ストリーム Javaでは、Objectをシリアライズすることで、バイトストリームに出力…

【Javaコード入門】ストリーム_④BufferedReader/BufferedWriterクラス

バッファリング処理 – BufferedReader/BufferedWriterクラス BufferedReader(Reader in [,int sz])BufferedWriter(Writer out [,int sz]) in:入力ストリーム out:出力ストリーム out:出力ストリーム バッファリング処理とは、書き込み時であればデータを…

【Javaコード入門】ストリーム_③InputStreamReader/OutputStreamWriterクラス

テキストファイルの操作 – InputStreamReader/OutputStreamWriterクラス InputStreamReader(InputStream in [,String char])OutputStreamWriter(OutputStream out [,String char]) in:入力ストリーム out:出力ストリーム char:文字コード(UTF-8、EUC_JP…

【Javaコード入門】ストリーム_②FileInputStream/FileOutputStreamクラス

バイナリファイルの操作 – FileInputStream/FileOutputStreamクラス FileInputStream(String name)FileOutputStream(String name [,boolean append]) name:ファイルのパス append:追記モードで開くか 画像などのバイナリファイルを読み書きするには、File…

【Javaコード入門】ストリーム_①ストリーム

Javaでデータの入出力を行うには、ストリームというしくみを利用するのが一般的です。ストリームとは、データを受け渡しするための手続きを抽象化したもので、データの種類、入出力の別で、以下のように分類できます。 ストリームの分類 入力 出力 文字デー…

【Javaコード入門】コレクションフレームワーク

コレクションフレームワークとは、コレクション(オブジェクトの集合)を操作するために用意されたJava標準のAPIです。 コレクションフレームワーク_目次 コレクションフレームワーク コレクションを初期化する synchronizedList/synchronizedMap/synchron…

【Javaコード入門】コレクションフレームワーク_⑫ArrayDeque

キュー/スタック構造 – ArrayDequeクラス ArrayDequeは両端キューとも呼ばれ、先頭末尾の双方から要素を出し入れできるキューの実装です。ArrayDequeを利用することで、キュー(FIFO:First In First Out)やスタック(LIFO:Last In First Out)といったデ…

【Javaコード入門】コレクションフレームワーク_⑪HashSet

重複を許さない要素の集合 – HashSet HashSetは、要素の重複を許可しない集合構造を表します。また、順番も持ちません。数学での集合にもよく似た構造と考えて良いでしょう。HashSetクラスで利用できるメソッドには、以下のようなものがあります。 HashSetク…

【Javaコード入門】コレクションフレームワーク_⑩NavigableMap

近接したキーを取得するためのマップ – NavigableMapインターフェイス NavigableMapは、指定されたキーに近接したキーを取得するための機能を備えたマップです。NavigableMapを利用することで、たとえば指定されたキー周辺のキーを取得したい、というような…

【Javaコード入門】コレクションフレームワーク_⑨TreeMap

キーに順序を持ったマップ – TreeMapクラス TreeMapもまた、HashMap同様、要素をキーと値の組み合わせで管理するデータ構造ですが、キーの持ち方が異なります。HashMapではキーの順番を保証しないのに対して、TreeMapではキーを自動的にソートし、順序を保証…

【Javaコード入門】コレクションフレームワーク_⑧HashMap

キー/値のペアを表すマップ – HashMapクラス マップは、リストやセット、キューと異なり、キーと値の組み合わせで要素を管理します。HashMapは、マップの実装クラスの中でも最も基本的なクラスです。キーは重複できず、また順番を持ちません。HashMapクラス…

【Javaコード入門】コレクションフレームワーク_⑦LinkedList

リンク構造のリスト – LinkedListクラス LinkedListは、要素同士を前後双方向のリンクで参照するリンクリストを表します。その性質上、要素の挿入/削除はリンクの付け替えで済むため、ArrayListに較べても高速です。反面、インデックス値によるランダムなア…

【Javaコード入門】コレクションフレームワーク_⑥toArrayメソッド

リストから配列に変換する – toArrayメソッド public T toArray(T a) T:任意の型 a:変換先の配列 リストから配列に変換するには、toArrayメソッドを利用します。引数aにリストの内容が入らない場合には、すべての要素が入るような配列を生成します。リスト…

【Javaコード入門】コレクションフレームワーク_⑤asListメソッド

配列からリストに変換する – asListメソッド public static List asList(T… a) T:任意の型 a:変換する配列 Javaには、言語仕様に組み込まれたしくみとして、配列が用意されています。しかし、お作法的には、まずはコレクションフレームワークを優先して利…

【Javaコード入門】コレクションフレームワーク_④ArrayListクラス

可変長配列を利用する – ArrayListクラス ArrayListは、内部的には配列を利用したリスト構造です。標準的な配列と異なる点は、サイズを後からでも変更できる点です。その性質上、インデックス値による値の読み書きは高速ですが、要素の挿入/削除は、配列サ…

【Javaコード入門】コレクションフレームワーク_③synchronizedList/synchronizedMap/synchronizedSetメソッド

コレクションをマルチスレッド環境でも利用できるようにする – synchronizedList/synchronizedMap/synchronizedSetメソッド public static <T> List<T> synchronizedList(List<T> list)public static <K,V> Map<K,V> synchronizedMap(Map<K,V> m)public static <T> Set<T> synchronizedSe</t></t></k,v></k,v></k,v></t></t></t>…

【Javaコード入門】コレクションフレームワーク_②コレクションを初期化する

匿名クラスと初期化ブロックの構文を利用することで、インスタンス化に際してまとめて配下の要素をセットできます。 CollInit.java package com.example.mynavi.collection; import java.util.ArrayList; import java.util.List; public class CollInit { pu…

【Javaコード入門】コレクションフレームワーク_①コレクションフレームワーク

コレクションフレームワークとは、コレクション(オブジェクトの集合)を操作するために用意されたJava標準のAPIです。用途に応じて、リスト(List)、Set(セット)、Map(マップ)、Queue(キュー)といったインターフェイスを使い分けることができます。…

【Javaコード入門】修飾子

修飾子とは、クラスやインターフェイス、また、そのメンバーの性質を決めるキーワードで、それぞれの宣言の先頭に付与できます。 修飾子_目次 修飾子 アクセス修飾子 abstract修飾子 static修飾子 final修飾子 sealed/non-sealed修飾子 transient修飾子 vol…

【Javaコード入門】修飾子_⑪strictfp修飾子

浮動小数点数を厳密に処理する – strictfp修飾子 strictfp修飾子は、浮動小数点数をIEEE 754という規格で決められたルールで厳密に処理するためのキーワードです。strictfp修飾子を指定しない場合(デフォルト)、JavaはCPUの機能を使って浮動小数点数を演算…

【Javaコード入門】修飾子_⑩native修飾子

ネイティブメソッドを宣言する – native修飾子 native修飾子は、そのメソッドがネイティブメソッドである(Java以外の言語で実装されている)ことを示します。よって、native修飾子が指定された場合には、メソッド定義でも本体は省略し、中身は改めてCなどの…

【Javaコード入門】修飾子_⑨synchronized修飾子

メソッドを同期実行する – synchronized修飾子 マルチスレッド環境で、共通のデータを操作する際には要注意です。というのも、共有データに対して複数のスレッドが同時に処理を実行した場合、値に矛盾が生じる可能性があるからです。そのような場合には、syn…

【Javaコード入門】修飾子_⑧volatile修飾子

フィールド値のキャッシュを抑制する – volatile修飾子 マルチスレッド環境では、性能の向上を図るために、それぞれのスレッドがフィールド値を個別にキャッシュすることがあります。スレッドが元のメモリーを読み書きする手間を省くことで、性能の向上を図…

【Javaコード入門】修飾子_⑦transient修飾子

シリアライズの対象から除外する – transient修飾子 オブジェクトをバイト配列に変換することをシリアライズと言います。オブジェクトをファイルやデータベースに保存したり、ネットワーク経由で送受信したりするために利用します。Javaでは、デフォルトでオ…

【Javaコード入門】修飾子_⑤final修飾子

メンバーの上書きを禁止する – final修飾子 final修飾子は、メンバーの上書きを禁止します。メソッドであればサブクラスでのオーバーライドを禁止しますし、フィールドであれば値の再代入を禁止します。また、クラスであればextends句による継承を禁止します…

【Javaコード入門】修飾子_④static修飾子

静的メンバーを定義する – static修飾子 クラスのメンバーにstatic修飾子を付与すると、クラスをインスタンス化しなくてもアクセスできるようになります。具体的には「クラス名.メンバー名」の形式でアクセスできます。このようなメンバーのことを静的メンバ…

【Javaコード入門】修飾子_③abstract修飾子

抽象メソッド/抽象クラスを定義する – abstract修飾子 抽象メソッドとは、本体がなく、シグニチャ(メソッド名や引数、戻り値)だけで構成されるメソッドで、abstract修飾子を付与して定義します。その性質上、そのままでは利用できませんので、サブクラス…

【Javaコード入門】修飾子_②アクセス修飾子

アクセス修飾子とは、public、protected、privateといった修飾子の総称で、クラスやそのメンバーがどこからアクセス可能であるかを決定します。 アクセス修飾子 アクセス修飾子 概要 public すべてのクラスからアクセスできる protected 現在のクラスとサブ…

【Javaコード入門】修飾子_①修飾子

指定できる修飾子は、対象によって決まっていますので、以下に指定の可否をまとめておきます。 Javaで利用できる修飾子(C:クラス、I:インターフェイス、M:メソッド、F:フィールド、Cn:コンストラクター) 修飾子 C I M F Cn アクセス修飾子 ○ ○ ○ ○ ○ …

【Javaコード入門】修飾子_⑥sealed/non-sealed修飾子

継承可能なクラスを制限する - sealed/non-sealed修飾子 従来のJavaでは、継承そのものを常に許可するか(デフォルト)、完全に禁止するか(final修飾子)しかできませんでした。しかし、Java 17で導入された#シールクラス#(*)を利用することで、特定…

【Javaコード入門】継承、インターフェイス

本節では、元となるクラスの機能を引き継ぎながら新たなクラスを定義する「継承」、そして、クラスが持つべき機能(群)を規定するためのしくみである「インターフェイス」について解説します。 継承、インターフェイス_目次 extendsキーワード interface命…

【Javaコード入門】継承、インターフェイス_⑤ラムダ式を利用する

(type args, …) -> { statements } type:引数の型 args:引数の名前 statements:処理本体 ラムダ式はJava 8から導入された構文で、大雑把にいうならば、メソッドをシンプルに表すための構文です。例えば、「無名クラスを定義する」項の無名クラスをラムダ…

【Javaコード入門】継承、インターフェイス_④無名クラスを定義する

無名クラスを定義する new clazz() { definition }new interfaze() { definition } clazz:スーパークラスの名前 interfaze:インターフェイスの名前 definition:無名クラスの定義 無名クラス(匿名クラス)を利用することで、クラスやインターフェイスの継…

【Javaコード入門】継承、インターフェイス_③implementsキーワード

インターフェイスを実装する – implementsキーワード [modifier] class name implements iname,… { definition} modifier:修飾子 name:クラス名 iname:インターフェイス名 definition:メンバーの定義 インターフェイスを継承してクラスを定義することを…

【Javaコード入門】継承、インターフェイス_②interface命令

インターフェイスを定義する – interface命令 [modifier] interface name { definition} modifier:修飾子 name:インターフェイス名 definition:メンバーの定義 インターフェイスとは、ある特定の機能を実現するために必要なメソッドのシグニチャ(名前や…

【Javaコード入門】継承、インターフェイス_①extendsキーワード

クラスを継承する – extendsキーワード [modifier] class name extends sname { definition} modifier:修飾子 name:サブクラスの名前 sname:スーパークラスの名前 definition:メンバーの定義 継承(Inheritance)とは、あるクラスの機能を引き継ぎながら…

【Javaコード入門】オブジェクト指向構文

オブジェクト指向言語であるJavaにおいて、オブジェクトのもと(設計図)となるクラスはコードの基本的な単位とも言える概念です。Javaアプリは、クラスの集合体である、と言っても良いでしょう。 オブジェクト指向構文_目次 class命令 new演算子 フィールド…

【Javaコード入門】オブジェクト指向構文_⑫モジュール

モジュールとは、パッケージを束ねるための単位です。Java 9で追加されました。 モジュールを利用することで、配下のパッケージに対するアクセス権限をより細かに設定できるようになります。具体的には、 現在のモジュールの中でだけpublic 特定のモジュール…

【Javaコード入門】オブジェクト指向構文_⑪ネストしたクラスを定義する

クラスは、classブロックの配下に入れ子で定義することもできます。これをネストクラスと呼びます。ネストクラスは、更に以下のように分類できます。 ネストクラス┣staticメンバークラス┗インナークラス(内部クラス) ┣非staticメンバークラス:メンバーク…

【Javaコード入門】オブジェクト指向構文_⑩import static命令

クラスメソッド/フィールドをインポートする – import static命令 import static pname.clazz.memberimport static pname.clazz.* pname:パッケージ名 clazz:クラス名 member:メンバー名 import static命令を利用することで、クラスのメンバーをクラス名…

``