day13-StringBuffer和数组排序查找

2017-01-11  本文已影响47人  苦笑男神

13.01_常见对象(StringBuffer类的概述)

13.02_常见对象(StringBuffer类的构造方法)

StringBuffer sb = new StringBuffer("XXOO");
System.out.println(sb.length());  //字符串长度,结果4
System.out.println(sb.capacity()); //结果20 ,字符串length + 初始容量

13.03_常见对象(StringBuffer的添加功能)

StringBuffer是字符串缓冲区,当new的时候,是在堆内存创建了一个对象,底层是一个长度为16的字符数组,当调用添加方法时,不会再重新创建对象,而是不断的向原缓冲区添加字符。

StringBuffer sb = new StringBuffer("1234");
sb.insert(3, "xxoo");   // 指定位置添加,注意这里可能出现越界情况
System.out.println(sb); // 123xxoo4

13.04_StringBuffer的删除功能

13.05_StringBuffer的替换和反转功能

13.06_StringBuffer的截取功能及注意事项

13.07_StringBuffer和String的相互转换

13.10_StringBuffer和StringBuilder的区别

13.11_常见对象(String和StringBuffer分别作为参数传递)

13.12_数组冒泡排序 和 选择排序

排序思想.png

冒泡排序是最基本的排序方法,必须会的。直接代码:

int[] array = {12,2,56,23,14,89,34,11};

// 外循环只需要比较 array.length - 1 次就可以了
for (int i = 0; i < array.length - 1; i++) {
    // -1为了防止越界,-i为了提高效率
    for (int j = 0; j < array.length - 1 - i; j++) { 
        if (array[j] > array[j+1]) {
            int temp = array[j];
            array[j] = array[j+1];
            array[j+1] = temp ;
        }
    }
}  //冒泡排序的写法不唯一,但是只要思路一样都是可以的。
13.14_选择排序
int[] arr = {9,6,3,7,1,4,0,2};

for (int i = 0; i < arr.length -1; i++) {
    for (int j = i+1 ; j < arr.length; j++) {
        if (arr[i] > arr[j]) {
        int temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp ;
        }
    }
} //选择排序的写法不唯一,但是只要思路一样都是可以的。

13.16_数组高级二分查找

二分查找图解.png
public static int getIndexFromArray(int[] arr, int value) { //二分查找方法
    if(arr.length == 0) return -1 ;
    
    int min = 0;
    int max = arr.length - 1 ;
    int mid = (int) ((min + max) * 0.5);
    
    while (arr[mid] != value) {
        
        if (arr[mid] < value) { // 1.中间值小于value的情况: 说明在mid右边
            min = mid + 1 ;
        }else { // 2.中间值大于value: 说明在mid左边
            max = mid - 1;
        }
        
        //min大于max就越界了,就是没找到的情况
        if (min > max)  return -1 ;

        mid = (int) ((min + max) * 0.5);
    }
    
    return mid;
}

13.18_常见对象(Arrays类的概述和方法使用)

int[] arr = {11,66,22,99,33,22};
        
// 1.数组转字符串输出
System.out.println(Arrays.toString(arr));

// 2.数组排序(从小到大)
Arrays.sort(arr); //底层是快速排序法
System.out.println(Arrays.toString(arr));

// 3.二分查找(前提是有序数组)
System.out.println(Arrays.binarySearch(arr, 66));
System.out.println(Arrays.binarySearch(arr, 100)); //找不到,返回 -(插入点-1)

13.19_常见对象(基本类型包装类的概述)

八种基本数据类型包装类,其中其中都有parseXxx的方法,可以将这七种字符串转为为对应的基本数据类型(Character没有这个方法,字符串通过toCharArray()就可以转为字符数组)

13.20_Integer类的概述和构造方法

13.21_常见对象(String和int类型的相互转换)

13.22_常见对象(JDK5的新特性自动装箱和拆箱)

Integer ii = 100 ;  //自动装箱,不用new对象去创建了
ii ++ ;             //自动拆箱,不用intValue()去显示转int了
System.out.println(ii);

// 在使用时,Integer  x = null;代码就会出现NullPointerException。
// 建议先判断是否为null,然后再使用。

13.23_常见对象(Integer的面试题)

// ---- 面试题 ----
Integer i1 = new Integer(97);
Integer i2 = new Integer(97);
System.out.println(i1 == i2);   //false
System.out.println(i1.equals(i2)); //true
System.out.println("-----------1");

Integer i3 = new Integer(197);
Integer i4 = new Integer(197);
System.out.println(i3 == i4);//false
System.out.println(i3.equals(i4));//true
System.out.println("-----------2");

Integer i5 = 97;
Integer i6 = 97;
System.out.println(i5 == i6);  //true
System.out.println(i5.equals(i6)); //true
System.out.println("-----------3");

Integer i7 = 197;
Integer i8 = 197;
System.out.println(i7 == i8); //false
System.out.println(i7.equals(i8)); //true

//-128到127是byte的取值范围,如果在这个取值范围,自动装箱就不会
//新创建对象,而是从常量池中获取,如果超过了byte的范围,才会创建对象

END。
我是小侯爷。
在魔都艰苦奋斗,白天是上班族,晚上是知识服务工作者。
如果读完觉得有收获的话,记得关注和点赞哦。
非要打赏的话,我也是不会拒绝的。

上一篇 下一篇

猜你喜欢

热点阅读