welcome: please sign in
location: "String"の差分
27と28のリビジョン間の差分
2011-10-10 12:49:40時点のリビジョン27
サイズ: 5656
編集者: masahiko
コメント:
2011-10-10 12:59:22時点のリビジョン28
サイズ: 5517
編集者: masahiko
コメント:
削除された箇所はこのように表示されます。 追加された箇所はこのように表示されます。
行 106: 行 106:
sが文字列またはStringクラスの変数のとき、 書き方
行 108: 行 108:
 s.length()  文字列.length()
行 110: 行 110:
のように、長さを求めたい文字列の後ろに .length() をつけると
その長さ(整数値)が返されます。
行 113: 行 111:
'''例1'''
行 114: 行 113:
 s = "日本語の文字列";
 i = s.length();
 j = "quick brown fox jumps over the lazy dog".length();
s = "Hello";
System.out.println( s.length() );
行 118: 行 116:
これを行うと、iの値は7、jの値は39になる。 変数sに代入された文字列"Hello"の長さを求めそれを表示します。
5と表示されます。
行 120: 行 119:
配列の大きさは length、文字列の長さは length() です。 '''例2'''
 {{{
i = "HelloWorld".length();
 }}}
文字列に対して直接lengthを行うこともできます。
iには10が代入されます。
行 122: 行 126:
理由は
 * 配列の大きさは、そのオブジェクトの属性値として記憶されている
 * 文字列の長さは、そのオブジェクトに対するメソッドを実行して求める
'''例3'''
 {{{
s = "日本語の文字列";
i = s.length();
 }}}
漢字などでも文字数を正しく求められます。
iの値は7になります。
行 153: 行 162:
"123"のような文字列 s をintに変換しint型の変数 i に代入するにはこのように書きます。 文字列 s をintに変換しint型の変数 i に代入するにはこのように書きます。
行 155: 行 164:
 i = Integer.parseInt( s ); s = "1230";
i = Integer.parseInt( s );
行 158: 行 168:
"1.25"のような文字列 s をdoubleに変換しdouble型の変数 d に代入するにはこのように書きます。 文字列 s をdoubleに変換しdouble型の変数 d に代入するにはこのように書きます。
行 160: 行 170:
 d = Double.parseDouble( s ); s = "2.17";
d = Double.parseDouble( s );

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);


文字列の比較

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つの代入文が実行された後の状態はこのようになります。

  • string2.png

10行目のif文では条件として b == c の論理式を用いています。 プリミティブの比較はこれで行いますが……

  • == は変数の箱に入っている値を比較します。
  • 変数bとcの箱には文字列のあるアドレスが入っています。
  • 上の図の状態であると考えると、bとcの箱の中の値は異なるので not equal と表示されます。

14行目のif文では equalsメソッドを使って判定しているので、 文字列の値が比較され equal となります。

実行結果

  • string1.png


文字列の長さ

文字列の長さを求めるには 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 );

String (最終更新日時 2011-10-15 02:30:24 更新者 masahiko)