String

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 +
System.out.println(s1 +
System.out.println(s1 +
System.out.println(s1 +
"=="
"=="
"=="
"=="
+
+
+
+
s2
s1
s3
s4
+
+
+
+
"
"
"
"
:
:
:
:
"
"
"
"
+(s1 == s2));
+(s1 == s1));
+(s1 == s3));
+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)・・・出力結果は「情報メデ」
→
→
→
6
5
→
4
3
→
2
→
1
→
0
│情│報│メ│デ│ィ│ア│
4
←
3
←
a.indexOf(デ)・・・出力結果は「3」
2
←
1
←
←
←
0
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」を作りなさい。
実行例)
$ java Display kikn
出力結果例)
kiknkiknkiknkiknkiknkikn
kikn kiknkiknkiknkikn kikn
kiknkikn kiknkikn kiknkikn
kiknkiknkikn
kiknkiknkikn
kiknkiknkikn
kiknkiknkikn
kiknkikn kiknkikn kiknkikn
kikn kiknkiknkiknkikn kikn
kiknkiknkiknkiknkiknkikn
宿題②(オリジナル)

任意の文字列を入力し、そこに「moji」とい
う文字列があった場合は「true」を表示し、
無かった場合は「false」を表示する
「Moji.java」を作りなさい。
実行例)
$ java Moji abcdefgmojihij
出力結果例)
true
宿題③(オリジナル)


下記の配列を小さい順に表示する
「Hairetsu.java」を作りなさい。
ただし、必ずfor文とif文を使うこと。
{ 12, 67, 6, 29, 77, 41 }
実行例)
$ java Hairetsu
出力結果例)
6
12
29
41
67
77