StringBuffer的一些小整理

大家好,欢迎大家在百忙当中来到我的博客文,也许是因为各种需要到此一游,哈哈。不过来到这里不会让您失望的,此段博文是这段时间不忙的时候整理出来的,对于刚学java基础的同学非常适合。下面言归正传:


 

首先我们来看看StringBuffer的构造方法:

StringBuffer()     构造一个其中不带字符的字符串缓冲区,其初始容量为 16 个字符。
StringBuilder(CharSequence seq)      构造一个字符串缓冲区,它包含与指定的 CharSequence 相同的字符。
StringBuffer(int capacity)      构造一个不带字符,但具有指定初始容量的字符串缓冲区。
StringBuffer(String str)       构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。

下面由代码来解释一下:

 1 package com.zys.stringBuffer;
 2 
 3 public class Demo1_StringBuffer {
 4 
 5     public static void main(String[] args) {
 6     
 7         StringBuffer sb = new StringBuffer();
 8         System.out.println(sb.length());
 9         System.out.println(sb.capacity());
10         
11         StringBuffer sb2 = new StringBuffer(10);
12         System.out.println(sb2.length());
13         System.out.println(sb2.capacity());
14         
15         StringBuffer sb3 = new StringBuffer("heima");
16         System.out.println(sb3.length());//实际字符的个数
17         System.out.println(sb3.capacity());//字符串的length + 初始容量
18     }
19 }
20 /*输出
21 0,16,0,10,5,21
22 */

 也就是说StringBuffer有一个字符串缓冲区,其初始化容量默认值为16。其中的length()方法和capacity()方法是StringBuffer类中的方法。

其次,让我们来看看StringBuffer类中常用方法,下面代码每个方法我都抽取成一个方法,这样我觉得好理解一点点,望读者见谅:

 1 package com.zys.stringBuffer;
 2 
 3 public class Demo2_Conformity {
 4     /**
 5      * public StringBuffer insert(int offset,String str) 将字符串插入此字符序列中
 6      * public StringBuffer deleteCharAt(int index)删除指定元素,并返回本身 
 7      * public StringBuffer delete(int start,int end)从指定位置到指定结束
 8      * public StringBuffer replace(int start,int end,String str) 替换
 9      * public StringBuffer reverse(); 反转
10      * 
11      * StringBuffer的截取功能
12      * public String substring(int start)从指定位置到结尾
13      * public String substring(int start,int end)从指定开始位置到指定结束位置,只包含头不包含尾
14      * 注意:截取功能返回值类型不在是StringBuffer类型,而是String
15      * 
16      * String --StringBuffer 1.通过构造方法 2.通过append()方法
17      * StringBuffer --String 1.通过构造方法 2.通过toString()方法 3.通过substring(0,length)
18      */
19     public static void main(String[] args) {
20         // demo1();插入字符
21         //demo2();删除字符
22         //demo3();替换与反转
23         //demo4();截取字符
24         /*String和StringBuffer分别传参数的问题 ,String作为常量,被初始化了,将不能改变,此细节一定要注意。
25          */
26     }
27 
28     private static void demo4() {
29         StringBuffer sb = new StringBuffer("woaiheima");
30         //String str = sb.substring(0);
31         //System.out.println(str);
32         String str2 = sb.substring(2, 9);
33         System.out.println(str2);
34     }
35 
36     private static void demo3() {
37         StringBuffer sb = new StringBuffer("heima");
38         //sb.replace(0, 3, "bai");
39         //System.out.println(sb);
40         StringBuffer sb1 = new StringBuffer("我爱总复习");
41         sb1.reverse();
42         System.out.println(sb1);
43     }
44 
45     private static void demo2() {
46         StringBuffer sb = new StringBuffer();
47         sb.append("heima");
48         // sb.deleteCharAt(4);
49         sb.delete(0, 2);
50         // sb.delete(0,sb.length());
51         System.out.println(sb);
52     }
53 
54     private static void demo1() {
55         StringBuffer sb = new StringBuffer("1234");
56         sb.insert(3, "heima");
57         System.out.println(sb);
58     }
59 
60 }

 

 


