字符串
在JDK中设计了三个类都可以表示字符串
String StringBuffer StringBuilder
String
Java对这个类型有很多特殊设计:
1.为了书写简单,提供了常量形式;
2.为了使用方便,提供了大量的方法进行操作;
3.为了提高性能,设计了字符串常量池。
缺点:String内容不可变,当我们做大量字符串拼接动作时,在内存中就会产生很多中间值的字符串对象对内存进行占用。
/* String类---特殊的引用数据类型,它是唯一一个有常量表示形式的对象:双引号 既像基本数据类型那么方便,又能提供大量的方法 String提供大量方法操作字符串; 为了提高性能,Java专门给String设计了"字符串常量池",里面存放字符串常量 (在数据段有 静态区 和 字符串常量池) 局部变量在栈区 new出来的在堆区 引用数据类型在栈中空间的大小(引用占用的大小)跟计算机位数有关,32位是4字节 64位是8字节 */
所以JDK设计了可变长的字符串序列类型StringBuffer StringBuilder
StringBuffer
与String类没有任何继承关系,所以不能直接给StringBuffer的对象赋值字符串常量,必须new。
StringBuffer的对象提供了大量的跟字符串拼接相关方法,所有方法都是用来改变的当前对象
常用方法:
//只能用带参构造来生成对象 StringBuffer sb = new StringBuffer("hello"); sb.append("world");//往尾部添加内容 sb.insert(2,"Java");//往中间插入,offset 从下标offset位置开始插入 System.out.println(sb); sb.replace(3,5,"LOVO"); //前闭后开区间 System.out.println(sb); sb.delete(3,5);//前闭后开区间 System.out.println(sb); }
StringBuilder
语法,用法,含义上与上面完全一致
唯一的区别:StringBuffer线程安全(来自于Java1.0),StringBulider线程不安全(来自于Java5)
先记结论:凡是线程安全的,执行效率会低,凡是线程不安全的,执行效率会更高。
罗列掌握String中的常用方法
工具类:只提供静态方法