第十三节:StringBuffer类_排序算法_自动装箱(个人总结)

来源:互联网 发布:死神结局是什么 知乎 编辑:程序博客网 时间:2024/06/05 03:21

StringBuffer类

  • StringBuffer在对字符串进行拼接时,不要再出现用"+"进行拼接了,当用+号进行两个变量代表的字符串拼接时,又会在常量池内产生新的对象以及新的垃圾,因此在使用StringBuffer时尽量全部使用append()方法进行字符串的拼接.
  • StringBuffer和String的区别除了讲师笔记中的区别外最重要的一个区别在于调用方法后的返回逻辑,String调用它的诸如substring(),replace()等方法后,又返回了一个新的String类对象,必须另外再声明一个String引用去接收;而StringBuffer在调用它自身的方法后,返回的还是其本身对象的引用(注意其调用substring()返回的不再是其本身也是一个String!!!),不需要去创建新的对象进行接收了.这点区别必须格外注意.

排序算法

  • 冒泡排序

    • 逻辑:相邻元素两两比较,大的往后放,第一次完毕,最大值出现在了最大索引处
  • public static void bubbleSort(int[] arr) {    for (int i = 0; i < arr.length - 1; i++) {              //外循环只需要比较arr.length-1次就可以了        for (int j = 0; j < arr.length - 1 - i; j++) {      //-1为了防止索引越界,-i为了提高效率            if(arr[j] > arr[j+1]) {                int temp = arr[j];                arr[j] = arr[j + 1];                arr[j+1] = temp;                //swap(arr,j,j+1);            }        }    }}
  • 选择排序

    • 从0索引开始,依次和后面元素比较,小的往前放,第一次完毕,最小值出现在了最小索引处
  • public static void selectSort(int[] arr) {    for (int i = 0; i < arr.length - 1; i++) {              //只需要比较arr.length-1次        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;*/                swap(arr,i,j);            }        }    }}

Arrays工具类

  • 此类中两个方法了解一下:
    • Arrays.toString(...)该方法可以将所有的数组属性直接转成String字符串拼接起来.
    • Arrays.sort(...)对数组内的数据进行排序.

自动装箱和拆箱

  • 自动化方便了我们的生活的同时也使得一些问题难以解决,因为其自动拆箱装箱,因此我们不需要手动的去将基本数据类型装箱成引用数据类型,也不需要将引用数据类型手动拆箱成基本数据类型了.但是正是因为它是自动执行的,因此有些情况我们看不到,当出问题了也不容易去解决,因此尽量少用此特性,能全部用基本数据类型搞定的就用基本数据类型.
  • 对于Integer,因为其内部存在一个缓冲池,池子里面放有从-128-127所有的整型数据,当以Integer i = 97;对i进行赋值时会先检查所需赋的值是否在缓冲池数据的范围内,如果在则直接从池子中取数据,如果不存在,如Integer i = 197,则会新建一个Integer的对象然后再把197所在的引用地址值赋给变量.

0 0
原创粉丝点击