歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Java學習:飄逸的字符串

前言

相信不管我們運用Java語言來開發項目還是進行數據分析處理,都要運用到和字符串相關的處理方法。這個社會處處有著和字符串相關的影子:日志、文檔、書籍等。既然我們離不開字符串,那麼就來好好認識一下吧。

怎麼構造一個字符串?

在Java語言裡,有兩種方法來創建一個字符串對象:一是用字符串直接量

1 String message=new String("Welcome to Java");
2 String message2="Welcome to Java";

二是通過字符數組。

1 char[] array={'G','o','o','d',' ','D','a','y'};
2 String message3=new String(array);

注意:String變量存儲的是對String對象的引用,String對象裡存儲的才是字符串的值。所以嚴格的說,術語String變量、String對象和字符串值是不同的,只是平常我們為了簡單起見,都統稱為字符串而已。

不可變?字符串這麼拽!

String對象是不可變的,它的內容是不能改變的。比如下面的兩行代碼:

1 String s="Java";
2 s="html";

第一條語句創建了內容為“Java”的String對象,並將其引用賦值給s。第二條語句創建了一個內容為“html”的新String對象,並將其賦值給s。所以執行這兩條語句之後,兩個String的對象都沒有改變,並且其中的內容也沒有發生變化,只是s變量最後指向了新的String對象。

字符串的比較

一旦看到比較兩字,我們想到的是“==”。然而,運算符==只能檢測字符串String1和String2是否指向同一個對象,但它不會告訴我們它們的內容是否相同。因此Java裡面判斷字符串是否相同,我們應該使用equals方法或者compareTo方法。

1 String s1=new String("Welcome to Java");
2 String s2="Welcome to Java";
3 String s3="Welcome to C++";
4 String s4="welcome TO java";
5 System.out.println(s1.equals(s2));
6 System.out.println(s1.equals(s3));
7 System.out.println(s1.compareTo(s2));

補充:當比較兩個字符串是否相等的時候,方法equalsIgnoreCase和compareToIgnoreCase可以先忽略字母大小寫然後進行比較。

1 System.out.println(s1.equalsIgnoreCase(s4));
2 System.out.println(s2.compareToIgnoreCase(s4));

字符串長度、字符和組合字符串

length是String類的一個方法,但它是數組對象的一個屬性,所以,我們要獲取字符串s的字符個數,就要使用s.length()。方法s.charAt(index)可用於提取字符串s的某個特定字符,其中下標index的取值范圍在0到s.length()-1之間。

另外,我們可以使用concat方法連接兩個字符串。如下代碼所示,將字符串s1和s2連接構成了s3。

1 String ss="BaiYi";
2 String ss2="ShaoNian";
3 String ss3=ss.concat(ss2);
4 System.out.println(ss3);

當然了,好像平常我們更傾向於更簡單的方法,那就是直接使用加號(+)來連接兩個或者更多的字符串構成新的字符串。

怎麼樣獲取子串呢?

前面已經提到了我們可以通過charAt方法來獲取字符串的任意一個單字符,但是獲取它的子串應該怎麼辦呢?我們就用substring方法。

1 System.out.println("Welcome to Java".substring(0,11) + "C++");

字符串的轉換、替換和分隔方法,學習ing...

toLowerCase:返回將所有字符都轉換為小寫之後的新字符串

toUpperCase:返回將所有字符都轉換為大寫之後的新字符串

trim:返回去掉兩端的空白字符之後的新字符串

replace:返回用一個新子串替換這個字符串中所有和它匹配的字符的新字符串

replaceFirst:返回用一個新子串替換這個字符串中第一個和它匹配的子串之後的新字符串

replaceAll:返回用一個新子串替換這個字符串中所有和它匹配的子串之後的新字符串

split:返回用定界符分隔的子串所構成的一個字符串數組

 1 System.out.println("Welcome TO".toLowerCase());
 2 System.out.println("Welcome to".toUpperCase());
 3 System.out.println(" Welcome to ".trim());
 4 System.out.println("Welcome to".replace('e','A'));
 5 System.out.println("Welcome to".replaceFirst("e","ABC"));
 6 System.out.println("Welcome to".replaceAll("e","AB"));
 7         
 8 String[] str="Java#HTML#C++".split("#",0);
 9 for (int i=0; i<str.length; i++) {
10     System.out.println(str[i] + " ");
11 }
12 String[] str2="Java#HTML&C++".split("[#&]",0);
13 for (int i=0; i<str2.length; i++) {
14     System.out.println(str2[i] + " ");
15 }

Copyright © Linux教程網 All Rights Reserved