Javaのお勉強その13
- クラス2
メソッド内でクラスとオブジェクトの生成を同時に行う。以下の例ではインタフェースをmain内で実装し、オブジェクトを作成している。引数にnewを渡して関数を呼ぶことも無名クラスを利用したことになる。
interface IF{ void method(); } class mumei{ public static void main(String[] args){ IF ifobj = new IF(){ public void method(){ System.out.println("Hello,java"); } }; ifobj.method(); } }
結果は次の通り。
Hello,java
- Scanner
java.util.Scannerは入力の読み込みに使われる。
Scanner sc = new Scanner(入力ファイルパスor入力ストリームor文字列オブジェクト)
標準入力からの読み込みを行う場合はScannerの引数にSystem.inを与える。
Scannerには区切りを表す文字(","などのStringまたはPattern)を引数に取り、その結果をScannerに戻すメソッドuseDelimiterというメソッドがある。
Scannerの検索メソッド String findInLine(Pattern p) pで指定されるパターンを検索し、見つけたものを戻す。なければnullを戻す String findInLine(Pattern p) pで指定される文字列を検索し、見つけたものを戻す。なければnullを戻す boolean hasNext(Pattern p) 次に読み込むべきものがpで指定されるパターンであればtrueを戻す。 String next(Pattern p) pで指定されるパターンに一致するものを読み込んで戻す。 - 正規表現
正規表現を使うときにはjava.util.regex.*(PatternとMatcher)をimportする必要がある。
パターンは文字列検索に用いることができる。Patternオブジェクトの作成は次の形式で作成される。Matcherオブジェクトはpで指定した正規表現を検索するためのオブジェクトである。
Pattern p = Pattern.complile("ABA"); Matcher m = p.matcher("abcABABAdABA")
Matcherクラスのメソッドの代表例 boolean find() 正規表現に一致したものがあればtrueを返す。 int start() 見つかったパターンの先頭インデックスを返す。 String group() 見つかったパターンに該当した文字列を返す。 正規表現の例 . 任意の文字 \d 数字 \s 空白文字 c? cが1or0回 \w アルファベット、数字、アンダーバーのいずれか c* cが0回以上 c+ cが1回以上 ScannerクラスのfindInLineによりパターンの検索ができる。
StringにはString[] split(String s)というメソッドがある。sには正規表現を指定することもできる。