文字列
- 文字列の比較はequalsメソッド
System.out.println("hello" == new String("hello") ? "yes" : "no"); // no System.out.println("hello".equals(new String("hello")) ? "yes" : "no"); // yes
- 文字列配列の連結
String.join(",", args);
- intに変換
Integer.parseInt("100")*2;
- 配列の長さはlengthプロパティ、文字列の長さはlengthメソッドなので注意。
配列.length 文字列.length()
- 正規表現
変数.matches(パターン)
ex)boolean isMatche = name.matches("[A-Z][0-9]{7}");
- 文字列の分割
変数.split(パターン)
ex)String[] words = word.split("[,;]");
- 文字列置換
変数.replace(文字列, 文字列)
変数.replaceAll(パターン, 文字列)
- 書式整形
Srting s = String.format("%05d %s", var1, var2);
出力する場合はSystem.out.printfを使う。System.out.printft("%05d %s", var1, var2);
コレクション
Listインターフェース
java.util.ArrayListクラス: サイズ指定不要な配列
ArrayList<String> names = new ArrayList<String>();
names.add("山田");
System.out.println(names.get(0));
配列との違い
コレクションフレームワークはインスタンスしか格納することができないため、プリミティブ型はラッパークラスを使う必要がある。
ただし、Javaにはラッパークラスのインスタンスとプリミティブ型データを自動変換するオートボクシングという機能が備わっているため、いちいちInteger.valueOf(1)のようにする必要はない。
そのため、型の宣言はジェネリクスでIntegerを指定するが、int型の値を追加することができる。
ArrayList<Integer> nums = new ArrayList<Integer>();
nums.add(100);
nums.add(333);
for (int number: numbers) {
System.out.println(number);
}
Setインターフェース
java.util.HashSetクラス
- 要素を重複なく格納する。
- 基本的には順序はない。
- 順序がないのでgetやsetメソッドは存在しない。 要素の取得は拡張for分を使って1つずつ取り出す。
HashSet<String> colors = new HashSet<String>();
colors.add("赤");
colors.add("青");
colors.add("青");
for (String color: colors) {
System.out.println(color); // 赤 青
}
}
Mapインターフェース
要素をkeyとvalueのペアとして格納する。
java.util.HashMapクラス
- <String, Integer>のようにジェネリクスでキーと値の型を指定する。
- 順序はない。
HashMap<String, Integer> map = new HashMap<String, Integer>();
map.put("hoge1", 100);
map.put("hoge2", 333);
System.out.println(map.get("hoge2"));
Mapは拡張for文を使うことができないので、keySetメソッドで取得したキーの配列を拡張for文で回すのが一般的。
for (String key: map.keySet()) {
System.out.println(map.get(key));
}
ファイルの読み書き
ファイル読み込み
FileReader fr= null;
try {
fr = new FileReader("./SukkiriwakaruJava/MANIFEST.MF");
int input;
while ((input = fr.read()) != -1) {
System.out.print((char)input);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (fr != null) {
try {
fr.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
ファイル書き込み
FileWriter fw= null;
try {
fw = new FileWriter("test.txt");
fw.write("おはよう");
} catch (Exception e) {
e.printStackTrace();
} finally {
if (fw != null) {
try {
fw.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
WEBページ取得
InputStream is = null;
InputStreamReader isr = null;
try {
URL u = new URL("https://google.com");
is = u.openStream();
isr = new InputStreamReader(is, "UTF-8");
int input;
while ((input = isr.read()) != -1) {
System.out.print((char)input);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (is != null) {
try {
is.close();
} catch (Exception e) {
e.printStackTrace();
}
}
if (isr != null) {
try {
isr.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}