一.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));