stringBuffer、StringBuilder、排序、Arrays、Jdk1.5新特性(java基础知识十三)
1.StringBuffer類的概述
* A:StringBuffer類概述
* 通過JDK提供的API,查看StringBuffer類的說明
* 1.線程安全的可變字符序列。
* 2.可將字符串緩沖區安全地用于多個線程。
* 3.StringBuffer 上的主要操作是 append 和 insert 方法,可重載這些方法,以接受任意類型的數據。每個方法都能有效地將給定的數據轉換成字符串,然后將該字符串的字符追加或插入到字符串緩沖區中。append 方法始終將這些字符添加到緩沖區的末端;而 insert 方法則在指定的點添加字符。
* 4.每個字符串緩沖區都有一定的容量。只要字符串緩沖區所包含的字符序列的長度沒有超出此容量,就無需分配新的內部緩沖區數組。如果內部緩沖區溢出,則此容量自動增大。從 JDK 5 開始,為該類補充了一個單個線程使用的等價類,即 StringBuilder。與該類相比,通常應該優先使用 StringBuilder 類,因為它支持所有相同的操作,但由于它不執行同步,所以速度更快。
* B:簡述安全問題
* 線程安全效率低
* C:StringBuffer和String的區別
* String是一個不可變的字符序列。
* StringBuffer是一個可變的字符序列。
2.StringBuffer類的構造方法
* A:StringBuffer的構造方法:
* public StringBuffer():無參構造方法
* public StringBuffer(int capacity):指定容量(16)的字符串緩沖區對象
* public StringBuffer(String str):指定字符串內容的字符串緩沖區對象
* B:StringBuffer的方法:
* public int capacity():返回當前容量。 理論值(16不掌握)
* public int length():返回長度(字符數)。 實際值
3.StringBuffer的添加功能和刪除功能
* A:StringBuffer的添加功能
* public StringBuffer append(String str):
* 可以把任意類型數據添加到字符串緩沖區里面,并返回字符串緩沖區本身
* public StringBuffer insert(int offset,String str):
* 在指定位置把任意類型的數據插入到字符串緩沖區里面,并返回字符串緩沖區本身
* B:StringBuffer的刪除功能
* public StringBuffer deleteCharAt(int index):
* 刪除指定位置的字符,并返回本身
* public StringBuffer delete(int start,int end):
* 刪除從指定位置開始指定位置結束的內容,并返回本身,包含頭不包含尾。
4.StringBuffer的替換和反轉功能
* A:StringBuffer的替換功能
* public StringBuffer replace(int start,int end,String str):
* 從start開始到end用str替換
* B:StringBuffer的反轉功能
* public StringBuffer reverse():
* 將字符串反轉
5.StringBuffer的截取功能及注意事項
* A:StringBuffer的截取功能
* public String substring(int start):
* 從指定位置截取到末尾
* public String substring(int start,int end):
* 截取從指定位置開始到結束位置,包括開始位置,不包括結束位置
* B:注意事項
* 注意:返回值類型不再是StringBuffer本身,而是String。
6.StringBuffer和String的相互轉換
* A:String --> StringBuffer
* a:通過構造方法
* 1.StringBuffer sb = new StringBuffer("myworld");//創建對象,一創建就調用構造方法。
* b:通過append()方法
* 2.StringBuffer sb = new StringBuffer();
* sb.append("myworld");
* B:StringBuffer --> String
* a:通過構造方法
* 1. StringBuffer sb = new StringBuffer("wwwwh");
* String s = new String(sb);
* b:通過toString()方法
* 2. StringBuffer sb = new StringBuffer("wwwwh");
* String s = sb.toString();
* c:通過subString(0,length);
* 3. StringBuffer sb = new StringBuffer("wwwwh");
* String s = sb.substring(0,sb.length());
?7.把數組轉成字符串
* 需求:把數組中的數據按照指定個格式拼接成一個字符串舉例:int[] arr = {1,2,3}; 輸出結果:"[1, 2, 3]"用StringBuffer的功能實現public static void main(String[] args) {int[] arr = {1,2,3};StringBuffer sb = new StringBuffer("[");for (int i = 0; i < arr.length; i++) {if(i == 2){sb.append(arr[i] + "]");}else {sb.append(arr[i] + ",");}}System.out.println(sb);}8.字符串反轉
需求:把字符串反轉舉例:鍵盤錄入"abc" 輸出結果:"cba"用StringBuffer的功能實現 public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("請從鍵盤輸入一個字符串:");String str = sc.nextLine();StringBuffer sb = new StringBuffer(str);//利用構造把字符串對象轉化成StringBuffer對象str = sb.reverse().toString();//利用StringBuffer類中的反轉功能,然后再轉化成字符串 System.out.println(str);}9.StringBuffer和StringBuilder的區別
* A:StringBuilder的概述
* 通過查看API了解一下StringBuilder類
* 1.一個可變的字符序列。
* B:面試題
* String,StringBuffer,StringBuilder的區別?
* StringBuffer和StringBuilder的區別。
* StringBuffer是jdk1.0版本的,是線程安全的,效率低。
* StringBuilder是jdk1.5版本的,是線程不安全的,效率高。
* String和StringBuffer,StringBuilder的區別?
* String是一個不可變的字符序列。
* StringBuffer,StringBuilder是可變的字符序列。
10.String和StringBuffer分別作為參數傳遞
* String作為參數傳遞
* String不會改變原有對象的值,一旦初始化就不能被改變
* StringBuffer作為參數傳遞
* StringBuffer會改變原有對象的值。
11.數組高級冒泡排序原理案例
需求:數組元素:{24, 69, 80, 57, 13}請對數組元素進行排序。冒泡排序相鄰元素兩兩比較,大的往后放,第一次完畢,最大值出現在了最大索引處public static void main(String[] args) {int[] arr = {24,69,80,57,13};for (int i = 0; i < arr.length - 1; i++) { //外層循環控制的是找到最大的數為止for (int j = 0; j < arr.length - 1 - i; j++) { //內層循環控制的是倆倆相比較的次數if(arr[j] > arr[j+1]){int temp = arr[j];arr[j] = arr[j+1];arr[j+1] = temp;}}}for (int i : arr) {System.out.println(i);}}數組高級選擇排序原理
* 需求:* 數組元素:{24, 69, 80, 57, 13}* 請對數組元素進行排序。* 選擇排序* 從0索引開始,依次和后面元素比較,小的往前放,第一次完畢,最小值出現在了最小索引處public static void main(String[] args) {int[] arr = {66,55,44,33,22,11};for (int i = 0; i < arr.length - 1; i++) {for (int j = i + 1; j < arr.length; j++) { //j = i+1 的作用是:當獲取到最小值后,就該從下一位進 行比較if(arr[i] > arr[j]){int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}}}for (int i : arr) {System.out.println(i);}}12.Arrays類的概述和方法使用
* A:Arrays類概述
* 1.此類包含用來操作數組(比如排序和搜索)的各種方法。此類還包含一個允許將數組作為列表來查看的靜態工廠。
* 2.除非特別注明,否則如果指定數組引用為 null,則此類中的方法都會拋出 NullPointerException。
* 針對數組進行操作的工具類。
* 提供了排序,查找等功能。
* B:成員方法
* public static String toString(int[] a) //返回指定數組內容的字符串表示形式。
* public static void sort(int[] a) //對int數組按數字升序進行排序
* public static int binarySearch(int[] a,int key) //使用二分搜索法來搜索指定的 int 型數組,以獲得指定的值。
13.基本類型包裝類的概述
* A:為什么會有基本類型包裝類* 將基本數據類型封裝成對象的好處在于可以在對象中定義更多的功能方法操作該數據。 * B:常用操作* 常用的操作之一:用于基本數據類型與字符串之間的轉換。 * C:基本類型和包裝類的對應 * byte Byteshort Shortint Integerlong Longfloat Floatdouble Doublechar Characterboolean Boolean14.Integer類的概述和構造方法
* A:Integer類概述
* 通過JDK提供的API,查看Integer類的說明
* 1.Integer 類在對象中包裝了一個基本類型 int 的值。
* 2.該類提供了多個方法,能在 int 類型和 String 類型之間互相轉換,
* 3.還提供了處理 int 類型時非常有用的其他一些常量和方法
* B:構造方法
* 1.public Integer(int value) //構造一個新分配的 Integer 對象,它表示指定的 int 值。
* 2.public Integer(String s) //構造一個新分配的 Integer 對象,它表示 String 參數所指示的 int 值。
15.String和int類型的相互轉換
* A:int -- String* 1:和""(空字符串)進行拼接* int num = 100;* String s = num + ""; * 2:public static String valueOf(int i) //String 類中的ValueOf()方法,可將任意類型的數據,轉換成字符串* int num = 100;* String s = String.valueOf(num); * 3:int -- Integer -- String(Integer類的toString方法())* Integer i = new Integer(100); * String s = i.ToString();* 4:public static String toString(int i)(Integer類的靜態方法)* String s = Integer.ToString(100); * B:String -- int* 1:String -- Integer -- int* public static int parseInt(String s)* String s = "100";* int i = Integer.parseInt(s);16.JDK5的新特性自動裝箱和拆箱
* A:JDK5的新特性
* 自動裝箱:把基本類型轉換為包裝類類型
* 自動拆箱:把包裝類類型轉換為基本類型
* B:案例演示
* JDK5的新特性
* 1.自動裝箱和拆箱
* 2.泛型
* 3.增強for循環
* 4.靜態導入(導入的是方法)
* 5.可變參數(其實就是一個大小可變的數組)
* 6.互斥鎖
* Integer ii = 100;//自動裝箱
* ii += 200;//自動拆箱。
* C:注意事項
* 在使用時,Integer x = null;代碼就會出現NullPointerException。
* 建議先判斷是否為null,然后再使用。
?
轉載于:https://www.cnblogs.com/wanghui1316/p/5442272.html
總結
以上是生活随笔為你收集整理的stringBuffer、StringBuilder、排序、Arrays、Jdk1.5新特性(java基础知识十三)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 普元OA平台介绍
- 下一篇: 黑芝麻智能获红旗项目定点 将打造自动驾驶