Stringクラスの概要
6104 ワード
一、Stringクラス(文字列クラス)の概要:
1、プログラミングでよく使われるデータ型で、簡単な基本データ型ではなく、複合データ型です.
2、作成後に変更や変更ができない文字列定数が最大の特徴です.
3、importインポートなしで使用でき、このクラスは拡張する必要はなく、finalクラス(最終クラス)が他のクラスに継承されないと定義されています.
4、Stringクラスは実際に文字配列を使って保存されている(実際にソースコードはcharタイプを使っている)
二、Stringクラスの二つの作成方法:
上はStringを作成する2つの方法で、効果的には同じですが、一般的には2つ目の方法で簡単です.
三、Stringクラスの二つの作成方法の違い:
1、s 1メモリには2つのオブジェクトがあります(1つはnew、1つは文字列オブジェクトがスタックメモリに格納され、定数プールに格納されます).
2、s 2メモリには1つのオブジェクトしかありません(文字オブジェクトに文字列定数プールがある場合は、定数プールにこの文字列定数があるかどうかを先に確認し、ある場合は直接指定してから作成しなくても、定数プールに作成されない場合は)3、s 2はクラスタイプ変数であり、オブジェクトを指し、java 01はオブジェクトです.文字列は特殊なオブジェクトであり定数でもあり、初期化後は変更できません.二重引用符で囲まれたオブジェクトはすべてオブジェクトです(定数プールに存在します)
最後の結果はjava 02ですが、java 01というオブジェクトが変化したのではなく、s 1の指向がjava 02というオブジェクトを指し、java 01というオブジェクトはメモリに存在します.
四、2つの文字列が等しいかどうかを比較する(2つの比較方法):
==equalsとequalsの2つの比較方式はいずれも比較対象のメモリアドレス値であるが,equalsという方法はStringクラスに複写され,独自の比較方式が定義されているだけである.
五、小練習:
1、プログラムの1行1行はキーボードの上からひっきりなしに入力する文字列を読み取って、そして表示を印刷して、byeを入力するまで
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;
}
}
}
}