Java中的三种操作字符串、包装类和集合初解

三种操作字符串

String  StringBuffer  StringBuilder

StringBuffer 线程安全的可变字符序列,耗费系统资源(独占资源)

StringBuilder 线程不安全,节省系统资源

StringBuffer 和 StringBuilder都是可变的字符序列,操作StringBuffer  StringBuilder的方法,一般没有返回值

String 线程不安全的 不可变的字符序列(不能修改字符串本身)

StringBuffer 和 StringBuilder的常用方法

1.拼接

关键字 append

public static void fun1() {
	// 创建一个StringBuffer对象
	StringBuffer sb = new StringBuffer();
	// 容量 默认容量16
	System.out.println(sb.capacity());
	// 长度
	System.out.println(sb.length());
	// 拼接
	sb.append("wanglong").append(false);
	System.out.println(sb);
	// StringBuffer转换成 字符串类型
	String string = sb.toString();
	System.out.println(string);
}

2.插入

关键字 insert

public static void fun2() {
	// 插入
	StringBuffer sb = new StringBuffer("wanglong");
	sb.insert(4,"da").append("nb");
	System.out.println(sb);
	// 修改
	sb.setCharAt(1, 'x'); 
	System.out.println(sb);
}

当有自身类型的返回值时 可以连续调用自身方法 

如: sb.insert(4,"ba").append("nb");

修改 :  setCharAt(index,'char')

3.删除

关键字 delete

public static void fun3() {
	StringBuffer stringBuffer = new StringBuffer();
	stringBuffer.append("wanglong");
	// 删除  留头不留尾 实际删除[0,4)
	// 传入的结束坐标 > 字符串长度  相当于清空字符串
	stringBuffer.delete(0, 4);
	System.out.println(stringBuffer);
	// 注意 直接传入的是 要删除的字符的角标
	stringBuffer.deleteCharAt(1);
	System.out.println(stringBuffer);
	
	// 获取stringBuffer中的字符
	char c = stringBuffer.charAt(1);
	System.out.println(c);
	
	// 字符数组 转化成 stringBuffer对象
	char[] arrry = {'a','b','c'};
	String string = String.valueOf(arrry);
	System.out.println(string);
	StringBuffer sb = new StringBuffer(string);
	System.out.println(sb);
}

删除单个字符:  deleteCharAt(index)

获取单个字符 CharAt(index)

字符数组转化成StringBuffer对象

1️⃣先将 字符数组 转化成 字符串型 

char[] arrry = {'a','b','c'};
String string = String.valueOf(arrry);

2️⃣再将字符串型转化为StringBuffer对象

StringBuffer sb = new StringBuffer(string);
System.out.println(sb);

4.反转

关键字 reverse

public static void fun4() {
	//键盘输入一个字符串 将字符串反转
	System.out.println("请输入字符串");
	Scanner scanner = new Scanner(System.in);
	String string = scanner.nextLine();
	// 转换成StringBuffer对象
	StringBuffer sb = new StringBuffer(string);
	// 反转
	sb.reverse();
	System.out.println(sb);
}

字符串转化成StringBuffer对象

StringBuffer sb = new StringBuffer(string);

5.替换

关键字 replace

public static void fun5() {
	// 替换
	StringBuffer sb = new StringBuffer();
	sb.append("wanglong");
	sb.replace(0, 4, "lixiao");
	System.out.println(sb);
}
替换:  replace(start , end , "string")

6.string与StringBuffer的相互转换
(String转成StringBuffer) 构造方法

String string = "javalihaoning";

StringBuffer stringBuffer = new StringBuffer(string);

(StringBuffer转化成String)  .tostring方法

StringBuffer stringBuffer = new StringBuffer("lihaoningjava");

String str = stringBuffer.tostring();

三个操作字符串的类 当做参数时的效果

字符串当参数时 和基本数据类型一样 值传递

StringBuffer 和 StringBuilder 是地址传递

基本数据类型的包装类

byte Byte

short Short

int Integer

long Long

float Float

double         Double

boolean         Boolean

char Character

给基本数据类型增加包装类 可以增加成员方法和静态方法

方便调用 功能进行了扩展

// 创建一个Integer
Integer n1 = new Integer(10);
// 转化成数字
int i = n1.intValue();
System.out.println(i);
Integer n2 = 10; // 自动装箱 Integer.valueOf(10);

这个过程中 会根据数值创建出一个 数值为10的Integer对象,这就是装箱

// 运算的时候 会进行自动拆箱 n2.intValue();
int sum = n2 + 5; // 不同类型可以相加 系统在执行中自动进行了装箱、拆箱处理
System.out.println(sum);

拆箱 就是自动将包装类转换为基本数据类型  

Integer i = 10; // 装箱
int n = i; // 拆箱

简单一点说装箱就是 自动将基本数据类型转换为包装器类型;拆箱就是 自动将包装器类型转换为基本数据类型

集合 collection

集合同数组一样,也是一种容器  分为 单列集合 和 双列集合

因为数组的长度一旦确定就无法更改,而且数组中只能保存相同数据类型的元素 存在弊端 所以有了集合

集合的长度可变,可以存放不同类型的元素,但是集合中只能存放 引用类型(对象类型)


创建一个集合:

Collection collection = new ArrayList();  // 需要多态的形式创建

每当向集合中存储基本数据类型的时候 系统会自动装箱成对应的包装类

collection.add("a");  // 向集合中存放元素

collection.size();  // 获取元素个数

collection.contains("x");  // 判断集合中是否含有元素x 并返回一个布尔值

collection.remove("y");  // 删除元素y

collection.isEmpty();  // 判断集合是否为空

Object[] array = collection.toArray();  // 集合转为数组

collection.clear();  // 清空数组

猜你喜欢

转载自blog.csdn.net/lijock/article/details/80356255