一.StringBuffer和StringBuilder
(StringBuffer和StringBuilder的方法是一样的)
StringBuffer:
JDK1.0出来的 优点:线程安全 缺点:耗费系统资源
StringBuilder:
JDK1.5出来的 优点:节省系统资源 缺点:线程不安全了
(StringBuffer和StringBuilder都是可变的字符序列--修改的是对象本身)
操作StringBuffer的方法 一般是没有返回值的
String:
线程不安全 不可变的字符序列 不能修改字符串本身
----------------------------------分隔符---------------------------------------
常见的方法:
1.拼接:
把int array= new int[]{1,2,3,4};输出成[1,2,3,4]
int[] array = new int[]{1,2,3,4};
StringBuffer sb = new StringBuffer();
sb.append("[");
for (int i = 0; i < array.length; i++) {
if (i == array.length - 1) {
sb.append(array[i]).append("]");
}else {
sb.append(array[i]).append(",");
}
}
System.out.println(sb);
}
2.插入:insert(插入的位置的下标,插入的元素)
3.删除:(留头不留尾)
如果delete传入的结束坐标大于字符串的长度 相当于清空字符串
StringBuffer stringBuffer = new StringBuffer();
stringBuffer.append("qwertyu");
//删除 留头不留尾
stringBuffer.delete(0, 4);
//传入的结束坐标 > 字符串的长度 相当于清空字符串
System.out.println(stringBuffer);
stringBuffer.deleteCharAt(2);
System.out.println(stringBuffer);
//获取stringBuffer中的字符
char c = stringBuffer.charAt(1);
System.out.println(c);
//字符数组 转化成stringBuffer对象
char[] array = {'a','b','c'};
String string = String.valueOf(array);
StringBuffer sb = new StringBuffer(string);
System.out.println(sb);
4.反转: reverse方法
5.替换: replace方法
6.String和StringBuffer的转换:
//创建一个StringBuffer对象
StringBuffer sb = new StringBuffer();
//默认容量是16
System.out.println(sb.capacity());//打印结果:16
//长度
System.out.println(sb.length());//打印结果:0
//拼接
StringBuffer buffer = sb.append("qwertyu");
System.out.println(buffer.toString());
//StringBuffer转换成字符串类型
String string = sb.toString();
String和StringBuffer和StringBuilder这三个操作字符串的类作为参数时的不同效果:
public static void fun1(String str) {
str = "swift";
}
public static void fun2(StringBuffer sb) {
sb.append("swift");
}
public static void fun3(StringBuilder sb) {
sb.append("swift");
}
public static void main(String[] args) {
//字符串在当参数时 和基本数据类型一样 值传递
//基本数据类型的包装类
String string = "Taylor";
fun1(string);
System.out.println(string);
//相当于传进去的是 对象地址
StringBuffer sb = new StringBuffer("Taylor");
fun2(sb);
System.out.println(sb);
StringBuilder sBuilder = new StringBuilder("Taylor");
fun3(sBuilder);
System.out.println(sBuilder);
}
二.基本数据类型的包装类
基本数据类型 包装类
byte Byte
short Short
int Integer
long Long
float Float
double Double
boolean Boolean
char Character
包装类的作用:
有类就可以增加成员方法 静态方法
可以将功能进行拓展
创建包装类对象
//创建一个Integer
Integer n1 = new Integer(10);
//转化成数字(转成什么类型就用.数据类型value方法)
int i = n1.intValue();
System.out.println(i);
JDK1.5以后可以 自动装箱和自动拆箱
直接用数字来声明(实际上系统是帮你调用了一个方法:Integer.valueOf(10))
Integer n2 = 10;
进行运算时 系统会自动拆箱(自动帮你调用了n2.intValue()方法)
int sum = n2 + 5;
System.out.println(sum);
tip:
//如果值在[-128,127]之间
//实际上是从系统已经创建好的数组 取一个值给你
//超过了这个范围 会新建一个对象给你
//所以下面的两个对象 地址不同
Integer num1 = 128;
Integer num2 = 128;
System.out.println(num1 == num2);
System.out.println(num1.equals(num2));