J2SE核心開發實戰(二)——字符串與包裝類
字符串與包裝類
一、實驗簡單介紹
在本章。我們將學習一些用於處理字符串的API以及包裝類的相關知識。
本章知識點
- 字符串API
- 包裝類及其應用
二、認識字符串類
1. 什麽是字符串類
Java字符串類(java.lang.String)是Java中使用最多的類。也是最為特殊的一個類,非常多時候,我們對它既熟悉又陌生。
首先你要知道什麽是字符串:
字符串(String)是由數字、字母、下劃線組成的一串字符,是編程語言中表示文本的數據類型。
你能夠查看很多其它關於字符串的知識。
操作字符串的經常用法有復制、計算其長度、查找字符串中的某些字符等。
然而,Java標準庫中的String類包括非常多的方法,要想記住全部的類和方法是一件不太可能的事情。最好的辦法就是養成隨時查閱API文檔的習慣。在最後的參考文獻中我們為你提供了官方API文檔的鏈接,你能夠在當中具體查看每個操作字符串的方法。
查閱API文檔對於未來章節的學習也十分重要,請保持這個習慣。
2. 用String類中的自帶方法操作字符串
在Eclipse中創建項目StringUtil
,新建一個com.shiyanlou.course
包,並創建StringTools
類。
這裏會用到trim()
、substring()
、equals()
和length()
方法。
- String trim()
-
String substring(int beginIndex, int endIndex)
,該方法返回一個新字符串,新的字符串包括原來字符串中從beginIndex
到endIndex-1
的全部內容。
- boolean equals(Object other)
,該方法用於比較兩個字符串,假設原字符串與忽略大寫和小寫的情況下與other
相等,則返回true
。
- int length()
,該方法返回一個字符串的長度。
這個項目首先須要獲取來自用戶的輸入。然後去除輸入的字符串中首尾多余的空格。再與字符串shiyanlou
基本的代碼例如以下:
同樣,你不必在實驗環境中輸入這些中文凝視。
package com.shiyanlou.course;
import java.util.Scanner;
public class StringTools {
public static void main(String[] args) {
String a = new String();
String b = new String();
String c = new String();
//創建3個字符串對象
Scanner scan = new Scanner(System.in);// 創建掃描器
System.out.println("Please input a sentence with 10 more letters include space(s) : ");
// 獲得用戶輸入的包括空格的字符串
a = scan.nextLine();
//將鍵盤上的輸入賦到字符串a中
b = a.trim();
//將a中頭部和尾部的空格去掉,賦值到b中
if(b.equals("shiyanlou"))
c = b.substring(0, 6);
else {
c = "";
}
//假設b字符串為shiyanlou,則取其第0個到第6個字符作為子串,賦值到c中
//假設b字符串不為shiyanlou。則c的值為空
System.out.println("a :"+a);
System.out.println("The length of a is :"+a.length());
System.out.println("b :"+b);
System.out.println("The length of b is :"+b.length());
System.out.println("c :"+c);
System.out.println("The length of c is :"+c.length());
//分別輸出a、b、c三個字符串及其長度
}
}
點擊編譯並執行,在控制臺先輸入5個空格。緊接著輸入shiyanlou
,再輸入4個空格並回車。能夠看到輸出結果例如以下:
你可能想問:我們在比較字符串的時候為什麽不用==
而用equals()
呢?
你能夠點此了解很多其它關於”==”和equals的信息。
三、認識包裝類
1. 什麽是包裝類
我們知道,Java語言是面向對象的。但Java中的基本數據類型卻不是面向對象的。這在實際使用過程中造成了諸多不便。
為了解決此問題,Java語言的設計者們在設計類時,為每種基本數據類型也設計了一個相應的類。這八個和基本數據類型相應的類統稱為包裝類
(Wrapper Class),也稱為外覆類或數據類型類。
包裝類均位於java.lang包中,下表給出了包裝類和基本數據類型的相應關系:
基本數據類型 | 相應包裝類 |
---|---|
byte | Byte |
boolean | Boolean |
short | Short |
char | Character |
int | Integer |
long | Long |
float | Float |
double | Double |
包裝類的用途主要包括兩種:
- 作為和基本數據類型相應的類類型存在,方便涉及到對象的操作。
- 包括每種基本數據類型的相關屬性如最大值、最小值等。以及相關的操作方法。
以下我們通過一個樣例來進一步認識包裝類。
2. 比較Double類型
首先你應該知道double
和Double
的差別,前者是基本的數據類型,後者是引用類型。即包裝類。我們能夠直接使用普通運算符“==
”對基本數據類型進行比較。但假設將“==
”用於比較引用類型的話,僅僅會推斷其內存地址是否同樣。而且結果一般是否定的。
在Eclipse中創建項目DoubleCompare
,新建一個com.shiyanlou.course
包。並創建DoubleCompare
類。
在該類的main()
方法中,定義兩個含有數字的字符串並將其轉換為Double類型的數據。
String s_1 = "123.321";
String s_2 = "567.765";
//顯然,這裏的123.321和567.765都不是數值。而是“一句話”
//你也能夠自己定義這些數字
Double num_1 = Double.parseDouble(s_1);
Double num_2 = Double.parseDouble(s_2);
//定義了Double類型的數據,並將字符串轉換為雙精度浮點數賦予其值
上面的parseDouble(String s)
就是Double
類中自帶的將字符串中的數字轉換為double
類型的方法。
我們再將其輸出。
System.out.println("number 1: " + num_1);
System.out.println("number 2: " + num_2);
然後我們來比較這兩個數據。主要代碼例如以下:
switch (num_1.compareTo(num_2)) {
case -1:
System.out.println("number 1 is smaller than number 2");
break;
case 0:
System.out.println("number 1 is equal to number 2");
break;
case 1:
System.out.println("number 1 is bigger than number 2");
break;
}
相信你能夠理解這個分支語句的含義。須要特別說明的是。compareTo(Double anotherDouble)
也是Double類提供的一個方法,用於比較兩個Double類型數據的大小,返回值為int
類型。-1
、0
、1
分別代表小於、等於和大於。
該案例的完整代碼例如以下圖所看到的:
點擊編譯並執行。能夠在控制臺看到輸出結果:
四、實驗總結
在本章我們主要學習了字符串的定義和經常使用的生成子串、去除空格、比較等方法,和包裝類的定義及其基本的操作方法。
參考文檔中為你提供了很多其它關於它們的知識。最好還是試試字符串拼接等本課程還未用到的方法。
在實驗樓學習結束後,也不要忘記多看看這些API文檔,多動手寫寫代碼,天道酬勤!
五、作業
請使用String類的toLowerCase()
和toUpperCase()
方法寫一個字符串大寫和小寫轉換工具。
參考文檔
關於字符串API,你能夠查看Java SE官方文檔獲取很多其它更好玩的內容:
+ Java SE官方API文檔 - Java.lang.String
以下是Java中一些包裝類的官方技術文檔:
- Java SE官方API文檔 - Java.lang.Byte
- Java SE官方API文檔 - Java.lang.Boolean
- Java SE官方API文檔 - Java.lang.Integer
我們沒有給出全部的包裝類參考文檔。請你自己動手Ctrl+F
體會一下查找的過程。
本文原文鏈接:https://www.shiyanlou.com/courses/111 本課為實驗樓原創課程,轉載請註明。
J2SE核心開發實戰(二)——字符串與包裝類