java学习第十三天
1:StringBuffer(掌握) (1)用字符串做拼接,比较耗时并且也耗内存,而这种拼接操作又是比较常见的,为了解决这个问题,Java就提供了 一个字符串缓冲区类。StringBuffer供我们使用。 (2)StringBuffer的构造方法 A:StringBuffer() B:StringBuffer(int size) C:StringBuffer(String str) (3)StringBuffer的常见功能(自己补齐方法的声明和方法的解释) A:添加功能 B:删除功能 C:替换功能 D:反转功能 E:截取功能(注意这个返回值) (4)StringBuffer的练习(做一遍) A:String和StringBuffer相互转换 String -- StringBuffer 构造方法 StringBuffer -- String toString()方法 B:字符串的拼接 C:把字符串反转 D:判断一个字符串是否对称 (5)面试题 小细节: StringBuffer:同步的,数据安全,效率低。 StringBuilder:不同步的,数据不安全,效率高。 A:String,StringBuffer,StringBuilder的区别 B:StringBuffer和数组的区别? 二者可以看出是一个容器,装其他的数据 但是StringBuffer的数据最终是一个字符串数据 而数组可以放置任意类型的同一种 数据 (6)注意的问题: String作为形式参数,StringBuffer作为形式参数。 2:数组高级以及Arrays(掌握) (1)排序 A:冒泡排序 相邻元素两两比较,大的往后放,第一次完毕,最大值出现在了最大索引处。同理,其他的元素就可以排好。 public static void bubbleSort(int[] arr) { for(int x=0; x<arr.length-1; x++) { for(int y=0; y<arr.length-1-x; y++) { if(arr[y] > arr[y+1]) { int temp = arr[y]; arr[y] = arr[y+1]; arr[y+1] = temp; } } } } B:选择排序 把0索引的元素,和索引1以后的元素都进行比较,第一次完毕,最小值出现在了0索引。同理,其他的元素就可以排好。 public static void selectSort(int[] arr) { for(int x=0; x<arr.length-1; x++) { for(int y=x+1; y<arr.length; y++) { if(arr[y] < arr[x]) { int temp = arr[x]; arr[x] = arr[y]; arr[y] = temp; } } } } (2)查找 A:基本查找 针对数组无序的情况 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; } B:二分查找(折半查找) 针对数组有序的情况(千万不要先排序,在查找) public static int binarySearch(int[] arr,int value) { int min = 0; int max = arr.length-1; int mid = (min+max)/2; while(arr[mid] != value) { if(arr[mid] > value) { max = mid - 1; }else if(arr[mid] < value) { min = mid + 1; } if(min > max) { return -1; } mid = (min+max)/2; } return mid; } (3)Arrays工具类 A:是针对数组进行操作的工具类。包括排序和查找等功能。 B:要掌握的方法(自己补齐方法) 把数组转成字符串: 排序: 二分查找: (4)Arrays工具类的源码解析 (5)把字符串中的字符进行排序 举例: "edacbgf" 得到结果 "abcdefg" 3:Integer(掌握) (1)为了让基本类型的数据进行更多的操作,Java就为每种基本类型提供了对应的包装类类型 byte Byte short Short int Integer long Long float Float double Double char Character boolean Boolean (2)Integer的构造方法 A:Integer i = new Integer(100); B:Integer i = new Integer("100"); 注意:这里的字符串必须是由数字字符组成 (3)String和int的相互转换 A:String -- int Integer.parseInt("100"); B:int -- String String.valueOf(100); (4)其他的功能(了解) 进制转换 (5)JDK5的新特性 自动装箱 基本类型--引用类型 自动拆箱 引用类型--基本类型 把下面的这个代码理解即可: Integer i = 100; i += 200; (6)面试题 -128到127之间的数据缓冲池问题 4:Character(了解) (1)Character构造方法 Character ch = new Character('a'); (2)要掌握的方法:(自己补齐) A:判断给定的字符是否是大写 B:判断给定的字符是否是小写 C:判断给定的字符是否是数字字符 D:把给定的字符转成大写 E:把给定的字符转成小写 (3)案例: 统计字符串中大写,小写及数字字符出现的次数