下面来说一下StringBuffer StringBuilder的区别:

*StringBuffer是jdk1.0版本的,是线程安全的,但效率低
* StringBuilder是jdk1.5版本的,是线程不安全的,但效率高
* 注:可拿上厕所的例子比喻

* String StringBuffer StringBuilder
* String是一个不可变的字符序列
* StringBuffer StringBuilder是可变的字符序列


 

下面来谈一谈冒泡排序和选择排序,通过代码的方式来看:

 1 package com.zys.array;
 2 
 3 public class Demo1_Array {
 4     /**
 5      *冒泡排序:
 6      *分析:
 7      *1.创建int[]数组
 8      *2.写一个自定义方法,其中这里面写排序逻辑
 9      *3.写一个输出的方法
10      *冒泡排序与选择排序类同
11      */
12     public static void main(String[] args) {
13         int[] arr = { 22, 69, 80, 57, 13 };
14         //bubbleSort(arr);
15         XuanzeSort(arr);
16         print(arr);
17     }
18 
19     public static void XuanzeSort(int[] arr) {
20         for (int i = 0; i < arr.length - 1; i++) {
21             for (int j = i + 1; j < arr.length; j++) {
22                 if (arr[i] > arr[j]) {
23                     swap(arr, i, j);
24                 }
25             }
26         }
27     }
28 
29     public static void bubbleSort(int[] arr) {
30         for (int i = 0; i < arr.length - 1; i++) {// 外循环只需比较arr.length-1就好了
31             for (int j = 0; j < arr.length - 1 - i; j++) {// -1是为了防止越界异常,-i是提高效率
32 
33                 if (arr[j] > arr[j + 1]) {
34                     swap(arr, i, j + i);
35 
36                 }
37             }
38         }
39     }
40 
41     public static void print(int[] arr) {
42         for (int i = 0; i < arr.length; i++) {
43             System.out.print(arr[i] + " ");
44         }
45     }
46 
47     public static void swap(int[] arr, int i, int j) {
48         int temp = arr[i];
49         arr[i] = arr[j];
50         arr[j] = temp;
51     }
52 }

 


 

再补充一个Integer的方面的一些面试题,看下面代码:

 1 package com.zys.array;
 2 
 3 public class Demo5_Integer {
 4     public static void main(String[] args) {
 5         Integer i1 = new Integer(97);
 6         Integer i2 = new Integer(97);
 7         System.out.println(i1 == i2);//false
 8         System.out.println(i1.equals(i2));//true
 9         System.out.println("-----------");
10 
11         Integer i3 = new Integer(128);
12         Integer i4 = new Integer(128);
13         System.out.println(i3 == i4);//false
14         System.out.println(i3.equals(i4));//true
15         System.out.println("-----------");
16 
17         Integer i5 = 127;
18         Integer i6 = 127;
19         System.out.println(i5 == i6);//true
20         System.out.println(i5.equals(i6));//true
21         System.out.println("-----------");
22 
23         Integer i7 = 128;
24         Integer i8 = 128;
25         System.out.println(i7 == i8);//false
26         System.out.println(i7.equals(i8));//true
27         /*
28          * -128到127是byte的取值范围,如果在这个范围取值内,自动装箱不会创建对象,而是在常量池中获取值
29          * 如果是超过了byte取值范围就会创建对象
30          * i > -128 && i < 127
31          */
32     }
33 }

 

 到此,这篇博文就到最后了,大家是不是也收获颇丰呢,我现在也是最基础的。就让我们一块走下去吧,要想改变世界,就先得改变自己。。

posted @ 2018-05-10 10:00  挽安~  阅读(173)  评论(0编辑  收藏  举报