字符串是用一对双引号括起来的字符序列,在java中,它不像c语言中所用的字符数组,实际上是由String类所实现。每一个字符串将产生一个String类的新的实例。为了高效的处理字符串,java将字符串分为两种:一种是在程序中长度不会被改变的字符串;一种是在程序中长度会被改变的字符串,又称为缓冲字符串。Java环境为了存储和维护这两类字符串提供了String和StringBuffer两个类。
String类是final类,也即意味着String类不能被继承,并且它的成员方法都默认为final方法。在Java中,被final修饰的类是不允许被继承的,并且该类中的成员方法都默认为final方法。
String str = “this is a String”;
str.equals(“this is another String”);//result = false;
//将字符号串中第一个oldChar替换成newChar。
//trim()方法可以将字符串中开头和结尾处的空格去掉
String str1=new String(” “+” This is a man “);
System.out.print( “1”);
System.out.print( str1.trim());
System.out.println( “2”);//结果:1This is a man2
//将该String对象与str连接在一起。用+也行
//将字符串转换成小写
//将字符串转换成大写
//可以将任何类型的数据对象转换为一个字符串
System.out.print(String.valueOf(Math.PI));
//该String对象是否以suffix 结尾。
//该String对象是否以prefix开始。
//取字符串中的某一个字符,其中的参数index指的是字符串中序数。字符串的序数从0开始到length()-1
String string = “This is a String”;
char ch = string.charAt(3);
System.out.println(ch);//result = s;
/*从这个字符串中的字符复制到目标字符数组要复制的第一个字符在索引srcBegin处,被复制的最后一个字符是在的索引srcEnd1即要复制的字符总数是srcEnd srcBegin处。
字符被复制到子数组的夏令时开始在指数dstBegin和结束于索引:dstbegin + (srcEnd-srcBegin) - 1*/
String string = “This is a String”;
char[] chr = new char[10];
string.getChars(5, 12, chr, 0); System.out.println(chr);//result=is a St
//取从 beginIndex位置开始到endIndex位置的子字符串
是一个可变对象,当对他进行修改的时候不会像String那样重新建立对象它只能通过构造函数来建立, StringBuffer sb = new StringBuffer();
对象被建立以后,在内存中就会分配内存空间,并初始保存一个null.通过它的append方法向其赋值.sb.append("hello");
字符串连接操作中StringBuffer的效率要明显比String高:
String对象是不可变对象,每次操作Sting 都会重新建立新的对象来保存新的值.StringBuffer对象实例化后,只对这一个对象操作。
//该方法的作用是追加内容到当前StringBuffer对象的末尾,类似于字符串的连接。调用该方法以后,StringBuffer对象的内容也发生改变
例: StringBuffer sb = new StringBuffer(“abc”);
sb.append(true);
则对象sb的值将变成”abctrue”
//该方法的作用是修改对象中索引值为index位置的字符为新的字符ch。
StringBuffer sb = new StringBuffer(“abc”);
sb.setCharAt(1,D’);
则对象sb的值将变成”aDc”。
// 该方法的作用是将StringBuffer对象中的内容反转,然后形成新的字符串。
StringBuffer sb = new StringBuffer(“abc”);
sb.reverse();
经过反转以后,对象sb中的内容将变为”cba”。
//该方法的作用是将StringBuffer对象的中存储空间缩小到和字符串长度一样的长度,减少空间的浪费。
//该方法的作用是删除指定位置的字符,然后将剩余的内容形成新的字符串。
StringBuffer sb = new StringBuffer(“Test”);
sb. deleteCharAt(1);
//sb的值变为”Tst”。
//该方法的作用是删除指定区间以内的所有字符,包含start,不包含end索引值的区间。例如:
StringBuffer sb = new StringBuffer(“TestString”);
sb. delete (1,4);
该代码的作用是删除索引值1(包括)到索引值4(不包括)之间的所有字符,剩余的字符形成新的字符串。则对象sb的值是”TString”。
JDK1.5版本以后出现了StringBuilder。
StringBuffer是线程同步
StringBuilder是线程不同步
以后开发,建议使用StringBuilder
升级三个因素:
1、提高效率
2、简化书写
3、提高安全性