Javaの文字列について詳しく解説

迷茫
リリース: 2017-03-26 15:56:45
オリジナル
1600 人が閲覧しました
  • String

Javaでは、文字列はString型のオブジェクトとして扱われます。 String クラスは java.lang パッケージにあり、デフォルトですべてのプログラムによって自動的にインポートされます。

String オブジェクトを作成するメソッド:

String s1 = "java";
String s2 = new String();
String s3 = new String("Java");
ログイン後にコピー
  1. 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) == &#39;a&#39; ) {     // 累加统计次数
    num++; 
    }
}
System.out.println("字符a出现的次数:" + num);
ログイン後にコピー

実行結果:

文字 a の出現数: 8

  • StringBuilder クラス

String クラスは可変であり、文字列を頻繁に操作すると多くの一時的な 変数 が生成されます。この問題は StringBuilder または StringBuffer を使用することで回避できます。これらは基本的に似ていますが、違いは StringBuffer がスレッドセーフであるため、パフォーマンスがわずかに高いことです。したがって、一般に、可変コンテンツを持つ文字列オブジェクトを作成するには、StringBuilder クラスが推奨されます。

StringBuilder クラスの共通メソッド:

以上がJavaの文字列について詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!