String - 文字列
2009 年 10 月 9 日7ADD2116 佐藤洋輔
はじめに 各自の「 Java 」フォルダの中に、
「 String 」フォルダを作ってください。 手順: 1. 「 Tera Term 」を起動 2. 「 cd Java 」と入力 3. 「 mkdir String 」と入力 4. 「 cd String 」と入力
1. 文字列の生成( 1 ) String とは? →文字列を入れる型。 文字列は「” ”」で囲む。 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[]){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) 出力結果は「情報メデ」・・・
a.indexOf( デ ) 出力結果は「3」・・・
0
→
1
→
2
→
3→
4
→
5
→
6
→
←
0←
1
←
2
←
3
←
4
←
5
演習②( 1 )(テキストの演習 3 )
文字列 “259-1292 神奈川県平塚市北金目 1117” について
1. 何文字あるか数えよ。 2. 3 文字目を表示せよ。 3. 郵便番号だけを表示せよ。 4. 県名だけを表示せよ。 5. 県名だけを除いて表示せよ。
演習②( 2 )
演習② 解答例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[]){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(); byte の配列から文字列への変換 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 」を作りなさい。
kiknkiknkiknkiknkiknkiknkikn kiknkiknkiknkikn kiknkiknkikn kiknkikn kiknkiknkiknkiknkikn kiknkiknkiknkiknkiknkikn kiknkiknkiknkiknkikn kiknkikn kiknkiknkikn kiknkiknkiknkikn kikn kiknkiknkiknkiknkiknkikn
実行例)$ java Display kikn
出力結果例)
宿題②(オリジナル) 任意の文字列を入力し、そこに「 moj
i 」という文字列があった場合は「 true 」を表示し、無かった場合は「 false 」を表示する「 Moji.java 」を作りなさい。
実行例)$ java Moji abcdefgmojihij
出力結果例)true
宿題③(オリジナル) 下記の配列を小さい順に表示する
「 Hairetsu.java 」を作りなさい。 ただし、必ず for 文と if 文を使うこと。
{ 12, 67, 6, 29, 77, 41 }
実行例)$ java Hairetsu
出力結果例)61229416777