1:API定義
2:Object類
3;Object中的equals方法
equals的源碼如下
爲什麼最後的結果是false,分析結果如下圖。
但是針對上面的操作,是沒有意義的
4:多態的一個弊端:不能調用子類的一個特有內容,需要有一個向下轉型的操作。
5:針對比較兩個對象是沒有意義的,所以需要比較兩個對象中的具體信息
6:針對上面的操作,任然存在一個問題,就是Object類型是最大的,可以傳入任何一個類型
7:爲了提高程序的健壯性,需要添加代碼如下
8:繼續提高程序的健壯性,考慮到比較的對象爲null的時候。
9;:繼續提高程序的健壯性,如果傳入的對象是自己的話
10:toString方法:返回該對象的字符串表示
11:觀察toString的默認打印內容
爲什麼打印的結果是這個呢,打印的是對象的內存地址。
下面的兩條書寫方式 是一樣的,前提是在輸出語句中。
12:重寫toString方法
所以我們要進行重寫,然後重寫的要求如下
靜態和對象是沒有關係的。
13:之前的Random和Scanner類的對象的打印結果,是因爲Scanner類的toStrin重寫過。
14:String類的概述
15:對象是在堆內存裏邊的,堆內存中有一小部分區域,叫做常量池,字符串常量有52個,當需要一個itcast的時候
最後輸出的結果發生變化是因爲str指向的引用發生了變化。不是修改了原來的內容,而是新造了一個字符串對象。
16:String的構造方法
上面的代碼表示:兩個對象的地址是不同的。
然後使用equals比較地址是true
17:不同的創建對象的方式是不同的,第一種方式創建了兩個對象,下面截圖是內存的分析圖
18:String中的構造方法
第一個構造方法字節數組的類型
對應的效果圖如下,奇數個的話就會出現問號?
第二個構造方法,和第一個類似,如下:
第三個構造方法:是字符數組的,和字節數組的區別是不查詢編碼表
然後針對上面的一個方法有類似的一個重寫
19:String類中的其他方法
判斷一個字符串是不是另一個字符串的前綴或者開頭
上面的方法,如果字符串寫成漢字
則最後輸出的是四個數字,並且是負數。
20:String中的方法的應用:統計小寫,大寫,數字的個數
上面的代碼中,也可以把對應的ASIC碼換成直接的字母,例如if(c>a&&a<z)也是可以的。
21;String中的方法的應用:
代碼如下
22:分析的思路如下
代碼如下
23;StringBuffer類:底層源碼使用的是可變數組,是爲了提高字符串的操作效率而來的。提高內存使用率的問題
提高
和String不同的是沒有final
StringBuffer不論你怎麼玩 ,內存中只有一個字符串,節省空間
初始的容量是16
常用的使用方法如下
不包含尾部
24:StringBuilder類:是線程不安全的
25:一個練習