String - 文字列 2009年10月9日 7ADD2116 佐藤洋輔
はじめに 各自の「Java」フォルダの中に、「String」フォルダを作ってください。 手順: 1. 「Tera Term」を起動 2. 「cd Java」と入力 3. 「mkdir String」と入力 4. 「cd String」と入力
1. 文字列の生成(1) Stringとは? →文字列を入れる型。 文字列は「” ”」で囲む。 intやbyteとは違い、大文字で始まる。 →文字列を入れる型。 文字列は「” ”」で囲む。 intやbyteとは違い、大文字で始まる。 例)String a = "abc";
1. 文字列の生成(2) 「Append.java」を実行してみましょう。
2. 文字列の比較(1) 数値の場合は「a == b」のように表記し比較するが、文字列の場合はそうはいかない。 そこで比較用のメソッド「equals()」を使う。 例)a.equals(b) 文字列aとbが等しいなら true
2. 文字列の比較(2) 「Equal.java」を実行してみましょう。
演習①(テキストの演習2) Equal.javaを(equalsを用いて)書き換え、以下のような結果になるEqual2.javaを作りなさい。
演習① 解答例 public class Equal2{ public static void main(String argv[]){ 演習① 解答例 public class Equal2{ public static void main(String argv[]){ String s1 = "Takuma"; String s2 = "Akito"; String s3 = "Takuma"; String s4 = new String(s1); System.out.println(s1 + "==" + s2 + " : " +(s1 == s2)); System.out.println(s1 + "==" + s1 + " : " +(s1 == s1)); System.out.println(s1 + "==" + s3 + " : " +(s1 == s3)); System.out.println(s1 + "==" + s4 + " : " +s1.equals(s4)); }
3. 文字列の操作(1) a,bをStringとしたとき、 a.length() 文字列aの長さを求める。 a.charAt(int i) 文字列aのi番目の文字を求める。 a.indexOf(String x) 文字列aの最初に文字xが現れる場所を求める。 a.substring(int i, int j) 文字列aのi番目からj番目までの部分文字列を求める。
3. 文字列の操作(2) │情│報│メ│デ│ィ│ア│ 「情報メディア」という文字列があったとして、これを「substring」で指定したときと「indexOf」で指定したときとでは示している位置が異なる。 a.substring(0, 4)・・・出力結果は「情報メデ」 0→ 1→ 2→ 3→ 4→ 5→ 6→ │情│報│メ│デ│ィ│ア│ ←0 ←1 ←2 ←3 ←4 ←5 a.indexOf(デ)・・・出力結果は「3」
演習②(1)(テキストの演習3) 文字列 “259-1292神奈川県平塚市北金目1117” について 1. 何文字あるか数えよ。 2. 3文字目を表示せよ。 3. 郵便番号だけを表示せよ。 4. 県名だけを表示せよ。 5. 県名だけを除いて表示せよ。
演習②(2)
演習② 解答例 public class Tokai{ public static void main(String argv[]){ 演習② 解答例 public class Tokai{ public static void main(String argv[]){ String a = "259-1292神奈川県平塚市北金目1117"; System.out.println(a); System.out.println("文字列の長さ:" + a.length() + "文字"); System.out.println("3文字目:" + a.charAt(2)); System.out.println("郵便番号:" + a.substring(0, 8)); System.out.println("県名:" + a.substring(8, 12)); System.out.println("県名以外:" + a.substring(0, 8) + a.substring(12, 22)); }
4. 文字列の走査(1) charAtを使うと文字列を一文字づつ分解することが出来る。 例)s="abc"を s.charAt(0) + s.charAt(1) + s.charAt(2) と書くと“abc” が表示される。
4. 文字列の走査(2) 「Forward.java」を実行してみましょう。
演習③(テキストの演習4) Forwardを修正し、入力文字を逆順にするReverse.javaを書きなさい。
演習③ 解答例 public class Reverse{ public static void main(String argv[]){ 演習③ 解答例 public class Reverse{ public static void main(String argv[]){ String s = argv[0]; int i; for(i = s.length()-1; i > -1; --i){ System.out.print(s.charAt(i)); } System.out.println();
5. バイト配列 String sからbyteの配列b[]への変換 byte b[] = s.getBytes(); String s = new String(b); 整数(int a)から文字列への変換 String s = new String(a); (もしくは, String s = "" + a;) 文字列から整数への変換 int a = Integer.parseInt(s);
6. 多次元配列 int x[][] = {{1, 2}, {3, 4}}; これは2行2列の行列を表現している。 x[0][0] = 1, x[0][1] = 2, x[1][0] = 3, x[1][1] = 4 のように初期化される。 x[0]は {1,2} という整数の配列であり、x[1]は{3,4}の配列である。
宿題① テキストの宿題3 入力した単語を以下のように表示する「Display.java」を作りなさい。 出力結果例) 実行例) $ java Display kikn kiknkiknkiknkiknkiknkikn kikn kiknkiknkiknkikn kikn kiknkikn kiknkikn kiknkikn kiknkiknkikn kiknkiknkikn
宿題②(オリジナル) 任意の文字列を入力し、そこに「moji」という文字列があった場合は「true」を表示し、無かった場合は「false」を表示する「Moji.java」を作りなさい。 実行例) $ java Moji abcdefgmojihij 出力結果例) true
宿題③(オリジナル) 下記の配列を小さい順に表示する「Hairetsu.java」を作りなさい。 ただし、必ずfor文とif文を使うこと。 { 12, 67, 6, 29, 77, 41 } 出力結果例) 6 12 29 41 67 77 実行例) $ java Hairetsu