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包装类