個人學(xué)習(xí)筆記,若有不當(dāng)之處,歡迎指正。個人學(xué)習(xí)地址請點(diǎn)擊這里。關(guān)于環(huán)境配置請移步這里。新建包、類等操作請自行點(diǎn)擊前面鏈接學(xué)習(xí)。關(guān)于運(yùn)算符還有控制流語句因?yàn)橛幸稽c(diǎn)編程基礎(chǔ)所以本文略過。
我是目錄
- 概述
1.1 面向?qū)ο?OOP)
1.2 import
1.3 包- 數(shù)據(jù)類型
- 靜態(tài)數(shù)組
- String、StringBuffer、StringBuilder
4.1 String
4.2 StringBuffer
4.3 StringBuilder
1. 概述
1. 面向?qū)ο?OOP)
三大特性:封裝、繼承、多態(tài)性
2. import
語法:import package1[.package2…].classname;
import java.util.Date; // 導(dǎo)入 java.util 包下的 Date 類
import javax.swing.*; // 導(dǎo)入 javax.swing 包下的所有類,* 表示所有類
import p1.Test; // 導(dǎo)入 p1 包中的 Test 類
3. 包
Java類庫中有很多包:
以 java.*開頭的是Java的核心包,所有程序都會使用這些包中的類;
以 javax.* 開頭的是擴(kuò)展包,x 是 extension 的意思,也就是擴(kuò)展。雖然 javax.*是對java.*的優(yōu)化和擴(kuò)展,但是由于 javax.* 使用的越來越多,很多程序都依賴于javax.*,所以 javax.* 也是核心的一部分了,也隨JDK一起發(fā)布。
以org.* 開頭的是各個機(jī)構(gòu)或組織發(fā)布的包,因?yàn)檫@些組織很有影響力,它們的代碼質(zhì)量很高,所以也將它們開發(fā)的部分常用的類隨JDK一起發(fā)布。
java中常用的幾個包介紹:
| 包名 | 說明 |
|---|---|
| java.lang | 該包提供了Java編程的基礎(chǔ)類,例如 Object、Math、String、StringBuffer、System、Thread等,不使用該包就很難編寫Java代碼了。 |
| java.util | 該包提供了包含集合框架、遺留的集合類、事件模型、日期和時(shí)間實(shí)施、國際化和各種實(shí)用工具類(字符串標(biāo)記生成器、隨機(jī)數(shù)生成器和位數(shù)組)。 |
| java.io | 該包通過文件系統(tǒng)、數(shù)據(jù)流和序列化提供系統(tǒng)的輸入與輸出。 |
| java.net | 該包提供實(shí)現(xiàn)網(wǎng)絡(luò)應(yīng)用與開發(fā)的類。 |
| java.sql | 該包提供了使用Java語言訪問并處理存儲在數(shù)據(jù)源(通常是一個關(guān)系型數(shù)據(jù)庫)中的數(shù)據(jù)API。 |
| java.awt | 如下 |
| javax.swing | 這兩個包提供了GUI設(shè)計(jì)與開發(fā)的類。java.awt包提供了創(chuàng)建界面和繪制圖形圖像的所有類,而javax.swing包提供了一組“輕量級”的組件,盡量讓這些組件在所有平臺上的工作方式相同。 |
| java.text | 提供了與自然語言無關(guān)的方式來處理文本、日期、數(shù)字和消息的類和接口。 |
2. 數(shù)據(jù)類型
| 數(shù)據(jù)類型 | 說明 | 所占內(nèi)存 |
|---|---|---|
| byte | 字節(jié)型 | 1 byte |
| int | 整型 | 4 bytes |
| long | 長整型 | 8 bytes |
| float | 單精度浮點(diǎn)型 | 4 bytes |
| double | 雙精度浮點(diǎn)型 | 8 bytes |
| char | 字符型 | 2 bytes(字符型數(shù)據(jù)只能是一個字符,由單引號包圍) |
| boolean | 布爾型 | 1 bit |
3. 靜態(tài)數(shù)組
定義分配空間的數(shù)組:type arrayName[] = new type[arraySize]; ,比如 int demoArray[] = new int[3]; , 初始化示例:
int[][] arr1 = {{1, 4, 5, 7}, {12, 14, 16, 18}}; // 創(chuàng)建二維數(shù)組
int arr2[][] = {{1, 4, 5, 7}, {12, 14, 16, 18}}; // 創(chuàng)建二維數(shù)組
String stringArray[] = {"徐清風(fēng)", "帥到", "自我陶醉"};
Java強(qiáng)大的 foreach循環(huán):
for(arrayType varName: arrayName ){
// arrayType 為數(shù)組類型(也是數(shù)組元素的類型);
// varName 是用來保存當(dāng)前元素的變量,每次循環(huán)它的值都會改變;
// arrayName 為數(shù)組名稱
}
創(chuàng)建數(shù)組并遍歷:

