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)案例:
统计字符串中大写,小写及数字字符出现的次数