首頁 > Java > java教程 > Java之字串詳解

Java之字串詳解

迷茫
發布: 2017-03-26 15:56:45
原創
1625 人瀏覽過
  • 字串

  在java中,字串被當作String類型的物件處理。 String類別位於java.lang套件中,預設情況下,該套件會自動匯入所有的程式。

  建立String物件的方法:

String s1 = "java";
String s2 = new String();
String s3 = new String("Java");
登入後複製
  1. #Java字串的不變性

  String物件建立後不能被修改,是不可變的,所謂的修改其實是創造了新的對象,所指向的記憶體空間不同。

  如果需要一個可以改變的字串可以使用StringBuffer或StringBuilder。

  每次new 一個字串就是產生一個新的對象,即便兩個字符串的內容相同,使用”==” 比較時也為”false” ,如果只需比較內容是否相同,應使用”equals()” 方法。

  常數池在Java中是用來保存在編譯期間已確定的、已編譯的class檔案中的資料。

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
  true
  false

  false
      true
  • [常用的方法

範例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 str2 = new StringBuilder("java");
登入後複製
  StringBuilder類別的常用方法:

以上是Java之字串詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板