サイズ: 4170
コメント:
|
← 2011-10-15 02:30:24時点のリビジョン31 ⇥
サイズ: 5704
コメント:
|
削除された箇所はこのように表示されます。 | 追加された箇所はこのように表示されます。 |
行 2: | 行 2: |
文字列を扱うにはStringクラスを用います。 | |
行 5: | 行 5: |
. 文字列を扱うにはStringクラスを用いる。 | |
行 26: | 行 25: |
a = "みなさん"; b = "こんにちは"; |
a = "Hello"; b = "World"; |
行 30: | 行 29: |
を行うと、c の値は '''みなさんこんにちは''' になる。 | を行うと、c の値は '''Hello''''''World''' になる。 |
行 39: | 行 38: |
s = "値は" + k + x + p; | s = "kotae" + k + x + p; |
行 41: | 行 40: |
を行うと、s は '''値は1035.789true''' になる。 | を行うと、s は '''kotae1035.789true''' になる。 |
行 44: | 行 43: |
System.out.println には1つの引数しか書けなかったことを思い出してください。 | System.out.println には1つの引数しか書けないので、このような使い方をします。 |
行 48: | 行 47: |
数値を文字列に変換するには、空文字列と連結すればよい。 xがdouble、sがStringのときの例を示す。 {{{ x = 3.14; s = "" + x; }}} ---- === 文字列の比較 === 2つの文字列が等しいかどうかを調べるには equals メソッドを使います。 2つのString型変数 a, b が、文字列として等しいかを判定する論理式は次のように書きます。 {{{ a.equals(b) }}} 変数 a の値が文字列 "Hello" と等しいか比較する場合はこのように書きます。 {{{ a.equals("Hello") }}} ---- === 例 === 文字列の連結と比較を行うプログラム {{{#!java public class MojiHikaku { public static void main (String[] args) { String a, b, c; a = "Hello"; b = a + "World"; c = "HelloWorld"; System.out.println( a ); System.out.println( b ); System.out.println( c ); if( b == c ) System.out.println( "equal" ); else System.out.println( "not equal" ); if( b.equals(c) ) System.out.println( "equal" ); else System.out.println( "not equal" ); } } }}} Stringはプリミティブ(基本型)ではないので、値は変数とは別の場所にとられます。<<BR>> 変数a,b,cへの代入では、対応する箱には文字列の値があるアドレスが代入されます。<<BR>> 3つの代入文が実行された後の状態はこのようになります。 {{attachment:string2.png}} 10行目のif文では条件として b == c の論理式を用いています。 プリミティブの比較はこれで行いますが…… . == は変数の箱に入っている値を比較します。 . 変数bとcの箱には文字列のあるアドレスが入っています。 . 上の図の状態であると考えると、bとcの箱の中の値は異なるので not equal と表示されます。 14行目のif文では equalsメソッドを使って判定しているので、 文字列の値が比較され equal となります。 実行結果 {{attachment:string1.png}} |
|
行 54: | 行 114: |
sが文字列またはStringクラスの変数のとき、 | 書き方 |
行 56: | 行 116: |
s.length() | 文字列.length() |
行 58: | 行 118: |
のように、長さを求めたい文字列の後ろに .length() をつけると その長さ(整数値)が返されます。 |
|
行 61: | 行 119: |
'''例1''' | |
行 62: | 行 121: |
s = "日本語の文字列"; i = s.length(); j = "quick brown fox jumps over the lazy dog".length(); |
s = "Hello"; System.out.println( s.length() ); |
行 66: | 行 124: |
これを行うと、iの値は7、jの値は39になる。 | 変数sに代入された文字列"Hello"の長さを求めそれを表示します。 5と表示されます。 |
行 68: | 行 127: |
配列の大きさは length、文字列の長さは length() です。 | '''例2''' {{{ i = "HelloWorld".length(); }}} 文字列に対して直接lengthを行うこともできます。 iには10が代入されます。 |
行 70: | 行 134: |
理由は * 配列の大きさは、そのオブジェクトの属性値として記憶されている * 文字列の長さは、そのオブジェクトに対するメソッドを実行して求める |
'''例3''' {{{ s = "日本語の文字列"; i = s.length(); }}} 漢字などでも文字数を正しく求められます。 iの値は7になります。 |
行 101: | 行 170: |
"123"のような文字列 s をintに変換しint型の変数 i に代入するにはこのように書きます。 | 文字列 s をintに変換しint型の変数 i に代入するにはこのように書きます。 |
行 103: | 行 172: |
i = Integer.parseInt( s ); | s = "1230"; i = Integer.parseInt( s ); |
行 106: | 行 176: |
"1.25"のような文字列 s をdoubleに変換しdouble型の変数 d に代入するにはこのように書きます。 | 文字列 s をdoubleに変換しdouble型の変数 d に代入するにはこのように書きます。 |
行 108: | 行 178: |
d = Double.parseDouble( s ); | s = "2.17"; d = Double.parseDouble( s ); |
行 110: | 行 181: |
---- === 文字列の比較 === 2つの文字列が等しいかどうかを調べるには equals メソッドを使います。 {{{ s = " ... "; t = " ... "; if ( s.equals(t) ) { ... } }}} 等号を使って {{{ if ( s == t ) { ... } }}} と書くとsとtが同じオブジェクトを参照しているという意味になります。 |
String
文字列を扱うにはStringクラスを用います。
- 文字列は基本型(プリミティブ)ではない。
- charの配列ではない。(Cとは異なる)
- Stringは変更不能なオブジェクトです。
- 文字列はオブジェクトであるが、普通のオブジェクトとは次の点で振る舞いが異なります。
- 文字列に演算が行われたときは、そのオブジェクトが修正されるのではなく、新しくオブジェクトが作られます。
文字が並んだものを文字列という。
プログラム中で文字列は " ではさんで "Hello World" のように記述する。
この文字列の値は Hello World であって、" は含まれない。
"" は長さ0の文字列である。空文字列という。
以下に文字列の使い方の一部を示します。 他にも多くのメソッド(関数)があります。
連結
文字列の連結は演算記号 + を使って行うことが出来る。
a,b,cをStringクラスの変数とし
a = "Hello"; b = "World"; c = a + b;
を行うと、c の値は HelloWorld になる。
基本型(プリミティブ)を文字列に連結すると、値に対応する文字列に変換してから連結される。
kがint型、xがdouble型、pがboolean型、sがStringクラスの変数のとき
k = 103; x = 5.789; p = true; s = "kotae" + k + x + p;
を行うと、s は kotae1035.789true になる。
この機能は結果を表示するのにしばしば利用されます。 System.out.println には1つの引数しか書けないので、このような使い方をします。
System.out.println("k=" + k + ", x=" + x + ", p=" + p);
数値を文字列に変換するには、空文字列と連結すればよい。 xがdouble、sがStringのときの例を示す。
x = 3.14; s = "" + x;
文字列の比較
2つの文字列が等しいかどうかを調べるには equals メソッドを使います。
2つのString型変数 a, b が、文字列として等しいかを判定する論理式は次のように書きます。
a.equals(b)
変数 a の値が文字列 "Hello" と等しいか比較する場合はこのように書きます。
a.equals("Hello")
例
文字列の連結と比較を行うプログラム
1 public class MojiHikaku { 2 public static void main (String[] args) { 3 String a, b, c; 4 a = "Hello"; 5 b = a + "World"; 6 c = "HelloWorld"; 7 System.out.println( a ); 8 System.out.println( b ); 9 System.out.println( c ); 10 if( b == c ) 11 System.out.println( "equal" ); 12 else 13 System.out.println( "not equal" ); 14 if( b.equals(c) ) 15 System.out.println( "equal" ); 16 else 17 System.out.println( "not equal" ); 18 } 19 }
Stringはプリミティブ(基本型)ではないので、値は変数とは別の場所にとられます。
変数a,b,cへの代入では、対応する箱には文字列の値があるアドレスが代入されます。
3つの代入文が実行された後の状態はこのようになります。
10行目のif文では条件として b == c の論理式を用いています。 プリミティブの比較はこれで行いますが……
- == は変数の箱に入っている値を比較します。
- 変数bとcの箱には文字列のあるアドレスが入っています。
- 上の図の状態であると考えると、bとcの箱の中の値は異なるので not equal と表示されます。
14行目のif文では equalsメソッドを使って判定しているので、 文字列の値が比較され equal となります。
実行結果
文字列の長さ
文字列の長さを求めるには length メソッドを使います。
書き方
文字列.length()
例1
s = "Hello"; System.out.println( s.length() );
変数sに代入された文字列"Hello"の長さを求めそれを表示します。 5と表示されます。
例2
i = "HelloWorld".length();
文字列に対して直接lengthを行うこともできます。 iには10が代入されます。
例3
s = "日本語の文字列"; i = s.length();
漢字などでも文字数を正しく求められます。 iの値は7になります。
部分文字列
文字列からその一部分を取り出すには substring メソッドを使います。
substringメソッドも文字列の後ろに .substring(0,3) のような形でつけて使います。 引数を2つとり、1番目は取り出す最初の位置、2番目は取り出す最後の文字の次の位置です。
s = "ABCDEFG"; System.out.println( s.substring(2,5) );
を行うと CDE と表示される。
部分の文字
文字列を構成する1文字を取り出すには indexOf メソッドを使います。
String s; char c; s = "ABCDEFG"; c = s.indexOf(3);
とすると、cには文字Dが入ります。
数値への変換
文字列 s をintに変換しint型の変数 i に代入するにはこのように書きます。
s = "1230"; i = Integer.parseInt( s );
文字列 s をdoubleに変換しdouble型の変数 d に代入するにはこのように書きます。
s = "2.17"; d = Double.parseDouble( s );