- 字符串操作
- 程序国际化
- Math与Random类
- 日期操作类
- 对象比较器
- 对象的克隆
- system与Runtime类
- 数字处理类
- MDS工具类
10…数据结构之二叉树实现 - JDK1.8 新特性
- List item
- 一、String类
字符串操作(string类)
1、string可以表示一个字符串。
2、string类实际是使用字符数组储存的
string类的两种赋值方法。
(1)直接赋值
String name=“小白”;
(2)通过关键字new调用String的构造方法赋值
String name =new String(“小白”)
//内部使用字符数组实现,不能继承(最终类)
public class API_string {
public static void main(String[] args) {
//String 的两种赋值方式
//1直接赋值
String s1="小白";
//一下代码创建了几个对象?2个
String s2=new String("小白");
System.out.println(s1==s2);
}
}
public class API_string {
public static void main(String[] args) {
//String 的两种赋值方式
//1直接赋值
String s1="小白";
//一下代码创建了几个对象?2个
String s2=new String("小白");
String s3="小白";
System.out.println(s1==s2);
System.out.println(s1==s3);
System.out.println("········1············");
String a="a";
String a1=a+"1";
String a2="a1";
System.out.println(a1==a2);
System.out.println("········a············");
final String b="b";
String b1=b+"1";
String b2="b1";
System.out.println(b1==b2);
System.out.println("········b············");
String c=getC();
String c1=c+"1";
String c2="c1";
System.out.println(c1==c2);
System.out.println("··········c··········");
final String d=getD();
String d1=d+"1";
String d2="d1";
System.out.println(d1==d2);
System.out.println("··········d··········");
}
private static String getC() {
return "c";
}
private static String getD() {
return "d";
}
}
String是一个特殊的类,掌握其特殊原理才能更好的发挥长处,避免缺点带来的消耗,也是面试官喜欢用来考察的知识点
**
String类字符与字符串的操作方法
**
package API;
import java.util.Arrays;
public class StringDome {
public static void main(String[] args) {
String s1="dfhjgkhf123";
char c=s1.charAt(2);
System.out.println(c);
System.out.println(s1.toCharArray());
char[] cs= {'a','b','c'};
String s2=new String(cs);
String s3=new String(cs,0,1);
System.out.println(s3);
System.out.println(Arrays.toString(s1.getBytes()));
System.out.println(s1.replace('h','='));
System.out.println(s1.replaceAll("//d", "*"));
System.out.println(s1.substring(0,4));
System.out.println(Arrays.toString(s1.split("1")));
System.out.println(s1.contains("d"));
System.out.println(s1.indexOf("f"));
}
}
- 二、StringBuffer类
**StringBuffer类
在实际开发中,我们经常使用到字符串连接的操作,如果用String来操作,则使用“+”号来实现字符串的连接
使用String连接的字符串,代码性能非常的低,因为string的内容不可以改变。解决这个办法的方法就是StringBuffer
StringBuffer源码分析`
在这里插入代码片
publiuc calss StringBufferDome{
public static void main(String[] args){
String a="a";
String b="b";
String c=a+b+1;
System.out.println(c);
String d="a"+1+2+3+"b";//a123b//常量相加没有性能问题(编译期进行优化)
//StringBuffer目的是用来解决字符串相加带来的性能问题(常量与变量)
//StringBuffer的内部实现采用字符数组,默认数组的长度为16,超过数组长度时,动态扩充的算法是原来长度*2+2
//所以当我们预知添加的数据长度时建议使用初始化容量的构造方法,来避免动态扩充的次数,从而提高效率
//线程安全的,会影响性能
StringBuffer sb=new StringBuffer(32);//带容量的构造(建议)
sb.append(a).append(b).append(1);
System.out.println(sb.toString());
}
}
StringBuffer常用操作方法
| 方法名称 | 描述 |
|---|---|
| public StringBuffer() | 构造一个空的StringBuffer对象 |
| public StringBuffer(String str) | 将指点的String变成StringBuffer的内容 |
| public StringBuffer(CharSequence seq) | 接收CharSequence接口实例 |
| public StringBuffer append(数据类型 b ) | 提供了很多的append()的方法,用于进行字符串的连接 |
| public StringBuffer delete(int start,int end) | 删除指点位置的内容 |
| public StringBuffer(String str) | 将指点的String变成StringBuffer的内容 |
| public int indexOf(String str) | 字符串的查询功能 |
| public StringBuffer insert(int offset,数据类型b) | 在指点位置添加一个内容 |
| public StringBuffer replace(int start,int end ,String str) | 在指点范围的内容替换为其他内容 |
| public StringBuffer substring(int start,int end) | 截取指点范围的内容 |
| public StringBuffer reverse () | 字符串反转 |
StringBuffer解决了使用Stringp拼接字符串时产生的大量垃圾对象的问题,内部实现其实是字符串数组
- 三、StringBuilder类
StringBuilder
一个可变的字符序列,此类提供一个与StringBuffer兼容的API,但不保证同步,该类被设计作为StringBuffer的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,介意优化采用该类,因为大多数实现中,它比StringBuffer更快
public class StringBuilder {
public static void main(String[] args) {
// StringBuffer和StringBuilder的区别?
//StringBuffer是线程安全,性能低,适合多线程使用,JDK1.0
//StringBuilder是线程不安全的,性能高,适合在单线程中使用,这种情况占大多数,在JDK1.5后添加
StringBuilder sb=new StringBuilder();
//字符串相加操作
//多个常量相加没有性能问题,在编译期优化
//变量与常量相加,会产生多个垃圾对象
String a="a";
String b=a+"b";
String c=null;
for(int i=0;i<5;i++) {
c+=i;//每次循环会产生一个StringBuilder对象实现拼接,性能低,最好是动手创建StringBuilder
}
}//字符串相加,在编译后会使用StringBuilder来优化代码,实现拼接
}



