數組
1、數組定義:
數據類型 數組名 [] = new 數據類型[長度];
或:
數據類型 [] 數組名 = new 數據類型[長度];
2、數組屬於引用類型,可以發生引用傳遞;即:同一個堆內存空間被不同的棧指定
被指定的堆內存總中的數據可以被不同的引用修改同一個對象中的值
3、冒泡排序,數組轉至(新數組、首位互換)
/**
* 冒泡排序
*/
int aa[] = new int[]{1,4,7,8,9};
for (int cc: aa) {
for (int x = 0; x < aa.length-1; x++){
int z = 0;
if(aa[x]>aa[x+1]){
z = aa[x];
aa[x] = aa[x+1];
aa[x+1] = z;
}
}
print(aa);
System.out.println();
}
4、數組拷貝 System.arraycopy()
int aa[] = new int[]{1,4,7,8,9};
int bb[] = new int[]{11,44,75,86,97};
System.arraycopy(aa,3,bb,2,2);
//print(aa);
print(bb);
5、數組排序Arrays.sort();--正序排序 ,
-----倒序排列待驗證
int aa[] = new int[]{1,4,7,2,9};
int bb[] = new int[]{11,44,75,86,97};
System.arraycopy(aa,3,bb,2,2);
//print(aa);
print(bb);
System.out.println();
Arrays.sort(aa);
print(aa);
6、對象數組
多個對象的一個集合--略
String
1、String實例化方式
第一種:String str = "123";// 直接賦值---推薦
第二種:String str2 = new String("456")// 調用構造器,先不用糾結傳入是一個String類型的實例問題
2、1》兩種實例化的區別:直接賦值,使用共享設計模式,jvm底層有一個對象池,像一些特殊的類,如String類,使用了直接賦值的方式創建了一個類對象時,會將此對象的所使用的的匿名對象入池保存,而後如果還有其他String類對象,也採用了直接賦值的情況 ,並設置了同樣值的情況下不會再次開闢新的堆內存空間,而是使用已有的對象進行引用分配繼續使用
2》使用構造方法new 來創建對象,一但使用關鍵字new 則會開闢新的堆內存空間
3》如果使用構造器的方式創建實例,則會開闢兩塊堆內存空間,其中匿名類的那塊堆內存空間會成爲垃圾空間
如果想要將通過new關鍵詞實例的對象入池,則可以使用String提供的手工入池方法 intern();
3、字符串的內容比較(對象的比較--如果其他自定義對象要比較重寫equals) "".equals()方法,儘量將常量放到前邊避免空指 針
4、‘==’java提供的運算符,用來比較地址值的比較
5、字符串內容一旦聲明則不可改變,String類對象內容的改變是依靠引用關係的變更來實現的
6、字符串內容不要頻繁的修改,不然會產生很多垃圾
7、程序中字符串的下標 從0開始
8、字符串中常用方法--參照API(charAt\tocharArray\字節轉換\轉大寫(touppercase)、小寫(tolowercase)、相等判斷不區分大小寫的方法、compareto、contains(1.5之後,推薦使用)\indexof(之前)\startwith\endwith(多重載)、replaceAll\replace\replaceFirst\substring(重載)、replit(重載及按照空串""拆分是情況--以單個字符拆分及如果按照需要轉義的符號(正則標記)拆分則需要注意轉義‘\\’、concat(字符串連接,不建議使用平時使用‘+’就可以))\trim重載、length、intern(數據入池)、isEmpty(判斷是否是空串)、等)---待整理
9、compareto:只有String類才具有大小的關係比較
10、String雖然是一個類,屬於對象類型,但由於其內容不可變,很多時候可以直接把string當做基本數據類型使用就可以,即:每個String變量只能保存一個數據
*******
尤其注意,如果在方法中對一個Stirng做了修改一定記得給引用重新賦值,因爲String不可修改