StringBuffer类、Arrays工具类、包装类、Character类

StringBuffer类、Arrays工具类、包装类、Character类

StringBuffer

  • 是一个可变的字符串,是线程安全的字符串(效率低)用于拼接字符串;

构造方法

  • pubilc StringBuffer(String str); 指定字符串内容的字符串缓冲区对象

添加功能

  • pubilc StringBuffer append(String str):可以把任意类型数据,添加到字符串缓冲区里面,并返回字符串缓冲区本身;

StringBuffer 可以把任意类型数据添加到字符串缓冲区中,开辟的是一块空间,长度是可变的

翻译:在A方法中,如果要将一个字符串到B方法中做添加功能,则直接调用B方法,无需接收返回参数;因为地址值是一个,B方法中更新了字符串内容。A方法按照地址值去找,找到就是最新的内容;

  • public StringBuffer inser(int offset,String str):在指定位置把任意类型的数据插入到字符串缓冲区里面,并返回字符串缓冲区本身;

StringBuilder类

StringBuilder类:一个可变的字符串,不同步(不安全,效率高)。

此类提供一个与StringBuffer兼容的API,但不保证同步,也就是不安全,但是效率高;

StringBuilder的使用与StringBuffer一模一样:

StringBuilder和StringBuffer类的 构造方法 和 方法通用

面试题

1、String类和StringBuffer、StringBuilder 的区别?

A:String类的内容时不可变的,StringBuffer和StringBuilder的内容时可变的

B:StringBuffer是同步的线程安全的,效率低的; StringBuilder是不同步的线程不安全的,效率高的

2、StringBuffer和数组有什么区别?

二者都可以看做一个容器,装其他的数据;

但是:StringBuffer的数据最终是一个字符串数据。

而数组可以放置多种数据,但必须是同一种数据类型的;

3、形式参数问题

形式参数:

​ 基本类型:形式参数的改变不影响实际参数;

​ 引用类型:形式参数的改变直接影响实际参数;

  • String作为参数传递:
    • 注意:String作为参数传递,效果和基本类型作为参数传递是一样的;
  • StringBuffer作为参数传递
    • StringBuffer作为参数传递时,形式参数的改变直接影响实际参数;因为改变的是地址值;

数组高级

冒泡排序

原理:
相邻元素,两两比较。大的往后放。第一次完毕后,最大值就出现在了最大索引处。
同理,继续,即可得到一个排好序的数组。

规律:
1、两两比较,大的往后放。
2、每一次比较完毕后,下一次比较的时候就会减少一个元素的比较。
3、第一次比较,有0个元素不比
第二次比较,有1个元素不比
第三次比较,有2个元素不比
....
4、总共需要比较数组长度 - 1次

选择排序

原理:
从0索引开始,依次和后面元素比较,小的往前放,第一次完毕,最小值出现在了最小索引处

规律:
1、第一次从0索引开始和其他的进行比较
第二次是从1索引开始和其他的进行比较
......
2、最后一次是数组长度-2的索引元素和数组长度-1的索引元素进行比较。

基本查找

  • 适合数组元素无序 - 从头找到尾(数组遍历!)

二分查找

  • 折半查找:当数组元素有序时(集合有序时,可以使用)

思想:每次都猜中间的那个元素,比较大或者小,就能减少一半的元素

思路:
A:定义最小索引,最大索引
B:计算出中间索引
C:拿中间索引的值和要查找的元素进行比较
				相等:就直接返回中间的索引
				不相等:
							大了,往左边找
							小了,往右边找
D:重新获取最小索引或者最大索引
							大了,往左边找
											max = mid(中间值)-1;
							小了,往右边找
											min = mid+1;
E:回到B的位置

Arrays工具类:针对数组进行操作的工具类

此类包括操作数组的各种方法;比如排序和查找

常用方法

1、static String toString(int[] a) :把数组转换成字符串
2、static void sort(int[] a) 对数组进行排序
3、static int binarySearch(int[] a, int key) 使用二分法查找,返回索引

基本包装类

为了对基本数据类型 进行更多的操作,更方便的操作,JAVA就针对每一种基本数据类型提供了对应的类类型。-->包装类类型

Integer类

最常见的操作之一:用于基本类型与字符串之间的转换;

自动拆箱 装箱

自动装箱:把基本类型转换为包装类类型

自动拆箱:把包装类类型转换为基本类型

Character类

Character 类在对象中包装一个基本类型 char 的值。

Character 类型的对象包含类型为 char 的单个字段。

**此外,该类提供了几种方法,以确定字符的类别(小写字母,数字,等等),并将字符从大写转换成小写,反之亦然。 **

判断方法

static boolean isLowerCase(int codePoint) 确定指定字符(Unicode 代码点)是否为小写字母。
static boolean isUpperCase(char ch) 确定指定字符是否为大写字母
static boolean isDigit(char ch) 确定指定字符是否为数字。

转换方法

static char toUpperCase(char ch) 把给定的字符转换为大写字符
static int toLowerCase(int codePoint) 把给定的字符转换为小写字符

posted on 2021-04-03 15:59  KAI_D  阅读(92)  评论(0)    收藏  举报