單例
單例的核心:
在整個程序執行期間 有且 只有一個該類的對象存在
如何去些?(如何去保證 程序中 有且只有一個對象)
1.不讓外界創建對象
2.整個對象我來創建(也不能讓外界訪問)
3.需要對外開放整個對象的方法
單例 餓漢式
class Single{
private static Single single = new Single();
private Single (){
}
public static Single getInstance (){
return single;
}
}
單例 懶漢式
特點:延遲加載(懶加載)
class SingleLazy{
private static SingleLazy singlelazy = null ;
private SingleLazy (){
}
public static SingleLazy getInstance (){
if (singleLazy == null ){
singleLazy = new SingleLazy();
}
return singleLazy;
}
}
StringBuffer
StringBuffer是字符串的緩衝區
特點:
1.StringBuffer 相當於是一個 可以變得序列(操作的是 原字符串)
2.是線程安全(耗費資源)
(jdk 1.5 版本以後 出了 StringBuilder
StringBuilder的方法和StringBuffer是一樣的
兩者不同之處就是 StringBuilder 是線程不安全
線程不安全 相對來說 省資源)
StringBuffer方法
關於StringBuffer的方法有:
1. 拼接
2. 插入
3. 刪除
4. 反轉
5. 替換
6. String 與StringBuffer的相互轉換
1. 拼接
(使用append方法)
public static void fun1 (){
StringBuffer sb = new StringBuffer();
sb.append("ILoveJava" );
System.out .println(sb);
發現sb 和 sb1 打印出來的結果是一樣的
}
2. 插入和修改
插入(insert方法)
public static void fun2 (){
StringBuffer sb = new StringBuffer("ILovaJava" );
sb.insert(7 ,'e' );
System.out .println(sb);
}
例如:
sb.insert(7 ,true );
這樣輸出來的結果就是 ILoveJatrueva
修改(setcharAt方法)
public static void fun3 (){
StringBuffer sb = new StringBuffer("ILovaJava" );
sb.setCharAt(1 , 'l' )
System.out .println(sb);
char charAt = sb.charAt(8 );
System.out .println(charAt);
char [] charArray = sb.toString.toCharArray
}
刪除和反轉
刪除(delete方法)
public static void fun4 () {
StringBuffer sb = new StringBuffer();
sb.append("ILoveJava" );
sb.delete(0 ,3 )
System.out .println(sb);
}
注意:
開始座標不能越界 結束座標越界 系統當清空 處理
public static void fun5 () {
StringBuffer sb = new StringBuffer();
sb.append("ILoveJava" );
sb.deleteCharAt(1 )
System.out .println(sb);
}
反轉(使用reverse方法)
public static void fun6 () {
StringBuffer sb = new StringBuffer();
sb.append("ILoveJava" );
sb.reverse();
System.out .println(sb);
}
反轉的案例:
輸入一個字符串 反轉
public static void fun7 () {
System.out .println("輸入" );
Scanner scanner = new Scanner(System.in );
String string = scanner.nextLine();
StringBuffer stringBuffer = new StringBuffer(string );
stringBuffer.reverse();
System.out .println(stringBuffer.toString());
}
替換和截取字符串
替換(使用replace方法)
public static void fun8 () {
StringBuffer sb = new StringBuffer();
sb.append("ILoveJava" );
sb.replace(1 , 5 , "Like" );
System.out .println(sb);
}
截取字符串(substring方法)
public static void fun9 () {
StringBuffer sb = new StringBuffer();
sb.append("ILoveJava" );
String substring = sb.substring(5 )
System.out .println(substring);
String substring2 = sb.substring(0 , 5 );
System.out .println(substring2);
}
總結
StringBuffer和StringBuilder的區別:
StringBuffer 線程安全 效率低(耗費系統資源)
StringBuilder 線程不安全的 效率高(相對於StringBuffer耗費資源少)
StringBuffer和StringBuilder 使用方法一樣
String 和StringBuffer的區別
String 是 不可變的 線程不安全的
StringBuffer 是可變的 操作的是 對象本身
public class Demo0 {
public static void fun10 (String string ) {
string = "ilovejava" ;
}
public static void fun11 (StringBuffer sBuffer) {
sBuffer.append("hh" );
}
public static void fun12 (StringBuilder sBuilder) {
sBuilder.append("xx" );
}
public static void main (String[] args) {
String string = "ILoveJava" ;
fun8(string );
System.out .println(string );
StringBuffer sBuffer = new StringBuffer("ILoveJava" );
fun9(sBuffer);
System.out .println(sBuffer);
StringBuilder sBuilder = new StringBuilder("ILoveJava" );
fun10(sBuilder);
System.out .println(sBuilder);
}
基本數據類型的包裝類
基本數據類型 包裝類
byte Byte
short Short
int Integer
long Long
float Float
double Double
boolean Boolean
char Character
爲什麼要把基本數據類型 封裝成一個類?
在類中可以聲明方法 可以使用對象調方法
Integer方法
public static void fun13 (){
Integer integer1 = new Integer(10 );
System.out .println(integer1);
Integer integer2 = new Integer("100" );
System.out .println(integer2);
}
進制
public static void fun14 (){
int a = 60 ;
System.out .println(Integer.toBinaryString(a));
System.out .println(Integer.toOctalString(a));
System.out .println(Integer.toHexString(a));
}
int 和Integer 之間的轉換 (靜態方法)
public static void fun15 (){
Integer num1 = Integer.valueOf(10 );
int num2 = num1,intValue();
}
String 和 Integer 之間的轉換
public static void fun15 (){
Integer num3 = Integer.valueOf("100" )
String string3 = num3.toString();
int num4 = Integer.parseInt("100" )
}
權限修飾符
權限修飾符(訪問權限 能不能訪問到)
1. public (公開的)
2.private (私有的)
3.protected (受保護的)
4.default (默認的) 什麼都不寫
本類 同包類 同包子類 不同包類 不同包子類
public √ √ √ √ √
private √ × × × ×
protected √ √ √ × √
default √ √ √ × ×
(√代表類中可以訪問到這個被權限修飾符修飾的成員變量)