第一講概述數組
一、 字符串是一個特殊的對象,它一旦被初始化,就不能夠被改變,不能有子類,因此String中的方法都不能被複寫;多線程
二、 字符串有兩種賦值方式app
1) String s1 = 「abc」; ——在內存中只有一個對對象。函數
2) String s2 = new String(「abc」);——在內存中有兩個對象,」abc」是一個對象,new又建立了一個對象。ui
三、 equals方法編碼
Object中的equals方法是用於比較兩個對象的地址的,String類中重寫了該方法,使得其比較的是具體的對象的值。線程
第二講字符串經常使用功能對象
一、 字符串在內存中的特性blog
二、 操做字符串的方法接口
2.1 讀取方法
l int length()——獲取字符串長度;
l char charAt(int index)——根據位置獲取位置上某個字符;
l int indexOf(int ch)——返回ch在字符串中第一次出現的位置;
l int indexOf(int ch,int fromIndex)——從fromIndex指定位置開始,獲取ch在字符串中第一次出現的位置;
l int indexOf(String str)——返回str在字符串中第一次出現的位置;
l int indexOf(String str,int fromIndex)——從fromIndex指定位置開始查找,返回str在字符竄中第一次出現的位置;
l int lastIndexOf(int ch)——返回ch自字符串中最後一次出現的位置
2.2 判斷操做
l boolean contains(str)——判斷字符串中是否包含str;
l boolean isEmpty();——判斷字符串中是否有內容。其原理是判斷字符串長度是否爲0;
l Boolean startsWith(str)——判斷字符串是否以str開頭。
l Boolean endsWith(str)——判斷字符串是否以str結尾。
l Boolean equals(str)——判斷字符串內容是否相同。Object類中的equals方法。
l Boolean equalsIgnoreCase(str)——判斷內容是否相同,而且忽略了大小寫。
2.3 字符串與其餘數據類型互相轉換
l 將字符串轉成字符串:
方法一:構造函數方法
String(char[] ch )
String(char[] ch,int offset,int count)——將字符串數組中的一部分轉成字符串。
方法二:靜態方法
Static String copyValueOf(char[] ch)
Static String copyValueOf(char[] , int offset, int count)
l 將字符串轉成字符數組
Char[] toCharArray();
l 將字節數組轉成字符串——構造函數方法實現
String(byte[] b);
String(byte[] b,int offset , int count)
l 將字符串轉成字節數組
Byte[] getBytes();
特殊狀況:字符串和字節數據在轉換過程當中,能夠指定編碼表。
l 將基本數據類型轉成字符串
Static String valueOf(int i)——將int類型數據轉成字符串
Static String valueOf(double d)——將double型數據轉成字符串
2.4 替換字符串中的某個字符
String replace(oldchar , newchar).
2.5 根據指定字符將字符串切割成多個字符串
String[] split(regex);
2.6 獲取字符串中的一部分
String substring(begin)——獲取字符串中從begin之後的全部字符。
String substring(begin , end)——獲取字符串中從begin(包含)開始到end(不包含)之間的字符。
2.7 大小寫轉換,去除空格,字符串天然順序比較
l 大小寫轉換
String toUpperCase()——將字符串轉成大寫;
String toLowerCase()——將字符串轉成小寫;
l 將字符串兩端的多個空格去除
String trim();
l 對兩個字符串進行天然順序比較
Int compareTo(String);——字符串重寫了Comparable接口中的compareTo方法。
練習:
一、 模擬一個trim方法,去除字符串兩端的空格
思路:
1)判斷字符串的第一個位置是否爲空,若是是繼續向下判斷,直到不是空格爲止;結尾處的空格判斷也是如此。
2)當開始和結尾都判斷到不是空格了,將先後兩處之間的字符取出來,達到去除字符串兩端空格的目的。
代碼實現以下:
二、 將一個字符串進行翻轉。將字符串中指定部分進行翻轉
三、 獲取一個字符串在另外一個祖父串中出現的次數
四、 獲取兩個字符串中最大相同字符串。
第三講 StringBuffer
一、 概述
StringBuffer是一個容器,咱們能夠對容器中的數據進行增、刪、改、查。當數據類型和數據個數不肯定時,並且最終要變成字符串的時候,就能夠用字符串緩衝區。
二、 特色
1) 長度能夠變化;
2) 能夠直接操做多個數據類型;
3) 最終會經過toString方法變成字符串;
三、 功能
1) 存儲
StringBuffer append()——將指定數據做爲參數添加到已有數據結尾處
StringBuffer insert(index,數據)——將數據插入到指定的位置(index);
2) 刪除
StringBuffer delete(int start,int end)——刪除緩衝區中的數據,包含start,不包含end;
StringBuffer deleteCharAt(index)——刪除指定位置的字符
3) 獲取
Char charAt(int index);——返回指定位置處的字符
Int indexOf(String str)——查找字符串str在容器中第一次出現的位置
Int lastIndexOf(String str)——查找字符串str在容器中最後一次出現的位置
Int length()——獲取容器的長度
String substring(int start, int end)——獲取緩衝區中從start(包含)到end(不包含)的數據。
4) 修改
StringBuffer repace(start,end,String)——利用string替換容器中從start(包含)到end(不包含)的數據。
Void setCharAt(int index, char ch)——將緩衝區中index位置處的數據替換成ch。
5) 反轉
StringBuffer reverse();
四、 StringBulder與StringBuffer
StringBulder是jdk1.5版本以後纔出現的,爲了提升單線程運行效率。它與StringBuffer的區別以下:
1) StringBuffer是線程同步的,即,多線程調用時,對緩衝區中數據的操做代碼是同步的;而StringBulder是不一樣步的。
2) StringBulder不須要判斷鎖(由於不一樣步),提升了運行效率,在單線程下建議使用StringBulder,多線程下建議使用StringBuffer。
第四講 基本數據類型對象包裝類
一、 概述
將基本數據對象及其操做進行包裝。
二、 基本數據類型包裝類的做用
包裝類的出現是爲了編譯對基本數據類型數據的操做,如,咱們能夠直接利用整形包裝類得到整形的最大數,也能夠利用包裝類中的方法直接將其餘類型數據轉換成整形。常見的基本數據對象類型包裝類對應以下:
三、 包裝類新特性
1) 十進制轉成其餘進制
toBinaryString()——將十進制轉成二進制;
toHexString()——將十進制轉成十六進制;
toOctalString()——將十進制轉成八進制;
2) 其餘進制轉成十進制
Integer.parseInt(String,radix)——其中radix爲基數,若sring爲二進制數,radix值爲2;若string爲十六進制數,radix爲16;若string爲八進制數,radix爲8;
3) 自動裝箱/拆箱
Interger x = 4;——這是一個自動裝箱的過程,等同於Integer x = new Integer(4);
x = x + 5;——這句話經歷了自動拆箱和和裝箱的過程。等號右邊的x是一個引用類型數據,在運算時,自動變成int類型與5相加,而後再進行裝箱,賦給等號左邊的x。
4) Integer對象在內存中的存儲
Integer m = 127;
Integer n = 127;
System.out.println(m == n);//結果是true
Integer a = 128;
Integer b = 128;
System.out.println(a == b);//結果是false
形成以上結果不一樣的緣由是:當數值在byte範圍內(整形小於等於127)時,對於新特性,若是該數值已經存在,則不會再開闢新的空間,即m和n指向了同一個對象。
總結
一、String和StringBuffer區別
1)String和StringBuffer都有對字符串進行增刪改查等操做;
2)String長度和內容都不可變,StringBuffer長度和內容均可變;
3)StringBuffer有反轉功能;
二、StringBuffer和StringBuilder的主要區別
1)StringBuffer線程同步,StringBuilder線程不一樣步;
2)StringBuffer效率較低,StringBuilder效率較高;
3)多線程時使用StringBuffer,單線程時使用StringBuilder;
三、基本數據類型對象包裝類
1)方便了對基本數據的操做,若進制轉換、基本數據類型之間的轉換等;
2)基本數據類型還有自動裝箱和拆箱功能;