ホームページ >Java >&#&チュートリアル >Javaの文字列について詳しく解説
String
Javaでは、文字列はString型のオブジェクトとして扱われます。 String クラスは java.lang パッケージにあり、デフォルトですべてのプログラムによって自動的にインポートされます。
String オブジェクトを作成するメソッド:
String s1 = "java"; String s2 = new String(); String s3 = new String("Java");
Java 文字列の不変性
String オブジェクトは、作成後に変更することはできず、不変です。いわゆる変更では、実際にはメモリ空間が指す新しいオブジェクトが作成されます。異なります。
変更可能な文字列が必要な場合は、StringBuffer または StringBuilder を使用できます。
新しい文字列が作成されるたびに、2つの文字列の内容が同じであっても、単に「==」で比較すれば「false」になります。内容が同じ場合は「equals()」メソッドを使用してください。
Javaの定数プールは、コンパイル時に決定されたコンパイル済みクラスファイルにデータを保存するために使用されます。
package cn.test;public class Demo12 { public static void main(String[] args) { String s1 = "java";//先检查字符串常量池中是否有"java"字符串,如果有则直接指向,如果没有就在字符串常量池中添加"java"字符串并指向它,所以这种方式创建字符串时最多创建一个对象,或者不创建对象 String s2 = "java";//s2直接指向字符串常量池中的"java" String s3 = new String("java");//在堆内存申请一块内存存储字符串"java",s3指向其内存块对象,同时检查字符串常量池中是否有"java"字符串,如果没有就添加字符串"java"到常量池中,所以new String()有可能创建两个对象 String s4 = new String("java"); System.out.println(s1 == s2); System.out.println(s1 == s3); System.out.println(s3 == s4); s1 = "欢迎来到" + s1; System.out.println(s1); System.out.println(s3.equals(s4)); } }
実行結果:
true
false
false
Welcome to java
true
Stringクラスのよく使われるメソッド
例1:
String fileName = "HelloWorld.java"; String email = "xiaoli@163.com"; // 判断.java文件名是否正确:合法的文件名应该以.java结尾 int index = fileName.lastIndexOf('.'); String prefix = fileName.substring(index+1); if ( index > 0 && prefix.equals("java")) { System.out.println("Java文件名正确"); } else { System.out.println("Java文件名无效"); } // 判断邮箱格式是否正确:合法的邮箱名中至少要包含"@", 并且"@"是在"."之前 int index2 = email.indexOf('@'); int index3 = email.indexOf('.'); if (index2 != -1 && index3 > index2) { System.out.println("邮箱格式正确"); } else { System.out.println("邮箱格式无效"); } String str = "boo:and:foo"; String[] arr = str.split(":"); for (int i = 0; i < arr.length; i++) { System.out.print(arr[i]); }
String str = "boo:and:foo"; String[] arr = str.split(":"); for (int i = 0; i < arr.length; i++) { System.out.print(arr[i]); }
実行結果:
Javaファイル名前は正しいです
メールの形式は正しいです
booandfoo
例 2:
String str = "abcd阿"; byte[] b = str.getBytes(); for (int j = 0; j < b.length; j++) { System.out.print("[" + b[j] + "]"); }
実行結果:
[97][98][99][100][-80][-94]
注: 1 バイトは8 ビットに等しく、gbk エンコーディングの 1 つの中国語文字の保存には 2 バイトが必要で、1 つの英語文字の保存には 1 バイトが必要です
例 3:
String s = "aljlkdsflkjsadjfklhasdkjlflkajdflwoiudsafhaasdasd"; // 出现次数int num = 0; // 循环遍历每个字符,判断是否是字符 a ,如果是,累加次数for ( int i = 0;i < s.length(); i++ ) { // 获取每个字符,判断是否是字符a if ( s.charAt(i) == 'a' ) { // 累加统计次数 num++; } } System.out.println("字符a出现的次数:" + num);
実行結果:
文字 a の出現数: 8
StringBuilder クラス
String クラスは可変であり、文字列を頻繁に操作すると多くの一時的な 変数 が生成されます。この問題は StringBuilder または StringBuffer を使用することで回避できます。これらは基本的に似ていますが、違いは StringBuffer がスレッドセーフであるため、パフォーマンスがわずかに高いことです。したがって、一般に、可変コンテンツを持つ文字列オブジェクトを作成するには、StringBuilder クラスが推奨されます。 StringBuilder str2 = new StringBuilder("java");
StringBuilder クラスの共通メソッド:
以上がJavaの文字列について詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。