文字列文字列型は、詳細なエントリを使用しています。
- Stringクラスは、すべてのテキスト文字列(例えば「ABC」)は、Javaプログラムは、このクラスのインスタンスとして実装されている文字列型を表します。言い換えれば、すべての二重引用符で囲まれた文字列でのJavaプログラムは、Stringクラスのオブジェクトです。
- 文字列クラスでのjava.langパッケージ、そのときに使用する必要パッケージを案内していません。
文字列クラスの特長
文字列Stringクラスの定義は、不変の文字列と呼ばれます。
- 不変の文字列は、その値が作成後に変更することはできません(文字列が自動的に回復される前に)、我々は、文字列の変更が実際に新しい文字列オブジェクトを指していることを見つけます
- 文字列オブジェクトの値が不変であるので、それは、彼らが共有することができています
- 文字の配列に対応する文字列の効果について(CHAR [])が、基礎となる原理は、バイトの配列である(バイト[])
文字列オブジェクトの記述を作成する他の方法
-
公共の文字列()すべてのコンテンツが含まれていない空白の文字列オブジェクトを作成するには
-
文字の配列の内容に基づいて、パブリック文字列(文字[] CHS)、文字列オブジェクトを作成します
可以吧字符数组的类容转变成字符串 char[] chs = {'a','b','我','中','国'}; String rs = new String(chs); System.out.println(rs);//ab我中国
-
パブリック文字列(バイト[] BYS)文字列オブジェクトを作成するために、コンテンツのバイト配列に応じて
byte[] bytes = {97 , 98 , 99 , 65 , 66 , 67}; String rs1 = new String(bytes); System.out.println(rs1);//abcABC
-
文字列s =「ABC」; Stringオブジェクトの直接の割り当てを作成、内容が書かれた古典的なABCです。!
注意:
-
文字列定数プールの「文字列の内容」の直接の定義。
-
ヒープメモリの文字列に新しいオブジェクトのうち。
34 String name1 = "赵丽颖"; // 这里有创建对象的,对象放在常量池! 35 String name2 = "赵丽颖"; // 这里没有创建对象,共享了34行的字符串常量。 所以这里只创建了一个字符串对象 String name3 = new String("赵丽颖"); // 这里创建的字符串对象会放到堆内存中一份!常量池中也有一份! String name4 = "赵丽颖" ; // 对象在常量池中!所以没有重新创建对象! 所以这里也只创建了一个字符串对象
public class StringDemo {
public static void main(String[] args) {
// 1.String类型定义一个字符串对象变量:name
String name = "cx";
name += "学生" ; // name = name + "老师"
System.out.println(name); // cx学生
String name1 = "赵丽颖"; // 这里有创建对象的,对象放在常量池!
String name2 = "赵丽颖"; // 这里没有,共享了34行的字符串常量。
System.out.println(name1 == name2); // name1和name2指向的是同一个地址!!
// 1.创建字符串对象的其他方式:调用有参数构造器。
String name3 = new String("赵丽颖"); // 这里创建的字符串对象会放到堆内存中一份!!
String name4 = "赵丽颖" ; // 对象在常量池中!建议这样定义!
System.out.println(name3);
System.out.println(name4);
// 2. public String(char[] chs) 根据字符数组的内容,来创建字符串对象(了解)
char[] chs = {'a','b','我','中','国'};
String rs = new String(chs);
System.out.println(rs);
// 3.public String(byte[] bys) 根据字节数组的内容,来创建字符串对象
byte[] bytes = {97 , 98 , 99 , 65 , 66 , 67};
String rs1 = new String(bytes);
System.out.println(rs1);
}
}