[Ava]-Stringクラス
32596 ワード
String
別の言語では、文字列も文字型の配列と見なされ、Javaは文字列にクラスを提供します.
String Classです
Stringクラスはよく使われる重要なクラスですが、今回はしっかり整理しておきます.
不変クラス
すなわち、新しいStringインスタンス、文字列「ore」を作成します.
したがって、演算子「+」を使用して文字列を連結すると、各演算子に新しい文字列が作成されます.
Stringインスタンスを作成するとメモリ容量が消費されるため、マージを最小限に抑えることが望ましい.
文字列の比較
文字列を作成する方法は2つあります.文字列文字文字指定 Stringクラスジェネレータ を使用する.
文字列文字は既存のものを再使用します.
比較アドレスの演算子で比較した結果,(s 1,s 2)は同じで,(s 1,s 3)/(s 3,s 4)は異なることが分かった.
文字列
同様に、String Literalはコンパイル時にクラスファイルに格納される.
コードを実行すると、hiとhelloを含むStringインスタンスが作成されます.
参照変数は以下のように、それぞれ参照します. s 1、s 2=>Stringインスタンス(「hi」) 参照 s 3=>Stringインスタンス(「hello」)を参照してください.
整理して、上でコンパイルしたクラスファイルがクラスローダによってメモリにロードされたとき、テキストリストの文字
JVM内の
「hi」などの文字列文字が自動的に生成され、保存されます.
空の文字列(空の文字列)
Stringクラスの作成者とメソッド
一般的なStringクラスの作成者と方法について説明します.
簡単に使い方メインで整理しました.
String(char[] value)文字[]->Stringに変換するには を使用します.の場合、toCharArray() が使用される
char charAt(int index)を返します.
int compareTo(String str)文字列(str)と を辞書順に比較するは0に等しく、前は負、後は正
String concat(String str)文字列(str)に続く.
boolean contains(CharSequence s)(s) が含まれていることを確認します.
boolean startsWith(String prefix)指定文字列(接頭辞)で始まる を確認します.
boolean endsWith(String suffix)で指定された文字列(接尾辞)で が終了することを確認します.
boolean equalsIgnoreCase(String str)
int indexOf(int ch)文字(ch)が存在するかどうかを確認し、戻り位置(index) を返します.が存在しない場合は-1を返します.
int indexOf(int ch, int pos)文字(ch)文字列で指定する位置(pos)からチェックを開始し、戻り位置(index) を返します.が存在しない場合は-1を返します.
int indexOf(String str)文字列(str)が存在するかどうかを確認し、戻り位置(index) を返します.が存在しない場合は-1を返します.
int lastIndexOf(int ch)文字(ch)、戻り位置(index) を検索が存在しない場合は-1を返します.
int length()文字列の長さを返します.
String[] split(String regex)文字列を指定区切り文字(regex)に分割し、文字列配列に挿入して返します.
String substring(int begin)
String substring(int begin, int end)の開始位置から終了位置(end)までの範囲の文字列 を返します.には開始位置文字が含まれますが、終了位置文字は含まれません(begin<=x String toLowerCase()すべての文字列を小文字に変更
String toUpperCase()すべての文字列を大文字に変更
String trim()を返し、文字列の左端と右端のスペースを削除します. 文字列の間のスペースは削除されません
String valueOf()を文字列 に戻す.参照変数の場合、toString()を呼び出す結果が返されます.
join()/StringJoiner
join()は、複数の文字列の間に区切り記号を付けることでマージされます.
文字列をセパレータで切断するsplit()とは逆の操作です.
getBytes(String charsetName)を使用して、文字列内の文字コードを別のコードに変更します.
エントリーレベル->Stringがあり、この場合、性能valueOf()がより良い.
String->エントリーレベル valueOf()またはparseXXX()を使用します. valueOf()の戻りタイプはRAPPERクラスであり,自動トレースにより自動変換される. メソッドの名前を統一するためにvalueOf()が追加された. valueOf()はメソッド内部でParseInt()を呼び出すため、戻りタイプは異なるメソッドにすぎない. References
南宮城,『ジャワの晶石』,道宇出版(2016) https://docs.oracle.com/javase/8/docs/api/index.html
別の言語では、文字列も文字型の配列と見なされ、Javaは文字列にクラスを提供します.
String Classです
Stringクラスはよく使われる重要なクラスですが、今回はしっかり整理しておきます.
不変クラス
String hi = "hi";
String there = "there";
hi = hi + there;
演算子「+」を使用して文字列をマージする場合、インスタンスの文字列は変更されません.すなわち、新しいStringインスタンス、文字列「ore」を作成します.
したがって、演算子「+」を使用して文字列を連結すると、各演算子に新しい文字列が作成されます.
Stringインスタンスを作成するとメモリ容量が消費されるため、マージを最小限に抑えることが望ましい.
文字列の比較
文字列を作成する方法は2つあります.
String s1 = "hi"; // 문자열 리터럴 "hi"의 주소가 s1에 저장
String s2 = "hi"; // 문자열 리터럴 "hi"의 주소가 s2에 저장
String s3 = new String("hi"); // 새로운 String 인스턴스 생성
String s4 = new String("hi"); // 새로운 String 인스턴스 생성
2つの方法の違いは、Stringクラスジェネレータを使用すると、常に新しいStringインスタンスが作成されることです.文字列文字は既存のものを再使用します.
s1 == s2 // true
s1 == s3 // false
s3 == s4 // false
equals()を使用して文字列の内容「hi」を比較した結果、それらは同じであることが分かった.比較アドレスの演算子で比較した結果,(s 1,s 2)は同じで,(s 1,s 3)/(s 3,s 4)は異なることが分かった.
文字列
public static void main(String[] args) {
String s1 = "hi";
String s2 = "hi";
String s3 = "hello";
}
上記の文字列文字方式でコードを記述してコンパイルします.// parameter args
L0
LINENUMBER 5 L0
LDC "hi"
ASTORE 1
L1
LINENUMBER 6 L1
LDC "hi"
ASTORE 2
L2
LINENUMBER 7 L2
LDC "hello"
ASTORE 3
L3
LINENUMBER 8 L3
RETURN
...
classファイルを開くと、クラスファイルに文字列接尾辞(「hi」、「hello」)が格納されていることがわかります.同様に、String Literalはコンパイル時にクラスファイルに格納される.
コードを実行すると、hiとhelloを含むStringインスタンスが作成されます.
参照変数は以下のように、それぞれ参照します.
JVM内の
'상수풀(constant pool)'
に格納されます.「hi」などの文字列文字が自動的に生成され、保存されます.
空の文字列(空の文字列)
String s = "";
上記のコードは、Stringインスタンスに「new char[0]」などの長さ0の文字配列を格納することに相当します.Stringクラスの作成者とメソッド
一般的なStringクラスの作成者と方法について説明します.
簡単に使い方メインで整理しました.
String(char[] value)
char[] c = {'H', 'e', 'l', 'l', 'o'};
String hello = new String(c);
c = hello.toCharArray();
char charAt(int index)
char c1 = "hello".charAt(1); // 'e'
指定された位置(index)の文字int i = "aaa".compareTo("aaa"); // 0
int i2 = "aaa".compareTo("bbb"); // -1
int i3 = "bbb".compareTo("aaa"); // 1
String helloWorld = "Hello".concat(" World");
boolean result = helloWorld.contains("lo"); // true
指定文字列boolean startsWith(String prefix)
String file = "Hello.jpg";
boolean b = file.startsWith("Hello"); // true
boolean endsWith(String suffix)
String file = "Hello.jpg";
boolean b = file.endsWith("jpg"); // true
boolean equalsIgnoreCase(String str)
boolean b = "hello".equalsIgnoreCase("HELLO"); // true
大文字と小文字を区別しない指定文字列(str)と比較int indexOf(int ch)
int index = hello.indexOf('l'); // 2
文字列にint index = hello.indexOf('e', 0); // 1
int index2 = hello.indexOf('e', 2); // -1
String s = "HI THERE"
int idx = s.indexOf("THERE"); // 3
String s = "java.lang.String";
int idx = s.lastIndexOf('.'); // 10
int idx2 = s.indexOf('.'); // 4
文字列の右端からString s = "Hello".length(); // 5
String books = "JPA, SPRING, JAVA";
String[] arr = books.split(","); // [JPA, SPRING, JAVA];
String substring(int begin, int end)
String s = "java.lang.Object";
String object = s.substring(10); // Object
String lang = s.substring(5, 9)); // lang
は、String lower = "HellO".toLowerCase(); // hello
String upper = "heLLo".toLowerCase(); // HELLO
String trim = " hi hello ".trim(); // hi hello
結果String b = String.valueOf(true);
String i = String.valueOf(100);
String c = String.valueOf('a');
String l = String.valueOf(100L);
String d = String.valueOf(100.0);
指定値join()は、複数の文字列の間に区切り記号を付けることでマージされます.
文字列をセパレータで切断するsplit()とは逆の操作です.
String coffees = "latte, americano, mocha";
String[] arr = coffees.split(",");
String str = String.join("/", arr); // latte/americano/mocha
StringJoinerクラスを使用して文字列をマージすることもできます.StringJoiner sj = new StringJoiner("/", "[", "]");
for (String s : arr) {
sj.add(s.toUpperCase());
}
System.out.println(sj.toString()); // [LATTE|AMERICANO|MOCHA]
文字コード変換getBytes(String charsetName)を使用して、文字列内の文字コードを別のコードに変更します.
public static void main(String[] args) {
String han = "한";
byte[] bArr = han.getBytes(StandardCharsets.UTF_8);
byte[] bArr2 = han.getBytes(StandardCharsets.UTF_16);
System.out.println("UTF-8:" + joinByteArr(bArr));
System.out.println("UTF-16:" + joinByteArr(bArr2));
System.out.println("UTF-8:" + new String(bArr, StandardCharsets.UTF_8));
System.out.println("UTF-16:" + new String(bArr2, StandardCharsets.UTF_16));
}
private static String joinByteArr(byte[] bArr) {
StringJoiner sj = new StringJoiner(":", "[", "]");
for (byte b : bArr) {
sj.add(String.format("%02X", b));
}
return sj.toString();
}
UTF-8:[ED:95:9C]
UTF-16:[FE:FF:D5:5C]
UTF-8:한
UTF-16:한
きほん<>Stringへんかんエントリーレベル->String
int i = 100;
String str1 = i + "";
String str2 = String.valueOf(i);
2つの方法int i = Integer.parseInt("100");
int i2 = Integer.valueOf("100");
boolean b = Boolean.parseBoolean("true");
boolean b2 = Boolean.valueOf("false");
南宮城
Reference
この問題について([Ava]-Stringクラス), 我々は、より多くの情報をここで見つけました https://velog.io/@roro/Java-String-클래스-1テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol