文字列と文字配列
文字列操作と文字配列操作は、相互作用関数と実装関数で最も一般的に使用され、処理される2つです。ただし、以前は常に混乱しており、変換アプリケーションを巧みに区別するために、次の分類は一意です。
まず、文字は一重引用符で囲む必要があります ''。
Javaには、文字列を表す基本的なデータ型はありませんが、Stringクラスは文字列を表すために使用され、二重引用符 ""で囲む必要があります。
まず、配列は基本的なデータ型または参照型を格納できます。また、保存できるデータ型は1つだけです。
注:これは、基本的なデータ型に加えて、残りは参照のみであることを意味します。(オブジェクトなどへの参照にすることはできますが、オブジェクト自体を参照することはできません)。
複数のデータ型を格納できるという錯覚が、参照型を格納できるからこそです(これは、基本クラスの参照(ポインタ)が派生クラスオブジェクトを指しているためです。このアイデアは、全体の継承を開くと言えます。クラスだけでなく、シンプルなファクトリーデザインパターンの実現もサポート)注[1]
多次元配列はありません。配列自体は配列です。つまり、配列は配列を格納できますが、多次元配列は単なる幻想です。
int []は、このタイプの参照を表します。配列を作成することは、int []を作成することです。
配列には、直接使用される長さ属性があります。
トラバースするにはforeach(:)ループを使用します。長さを指定する必要はありません。
ストリング
まず第一に。文字列の初期化に関しては、char配列で作成できます
public class HelloWorld {
public static void main(String[] args) {
char[] a={
'a','b','c','d'};
String s = new String(a);
String s1 = new String (a,1,2);//a,offset,count
String s2 = new String("dfskj");
}
}
接続文字列は+を直接使用できます。
以降のすべての操作は、文字列オブジェクトのメソッドを呼び出すことです。
Stringをオブジェクトにカプセル化することで、エンパワーメントが実現し、Stringに強力な機能を持たせ、テンションを使用します。
.length(); //配列内は直接長さであり、長さは配列自体の属性と同等であり、配列の作成時に決定されるため、配列の長さを変更できないことも決定します。 、ここではlength()これはオブジェクトのメソッドを呼び出すのと同じであるため、制限なしで長さを変更できます。このメソッドを呼び出すだけで、文字列の長さが計算されます。
-
検索:(戻り値はint).indexOf(); //最初のオカレンスの位置; lastIndexOf(); //最後のオカレンスの位置
-
取得:(戻り値char).charAt(int index)
-
**サブサブストリングを取得します:** substring(start、end(デフォルトのendを書き込まない))戻り値String
-
スペースを削除します: .trim();
-
文字列の置換:replace(char old、char new)
-
判断は最後から始まります:startsWith(); extendsWith();
-
文字列の区切り:結果は文字列配列に格納されます:.split(String sign、int limit(number of splits)); //文字を分割します。これは、正規表現にすることもできます。
文字列と文字配列の変換
この部分は無視しやすいですが、実際にはよく使われます。
Char []配列と文字列型の交換
1.文字列—> char []
- メソッド1:StringクラスのtoCharArray()メソッド
といった:
String a = "liushiwennb";
char[ ] arr = a.toCharArray();
- メソッド2:StringクラスのcharAt()メソッドと空のchar配列を使用する
このメソッドは、Stringのlength()メソッドを使用して、最初にchar配列のサイズを決定します。次に、charAt()を使用して文字を返し、ループを使用して値を割り当てます。
といった:
public class HelloWorld {
public static void main(String[] args) {
String a = "liushiwennb";
char[ ] arr = new char[a.length()]; // 创建和a的长度一样的字符数组
for (int b = 0; b < a.length(); b++){
arr[b] = a.charAt(b);
}
}
}
2.char [] —>文字列
- 方法1:次のようなStringクラスのコンストラクターを使用します。
char[ ] arr; // 非空的字符数组
这里有点将 char数组作为一个target,来新建一个String对象。
String result = new String(arr);
-
方法2:char []-> StringBuffer-> String
これは、StringBuffer中間オブジェクトを使用して次のように実行されます。
char [] arr; //空でない文字配列
StingBuffer sb = new StringBuffer();
sb.append(arr);
String result = sb.toString();
- メソッド3:次のようなStringクラスのvalueOf()メソッド:
char[ ] arr; // 非空的字符数组
String result = String.valueOf(arr);
- 方法4:次のような空の文字列を使用します。
char[ ] arr; // 非空的字符数组
String result = ""; //创建一个空的字符串 这里是空的字符串,不是null(不存在)的字符串
for (int a = 0; a < arr.length; a++){
result += arr[a];
}
5)メソッド5:次のようにArraysクラスでtoString()メソッドを使用します。
char[ ] arr; // 非空的字符数组
String result = Arrays.toString(arr);
- ・整数valueOf(int i):指定されたint値を表す整数インスタンスを返します。
- ・Integer valueOf(String s):指定されたStringの値を保持するIntegerオブジェクトを返します。
- ・整数valueOf(String s、int radix):2番目のパラメーターで指定された基数が解析に使用される場合に、指定された文字列から抽出された値を格納する整数オブジェクトを返します。
- ・基数****はベースを指定します
toStringメソッドはObjectの既存のメソッドであり、すべてのクラスがObjectを継承するため、「すべてのオブジェクトにこのメソッドがあります」。
Stringは私たちがインタラクションで最もよく使用するものだと思います。そして、その重要性を側面から見ているので、それはそれを強化します。
これは通常、System.out.println(xx)などの出力の便宜のためだけです。括弧内の「xx」が文字列型でない場合、xxのtoString()メソッドが自動的に呼び出されます。
全体として、これは、Sun社がJavaを開発するときに、あらゆる種類の文字列操作を容易にするために特別に追加されたメソッドにすぎません。
注1:この記事とは関係のない補足的な考え:派生クラスから基本クラスへの強制変換は、基本クラスになる可能性のあるオブジェクトへの派生クラスへのポインターを提供します。ただし、これは絶対に許可されていません。派生クラスのポインタは基本クラスのオブジェクトを指すことはできません。派生クラスのメモリスペースは基本クラスのメモリスペースよりも長いため、アクセスするとメモリオーバーフローが発生するため、派生クラスが基本クラスを指すことは許可されていません。基本クラスへの強制変換は単なる幻想です。強制は、それが指摘できるかどうかとは完全に異なります。
注2:注:Javaは、文字列型のバッファプールメカニズムを提供します。二重引用符を使用してオブジェクトを定義する場合、Java環境は最初に文字列バッファプールに移動して、同じ内容の文字列を検索します(存在する場合はそれを使用します)。 、それ以外の場合は新しい文字列を作成します。文字列はバッファプールに配置されます。
問題:
char配列の数値をint型に変換する方法
ラッパークラスの助けを借りて:Integer.valueOf(String.valueOf(numberArray [i]));