20165231 2017-2018-2 《Java程序設計》第6周學習總結
教材學習內容總結
第八章
String類
Java專門提供了用來處理字符序列的String類。
String類在java.lang包中,由於java.lang包中的類被默認引入,因此程序可以直接使用String類。
需要註意的是Java把String類聲明為final類,因此用戶不能擴展String類,即String類不可以有子類。
可以使用String類聲明對象並創建對象,例如:
String s = new String("we are students");
String t = new String("we are students");
用戶無法輸出String對象的引用:
Syste.out.println(s);
輸出的是對象的實體。
例如:
char a[] = {‘零‘,‘壹‘,‘貳‘,‘叁‘,‘肆‘,‘伍‘,‘陸‘,‘柒‘,‘捌‘,‘玖‘};
String s = new String(a,2,4);
相當於
String s = new String("貳叁肆伍");
String 類的常用方法:
- public int length():獲取一個字符串的長度
- public boolean equals(String s):判斷當前String對象的字符序列是否與參數s指定的String對象的字符序列相同
- public boolean startsWith(String s)
判斷當前String對象的字符序列前綴是否是參數指定的String對象s的字符序列 - public int compareTo(String s):按字典序與參數s指定的字符序列比較大小。
- 5.public boolean contains(String s):String對象調用contains方法判斷當前String對象的字符序列是否包含參數s的字符序列
public int indexOf (String str):String對象調用方法從當前String對象的字符序列的0索引位置開始檢索首次出現str的字符序列的位置,並返回該位置。如果沒有檢索到,該方法返回的值是–1
public String trim() :得到一個新的String對象,這個新的String對象的字符序列是當前String對象的字符序列去掉前後空格後的字符序列。
符串與基本數據的相互轉化
Java.lang包中的Integer類調用其類方法:
public static int parseInt(String s)
可以使用String 類的類方法:
public static String valueOf(byte n)
public static String valueOf(int n)
public static String valueOf(long n)
public static String valueOf(float n)
public static String valueOf(double n)
對象的字符串表示
所有的類都默認是java.lang包中Object類的子類或間接子類。
Object類有一個
public String toString()
- String 類的構造方法:
String(char[]);
String(char[],int offset,intlength)
分別用字符數組中的全部字符和部分字符創建字符串對象
- 將String對象的部分字符序列存放到數組中的方法:
public void getChars(int start,int end,char c[],int offset )
將String對象的字符序列存放到數組中的方法
public char[] toCharArray()
- String(byte[])用指定的字節數組構造一個字符串對象。
- String(byte[],int offset,int length) 用指定的字節數組的一部分,即從數組起始位置offset開始取length個字節構造一個字符串對象。
- public byte[] getBytes()使用平臺默認的字符編碼,將當前String對象的字符序列存放到字節數組,並返回數組的引用。
public byte[] getBytes(String charsetName)使用參數指定字符編碼,將當前String對象的字符序列存放到字節數組,並返回數組的引用。
第十五章
泛型
泛型(Generics),其主要目的是可以建立具有類型安全的集合框架,如鏈表、散列映射等數據結構。
可以使用“class
名稱<泛型列表>”聲明一個類,為了和普通的類有所區別,這樣聲明的類稱作泛型類,如:
class People<E>
其中People
是泛型類的名稱,E
是其中的泛型,也就是說我們並沒有指定E
是何種類型的數據,它可以是任何對象或接口,但不能是基本類型數據。
泛型類聲明和創建對象時,類名後多了一對“<>”,而且必須要用具體的類型替換“<>”中的泛型。例如:
Cone<Circle> coneOne;
coneOne =new Cone<Circle>(new Circle());
LinkedList
LinkedList
創建一個空雙鏈表。
add(E obj) 向鏈表依次增加節點
LinkedList
public boolean add(E element)
向鏈表末尾添加一個新的節點,該節點中的數據是參數elememt指定的數據。
-public void add(int index ,E element)
向鏈表的指定位置添加一個新的節點,該節點中的數據是參數elememt指定的數據。public void clear()
刪除鏈表的所有節點,使當前鏈表成為空鏈表。public E remove(int index)
刪除指定位置上的節點。
-public boolean remove(E element)
刪除首次出現含有數據elemen的節點。
-public E get(int index)
得到鏈表中指定位置處節點中的數據。public E getFirst()
得到鏈表中第一個節點中的數據。
-public E getLast()
得到鏈表中最後一個節點中的數據。public E removeFirst()
刪除第一個節點,並返回這個節點中的數據。
鏈表
public static void shuffle(List<E> list)
將list中的數據按洗牌算法重新隨機排列。
static void rotate(List<E> list, int distance)
旋轉鏈表中的數據。
public static void reverse(List<E> list)
翻轉list中的數據
堆棧
public E push(E item);
實現壓棧操作
public E pop();
實現彈棧操作。
public boolean empty();
判斷堆棧是否還有數據。
public E peek();
獲取堆棧頂端的數據,但不刪除該數據。
public int search(Object data);
獲取數據在堆棧中的位置
代碼調試中的問題和解決過程
教材中代碼調試有問題先去https://shimo.im/doc/1i1gldfsojIFH8Ip/看看,如果別人沒有提出相同問題,可以編輯文檔添加,然後把自己提出的問題復制到下面:
- 問題1:編譯XXX.java文件提示使用了未經檢驗或不安全的操作
問題1解決方案:通過網上搜索得知
JAVA是一門安全性比較高的語言,它在編譯之類要進行類型等一系列的檢查。如果你使用了註解就可以告訴編譯器不用檢查,這樣子就可以避過編譯時期間的安全檢查,這樣子的效率會提高 。但同時 安全性就大打折扣了。
方法一: 在main方法面前加@SuppressWarnings("unchecked")
方法二:就是采用泛型。ArrayList<String> list = new ArrayList<String>();
例如:
import java.util.*;
public class ListDemo
{
//@SuppressWarnings("unchecked")
public static void main(String[] args)
{
StringBuilder buf = new StringBuilder("美麗"); //字符串生成器
buf.append("中"); // 輸出: 美麗中
buf.append("國"); //輸出:美麗中國
buf.insert(1,"達"); //輸出:美達麗中國
buf.insert(0,"歡迎"); //輸出:歡迎美達麗中國
System.out.println(buf);
//ArrayList list = new ArrayList();
ArrayList<String> list = new ArrayList<String>();
list.add("中");
System.out.println(list);
}
}
- 問題2:編譯XXX完成,運行程序時提示:NO X11 DISPLAY variable was set,but this program perforemed an operation which requires it.
- 問題2解決方案:翻譯為
沒有設置X11 DISPLAY變量,但該程序執行了需要它的操作。
網上說大致說法為沒有配置可視圖形化界面變量,我使用的是Windows下子系統,所以只有命令行不存在可視化界面,如需要界面需要調用第三方軟件,具體情況可使用虛擬機查看。 - 問題3:編譯XXX完成,運行是提示:Exception in thread "main" java.lang.NoSuchMethodError:Student.
- 問題3解決方案:提示有同類名的類在同一個包或工程中,改變類名,保存即可正常運行。
代碼托管
學習進度條
代碼行數(新增/累積) | 博客量(新增/累積) | 學習時間(新增/累積) | 重要成長 | |
---|---|---|---|---|
目標 | 5000行 | 30篇 | 400小時 | |
第一周 | 200/200 | 1/4 | 10/10 | |
第二周 | 300/500 | 1/5 | 10/20 | |
第三周 | 800/1300 | 1/6 | 20/40 | |
第四周 | 700/2000 | 2/8 | 20/60 | |
第五周 | 1100/ 3100 | 2/10 | 30 /90 | |
第六周 | 1100 /4200 | 1/ 11 | 15 /105 | |
第七周 | ||||
第八周 |
計劃學習時間:15小時
實際學習時間:15小時
改進情況:
參考資料
Java學習筆記(第8版)
《Java學習筆記(第8版)》學習指導
20165231 2017-2018-2 《Java程序設計》第6周學習總結