數(shù)組求和:

額外說明:
- 上面講的是靜態(tài)數(shù)組。靜態(tài)數(shù)組一旦被聲明,它的容量就固定了,不容改變。所以在聲明數(shù)組時(shí),一定要考慮數(shù)組的最大容量,防止容量不夠的現(xiàn)象。
- 如果想在運(yùn)行程序時(shí)改變?nèi)萘?,就需要用到?shù)組列表(ArrayList,也稱動態(tài)數(shù)組)或向量(Vector)。
- 正是由于靜態(tài)數(shù)組容量固定的缺點(diǎn),實(shí)際開發(fā)中使用頻率不高,被 ArrayList 或 Vector 代替,因?yàn)閷?shí)際開發(fā)中經(jīng)常需要向數(shù)組中添加或刪除元素,而它的容量不好預(yù)估
4. String、StringBuffer、StringBuilder
4.1 String
String 是 java.lang 包下的一個類,有以下方法:
-
length()- 返回長度 -
charAt()- 按照索引值獲得字符串中的指定字符 -
contains()- 檢測字符串是否包含某個子串 -
replace()- 字符串替換,用來替換字符串中所有指定的子串 -
split()- 以指定字符串作為分隔符,對當(dāng)前字符串進(jìn)行分割,分割的結(jié)果是一個數(shù)組

String 的值是不可變的,每次對String的操作都會生成新的String對象,不僅效率低,而且耗費(fèi)大量內(nèi)存空間。
4.2 StringBuffer
只能通過 new 來創(chuàng)建對象:
StringBuffer str1 = new StringBuffer(); // 分配16個字節(jié)長度的緩沖區(qū)
StringBuffer str2 = =new StringBuffer(512); // 分配512個字節(jié)長度的緩沖區(qū)
// 在緩沖區(qū)中存放了字符串,并在后面預(yù)留了16個字節(jié)長度的空緩沖區(qū)
StringBuffer str3 = new StringBuffer("xuqingfeng");
StringBuffer類中的方法主要偏重于對于字符串的操作,例如追加、插入和刪除等,這個也是StringBuffer類和String類的主要區(qū)別。實(shí)際開發(fā)中,如果需要對一個字符串進(jìn)行頻繁的修改,建議使用 StringBuffer,操作大量字符串時(shí)效率會比String高出很多。
-
append()- 向當(dāng)前字符串的末尾追加內(nèi)容 -
deleteCharAt()- 刪除指定位置的字符,并將剩余的字符形成新的字符串 -
insert()- 在指定位置插入字符串 -
setCharAt()- 用來修改指定位置的字符
StringBuffer str = new StringBuffer("biancheng100");
// 以下方法都以上面的語句為標(biāo)準(zhǔn),假設(shè)不相互影響
str.append(true); // "biancheng100true"
str.deleteCharAt(3); // 刪除索引3的'n'字符
str.delete(1, 4); // 刪除索引值為1~4之間的字符,包括索引值1,但不包括4。
str.insert(3, "xyz"); // bianxyzcheng100true
str.setCharAt(3, 'z'); // biazcheng100
4.3 StringBuilder
StringBuilder類和StringBuffer類功能基本相似,方法也差不多,主要區(qū)別在于StringBuffer類的方法是多線程安全的,而StringBuilder不是線程安全的。
StringBuffer、StringBuilder、String中都實(shí)現(xiàn)了CharSequence接口。CharSequence是一個定義字符串操作的接口,它只包括length()、charAt(int index)、subSequence(int start, int end) 這幾個API。

可見,String直接實(shí)現(xiàn)了CharSequence接口;StringBuilder 和 StringBuffer都是可變的字符序列,它們都繼承于AbstractStringBuilder,實(shí)現(xiàn)了CharSequence接口。
使用:
操作少量的數(shù)據(jù)使用 String;
單線程操作大量數(shù)據(jù)使用 StringBuilder;
多線程操作大量數(shù)據(jù)使用 StringBuffer。