【前面的話】java
最痛苦的工做就是大部分系統外包,因此比較少寫代碼,在這七個月中只寫了兩個月左右的代碼,而後天天都在作一些比較雜的事情,但願有機會能夠寫一寫代碼,提升技術。面試
前段時間作了一下開發,還有兩個月立刻也要過年了,時間相對就比較多了,因此又回過頭來看看書,鞏固一下基礎知識,作一些筆記,看看本身的思惟,主要目的是爲了本身積累,因此都是很基礎、很基礎的知識,請自行選擇。若是看到這裏要走了,祝新年快樂,也不枉進來一趟。工具
若是你們在學習Java過程當中遇到什麼問題,或者缺少相關的Java學習資料,可查看右側公告欄獲取,有問題隨問隨答,還有我這段時間整理的一些Java學習手冊,面試題,開發工具,PDF文檔書籍教程,須要的話均可以避免費分享給你們。學習
【知識彙總】開發工具
String類的定義:String在java中是一個比較特殊的類,由於其本身能夠作一種數據類型直接定義變量,以下:優化
String str = "hello";spa
String str = new String ("hello");3d
String兩種不一樣定義地理解:對象
String str = "hello"; //能夠把str理解爲一個char*,str指向數據段中的字符串"hello"。blog
String str = new String ("hello");//是new了一個對象,堆空間分配了一塊內存,把對象放在裏面,str 指向這個對象
上面二者的區別:
String str 1= "hello";
String str 2= "hello";
//當定義str2的時候,系統會先檢測數據段裏是否已經有了「hello」,若是有了那麼str2直接指向這個「hello」,這是系統的優化。也就是說不會單獨再在數據段中存儲「hello」,str1和str2指向的是同一個數據段,也就是str1和str2表明的數據段地址也是同樣的。
//改正哈,下面1樓指出了這裏有誤哈:能夠參見1樓。
String str 3= new String ("hello");
String str 4= new String ("hello");
//str4是從新new的一個對象,是在堆空間又單獨存儲的,也就是說str3和str4的地址是不同的,可是存儲內容是同樣的。讀者能夠運行一下下面的代碼:
代碼:
運行結果:
對於String類對象是不可變字符的理解:
String str1="hello";
str1=str1.substring(0, 3)+」 p!」;
//首先substring(0, 3)表示提取字符串第一個到第三個的字母。
//對於不可變的理解就是說,存儲「hello」的地方永遠存儲的是「hello」,除非系統自動收回,是永遠不會變的。對於str1提取子串,只是讓str1再次指向「hello」的引用,對於這個引用再進行改變,而原來存儲「hello」的地方是不變的。讀者能夠運行一下下面的代碼:
代碼:
運行結果:
//由於第2行代碼是讓str1和str2指向了同一個地址段,後面改變了str1的指向,而str2指向的東西是沒有改變的。
【java代碼】
【運行結果】
【後面的話】
將看到的、學到的東西寫出來的感受仍是很是好的,一方面能夠鍛鍊本身的思惟能力,另外一方面能夠更加好的理解所學。
這幾天看到了幾句話分享一下:
你養蘭花不是今天用來生氣的。
昨日黃土隴頭送白骨,今宵紅燈賬底臥鴛鴦。
完結撒花!!!