包裝類的亨元模式
- 顧名思義:共享元對(duì)象。如果在一個(gè)系統(tǒng)中存在多個(gè)相同的對(duì)象,那么只需要共享一份對(duì)象的拷貝,而不必為每一次使用創(chuàng)建新的對(duì)象。
享元模式是為數(shù)不多的、只為提升系統(tǒng)性能而生的設(shè)計(jì)模式。它的主要作用就是復(fù)用對(duì)象,以節(jié)省內(nèi)存空間和對(duì)象創(chuàng)建時(shí)間。
public class day1 {
public static void main(String[] args) {
function();
}
public static void function(){
String num ="6789";
String num1 ="6789";
String num2=new String("6789");
System.out.println(num==num1);
System.out.println(num2==num);
System.out.println(num2==num1
}
}
程序輸出結(jié)果:
true
false
false
序列化
什么事java對(duì)象序列化
- Java平臺(tái)允許我們?cè)趦?nèi)存中創(chuàng)建可復(fù)用的Java對(duì)象,但一般情況下,只有當(dāng)JVM處于運(yùn)行時(shí),這些對(duì)象才可能存在,即,這些對(duì)象的生命周期不會(huì)比JVM的生命周期更長(zhǎng)。但在現(xiàn)實(shí)應(yīng)用中,就可能要求在JVM停止運(yùn)行之后能夠保存(持久化)指定的對(duì)象,并在將來重新讀取被保存的對(duì)象。Java對(duì)象序列化就能夠幫助我們實(shí)現(xiàn)該功能。
- 使用Java對(duì)象序列化,在保存對(duì)象時(shí),會(huì)把其狀態(tài)保存為一組字節(jié),在未來,再將這些字節(jié)組裝成對(duì)象。必須注意地是,對(duì)象序列化保存的是對(duì)象的"狀態(tài)",即它的成員變量。由此可知,對(duì)象序列化不會(huì)關(guān)注類中的靜態(tài)變量。
- 除了在持久化對(duì)象時(shí)會(huì)用到對(duì)象序列化之外,當(dāng)使用RMI(遠(yuǎn)程方法調(diào)用),或在網(wǎng)絡(luò)中傳遞對(duì)象時(shí),都會(huì)用到對(duì)象序列化。Java序列化API為處理對(duì)象序列化提供了一個(gè)標(biāo)準(zhǔn)機(jī)制,該API簡(jiǎn)單易用。
String類的常用方法
length() 字符串的長(zhǎng)度
charAt() 截取一個(gè)字符
public static void function_5(){
String arr1 = "aBcd";
System.out.println(arr1.charAt(2));
}
輸出結(jié)果:
c
public static void function_2(){
String arr = "jkdakjqj";
System.out.println(arr.length());
}
輸出結(jié)果:8
toCharArray()轉(zhuǎn)換為字符數(shù)組
public static void function_3(){
String arr = "jkdakjqj";//定義字符串
char[] ch = arr.toCharArray();//將字符串轉(zhuǎn)成字符數(shù)組
for(int i = 0;i<ch.length;i++){
System.out.print(ch[i]);//遍歷數(shù)組
}
輸出結(jié)果:jkdakjqj
equals()和equalsIgnoreCase() 比較兩個(gè)字符串
public static void function_4(){
String arr1 = "aBcd";
String arr2 = "abcd";
boolean s1 = arr1.equals(arr2);//兩個(gè)字符串中字符完全相等,返回true
boolean s2 = arr1.equalsIgnoreCase(arr2);//判斷字符串是否完全相等,忽略大小寫
System.out.println(s1);
System.out.println(s2);
}
輸出結(jié)果:false ture
startsWith()方法決定是否以特定字符串開始,
public static void function_6(){
String arr1 = "abcd";
boolean b = arr1.startsWith("ab");// 判斷"ab"是不是"abcd"的前綴
System.out.println(b);
}
輸出結(jié)果:ture
endWith()方法決定是否以特定字符串結(jié)束
public static void function_7(){
String arr1 = "abcd";
boolean b = arr1.endWith("cv");// 判斷"ab"是不是"abcd"的前綴
System.out.println(b);
}
輸出結(jié)果:false
compareTo()和compareToIgnoreCase() 比較字符串
public static void function_4(){
String arr1 = "aBcd";
String arr2 = "abcd";
int s1 = arr1.compareTo(arr2);
int s2 = arr1.compareToIgnoreCase(arr2);
System.out.println(s1);
System.out.println(s2);
}
輸出結(jié)果:-32 0
indexOf() 查找字符或者子串第一次出現(xiàn)的地方。?lastIndexOf() 查找字符
或者子串是后一次出現(xiàn)的地方。
public static void function_4(){
String arr1 = "aBcbdb";
int s1 = arr1.indexOf("b");
System.out.println(s1);//返回指定字符在此字符串中第一次出現(xiàn)處的索引。
}
輸出結(jié)果:3
substring()截取字符串
public static void function_4(){
String arr1 = "aBcbdb";
String s1 = arr1.substring(3);//包含頭,后面的全要
System.out.println(s1);
String s2 = arr1.substring(1,3);//包含頭,尾巴不要
System.out.println(s2);
}
輸出結(jié)果:bdb
Bc
replace() 替換
public static void function_4(){
String arr1 = "aBcbdb";
String arr2 = "dsa";
String s1 = arr1.replace(arr1, arr2);
System.out.println(s1);
}
輸出結(jié)果:dsa
concat() 連接兩個(gè)字符串
trim() 去掉起始和結(jié)尾的空格
toLowerCase()/ toUpperCase() 大小寫
split(String str)//將str作為分隔符進(jìn)行字符串分解
public static void function_4(){
String arr1 = new String("abc");
String arr2 = "abc";
System.out.println(arr1==arr2);
System.out.println(arr1.equals(arr2));
}
輸出結(jié)果:
false
true
包裝類的常用方法
以Integer為例
MIN_VALUE = 0x80000000;
MAX_VALUE = 0x7fffffff;
public static void function(){
System.out.println(Integer.MAX_VALUE);
System.out.println(Integer.MIN_VALUE);
}
輸出結(jié)果:
2147483647
-2147483648
byteValue() 取得用byte類型表示的整數(shù)
public static void function(){
Integer i = 562;
System.out.println(i.byteValue());
}
輸出結(jié)果:50
compareTo/compare 比較大小
public static void function(){
Integer i = 4521;
Integer j = 1222;
Integer k = 1244;
System.out.println(i.compareTo(j));
System.out.println(Integer.compare(j,k));
}
輸出結(jié)果:
1
-1
toBinaryString(int i) 給定一個(gè)int類型數(shù)據(jù),返回這個(gè)數(shù)據(jù)的二進(jìn)制字符串。
public static void function(){
String str = Integer.toBinaryString(230);
System.out.println(str);
}
輸出結(jié)果:
11100110
bitCount(int i) 給定一個(gè)int類型數(shù)據(jù),返回這個(gè)數(shù)據(jù)的二進(jìn)制串中“1”的總數(shù)量。
Integer decode(String nm) 給定一個(gè)10進(jìn)制,8進(jìn)制,16進(jìn)制中任何一種進(jìn)制的字符串,該方法可以將傳入的字符串轉(zhuǎn)化為10進(jìn)制數(shù)字的Integer類型并返回。