StringBuffer高级数组及包装类

Posted 要死要活的程序猿啊

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了StringBuffer高级数组及包装类相关的知识,希望对你有一定的参考价值。

1:StringBuffer(掌握)
(1)用字符串做拼接,比较耗时并且也耗内存,而这种拼接操作又是比较常见的,

为了解决这个问题,Java就提供了一个字符串缓冲区类。

StringBuffer供我们使用。

(2)StringBuffer的构造方法

StringBuffer()
StringBuffer(int size)
StringBuffer(String str)

(3)StringBuffer的常见功能

  • 添加功能  sb.append("1111111111");
  • 删除功能    sb.delete(6, 10);
  • 替换功能    sb.replace(2, 4, "oh");
  • 反转功能       sb.reverse();
  • 截取功能(注意这个返回值)

(4)StringBuffer的练习(做一遍)
A:String和StringBuffer相互转换
  String -- StringBuffer
       构造方法
  StringBuffer -- String
       toString()方法
B:字符串的拼接
C:把字符串反转
D:判断一个字符串是否对称
(5)小细节:

String,StringBuffer,StringBuilder的区别?

  A:String是内容不可变的,而StrignBuffer,StringBuilder都是内容可变的。

  B:StringBuffer是同步的,数据安全,效率低;StringBuilder是不同步的,数据不安全,效率高。

StringBuffer和数组的区别?

  二者都可以看成是一个容器,装其他的数据。

但是,StringBuffer的数据最终是一个字符串数据。

而数组可以防止多种数据,但必须是同一种数据类型的。

形式参数问题:

       基本类型:形式参数的改变不影响实际参数
引用类型:形式参数的改变直接影响实际参数

注意:String作为参数传递,效果和基本类型作为参数传递是一样的。


2:数组高级以及Arrays(掌握)
(1)排序
  冒泡排序
    相邻元素两两比较,大的往后放,第一次完毕,最大值出现在了最大索引处。

  同理,其他的元素就可以排好。

public static void bubbleSort(int[] arr) {
        for (int i = 0; i < arr.length - 1; i++) {
            for (int j = 0; j < arr.length - i - 1; j++) {
                if (arr[j] > arr[j + 1]) {
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
        System.out.print("排序后:");
 }

  选择排序
    把0索引的元素,和索引1以后的元素都进行比较,第一次完毕,最小值出现在了0索引。

  同理,其他的元素就可以排好。

public static void selectArray(int[] arr) {
        for (int i = 0; i < arr.length - 1; i++) {
            for (int j = i + 1; j < arr.length; j++) {
                if (arr[j] > arr[i]) {
                    int temp = arr[i];
                    arr[i] = arr[j];
                    arr[j] = temp;
                }
            }
        }
        System.out.print("排序后:");
 }

(2)查找
  基本查找
  针对数组无序的情况

public static int getIndex(int[] arr,int value) {
    int index = -1;
    for(int x=0; x<arr.length; x++) {
        if(arr[x] == value) {
        index = x;
        break;
        }
    }
    return index;
}                    

  二分查找(折半查找)

  针对数组有序的情况(千万不要先排序,在查找)

public static int getIndex(int[] arr, int value) {
        int max = arr.length - 1;
        int min = 0;
        int mid = (max + min) / 2;

        while (arr[mid] != value) {
            if (arr[mid] > value) {
                max = mid - 1;
            } else if (arr[mid] < value) {
                min = mid + 1;
            }
            if (max < min) {
                return -1;
            }
            mid = (max + min) / 2;
        }
        return mid;
  }

(3)Arrays工具类
  是针对数组进行操作的工具类。包括排序和查找等功能。

public static String toString(int[] a)              //把数组转成字符串
public static void sort(int[] a)                       //对数组进行排序(底层使用快速排序)
public static int binarySearch(int[] a,int key)  //二分查找

(4)把字符串中的字符进行排序
  举例:
    "edacbgf"
  得到结果
    "abcdefg"

3:Integer(掌握)
(1)包装类

  为了让基本类型的数据进行更多的操作,Java就为每种基本类型提供了对应的包装类类型。

(2)Integer的构造方法

Integer i = new Integer(100);
Integer i = new Integer("100");

  注意:这里的字符串必须是由数字字符组成
(3)String和int的相互转换
  String --> int
    Integer.parseInt("100");
  int    --> String
    String.valueOf(100);
(4)其他的功能(了解)
  进制转换
(5)JDK5的新特性
  自动装箱 基本类型--引用类型
  自动拆箱 引用类型--基本类型
把下面的这个代码理解即可:

    Integer i = 100;
    i += 200;

(6)-128到127之间的数据缓冲池问题

  注意:Integer的数据直接赋值,如果在-127~128之间,会直接从缓冲池里获取数据。

4:Character(了解)
(1)Character构造方法

Character ch = new Character(\'a\');

(2)要掌握的方法:

  • 判断给定的字符是否是大写
  • 判断给定的字符是否是小写
  • 判断给定的字符是否是数字字符
  • 把给定的字符转成大写
  • 把给定的字符转成小写

(3)案例:
  统计字符串中大写,小写及数字字符出现的次数

以上是关于StringBuffer高级数组及包装类的主要内容,如果未能解决你的问题,请参考以下文章

JAVA String介绍常量池及StringStringBuilder和StringBuffer得区别. 以及8种基本类型的包装类和常量池得简单介绍

19-Java-核心类库2-包装类Integer类String类StringBuffer类StringBuilder类

Java基础13---StringBufferArrays包装类

Java基础13---StringBufferArrays包装类

字节集-编码操作-中繁体-StringBuffer-包装类

黑马程序员——Java基础---StringBufferArrays包装类