Stringクラスの概要

6104 ワード

一、Stringクラス(文字列クラス)の概要:
1、プログラミングでよく使われるデータ型で、簡単な基本データ型ではなく、複合データ型です.
            2、作成後に変更や変更ができない文字列定数が最大の特徴です.
                              3、importインポートなしで使用でき、このクラスは拡張する必要はなく、finalクラス(最終クラス)が他のクラスに継承されないと定義されています.
            4、Stringクラスは実際に文字配列を使って保存されている(実際にソースコードはcharタイプを使っている)
 
 
 
二、Stringクラスの二つの作成方法:
1 String s1 = new String("java01");

2 String s2 = "java01";

上はStringを作成する2つの方法で、効果的には同じですが、一般的には2つ目の方法で簡単です.
 
 
 
三、Stringクラスの二つの作成方法の違い:
1、s 1メモリには2つのオブジェクトがあります(1つはnew、1つは文字列オブジェクトがスタックメモリに格納され、定数プールに格納されます).
      2、s 2メモリには1つのオブジェクトしかありません(文字オブジェクトに文字列定数プールがある場合は、定数プールにこの文字列定数があるかどうかを先に確認し、ある場合は直接指定してから作成しなくても、定数プールに作成されない場合は)3、s 2はクラスタイプ変数であり、オブジェクトを指し、java 01はオブジェクトです.文字列は特殊なオブジェクトであり定数でもあり、初期化後は変更できません.二重引用符で囲まれたオブジェクトはすべてオブジェクトです(定数プールに存在します)
1 String s1 = "java01";

2 s1 = "java02";

3 System.out.println(s2);

最後の結果はjava 02ですが、java 01というオブジェクトが変化したのではなく、s 1の指向がjava 02というオブジェクトを指し、java 01というオブジェクトはメモリに存在します.
 
 
 
四、2つの文字列が等しいかどうかを比較する(2つの比較方法):
1 String s1 = new String("java01");

2 String s2 = new String("java01");

3 System.out.println(s1==s2);//   false,  s1 s2   new        ,          (        ),        

4 System.out.println(s1.equals(s2));//   true,  String    Object   equals  ,          ,  String       true   false。

==equalsとequalsの2つの比較方式はいずれも比較対象のメモリアドレス値であるが,equalsという方法はStringクラスに複写され,独自の比較方式が定義されているだけである.
String s1 = "java01";

String s2 = new String("java01");

String s3 = "java01";

System.out.println(s1==s2);//flase

System.out.println(s1==s3);//   true,   s1        "java01",s3           ,        ,    s1 s3       "java01"。

 
 
 
五、小練習:
1、プログラムの1行1行はキーボードの上からひっきりなしに入力する文字列を読み取って、そして表示を印刷して、byeを入力するまで
import java.io.IOException;



public class Text {

    public static void main(String[] args) {

        byte[] buf = new byte[1024];

        String info = null;

        int pos = 0;

        int ch = 0;

        while(true){

            try {

                ch = System.in.read();

            } catch (IOException e) {

                e.printStackTrace();

            }

            switch(ch){

            case '\r':

                break;

            case '
': info = new String(buf,0,pos);// String , String , // equals ( Object , ) , == , false, == if("bye".equalsIgnoreCase(info)){ return; }else{ System.out.println(info); pos = 0; break; } default: buf[pos++]=(byte)ch; } } } }