Java的string类及toString()⽅法
Java使⽤String类与StringBuffer类来封装字符串。
String类⽤于创建常量字符串对象。
StringBuffer类⽤于创建可变字符串对象,它的对象是可以扩充和修改的,即可动态添加。
String类
字符串常量⽤String类的对象表⽰。在java中,所有⽤双引号括起的字符串常量都被认为是对象。
java编译时,将⾃动为每个字符串常量创建⼀个对象。
String类的创建,使⽤及操作
String类的创建
在创建String类的对象时,通常需要向String类的构造函数传递参数来指定所创建的字符串内容。
构造函数包括以下四类:
public String();//创建⼀个空的时字符串
public String(String s);//⽤⼀个已知字符串来创建新的字符串
public String(StringBuffer buf);//⽤⼀个StringBuffer类的对象来初始化新字符串
public String(char  value[]);//⽤⼀个已有字符数组来初始化新字符串
其中:
public String(String s); 中的已知字符串可以是另⼀个String类对象,也可以是⼀个⽤双引号括起的直接常量。这个⽅法最常⽤。
使⽤:String s = new String("ABC");
第四种⽅法:char[] hello = {'A','B','C'}; String s = new String(hello);
创造String对象的过程:分为对象的声明和创建两步,也可以⼀步完成.
对象声明:String stringName;
对象创建:stringName="ABC";或 stringName = new String("ABC");
特殊创建⽅法:String s = "ABC";代表String类变量s指向⼀块名为”ABC“的空间。虽然"ABC"不可改,但s可改。
String s1 ="hello";
String s2 ="hello";
String s3 =new String("hello");
s1==s2;//true
s1==s3;//false
==⽤于判断两个对象是否引⽤同⼀实例
String类的主要⽅法
注意在使⽤String类时,String类的对象是不可变的。⼀经创建,不论长度还是内容,不可改变。因此String类的各种操作,包括连接,替换,转换⼤⼩写等,都是返回⼀个新的字符串对象,⽽原字符串的内容并未发⽣改变。
1. 获取字符串长度:public int length();
String s =new String("我爱你 china");
System.out.println(s.length());
注意:汉字与其他英⽂和符号相同,也只⽤⼀个字符表⽰就够了。
public String substring(int startIndex);
public String substring(int startIndex,int endIndex);
substring()是求字串的⽅法,startIndex是字串的起始位置,endIndex是字串的结束位置(但不包括endIndex本⾝的字符)。所有位置都是基于零的。若缺省endIndex则从startIndex⼀直到结束。如果startIndex⼤于字符串的长度,将会抛出越界异常。
"ABC".substring(2);  //返回"BC"
"ABCDE".substring(1,4); //返回"BCD"
3. 字符串⽐较的三种⽅法:
java中split的用法
public int compareTo(String anotherString);
public boolean equals(String s);
public boolean equalsIgnoreCase(String anotherString);
compareTo(String anotherString)⽅法
这个⽅法将当前字符串与参数字符串进⾏⽐较,
如果相同,则返回0。
不相同时,从两个字符串第1个字符开始⽐较,返回第⼀个不相等的字符差;字典顺序
另⼀种情况,较长字符串的前⾯部分恰巧是较短的字符串,返回它们的长度差。
String s1 ="abc";
String s2 ="abcd";
String s3 ="abcdfg";
String s4 ="1bcdfg";
String s5 ="cdfg";
System.out.println( s1pareTo(s2));// -1 (前⾯相等,s1长度⼩1)
System.out.println( s1pareTo(s3));// -3 (前⾯相等,s1长度⼩3)
System.out.println( s1pareTo(s4));// 48 ("a"的ASCII码是97,"1"的的ASCII码是49,所以返回48)
System.out.println( s1pareTo(s5));// -2 ("a"的ASCII码是97,"c"的ASCII码是99,所以返回-2)
boolean equals(String s)⽅法
将当前字符串与⽅法的参数列表给定的字符串相⽐较,若两字符串相同,则返回true,不同则返回false。
boolean equalsIgnoreCase(String anotherString)⽅法
与equals(String s)⽅法⽤法⼤致相同,但是不考虑字母的⼤⼩写。
4. 字符串查:确定⼀个字符串是否(或从指定位置开始)包含某⼀个字符或字符字串
,如果包含则返回其位置,不包含则返回负数。若存在多个⼦字符串,返回数值最⼩的整数值。
从后往前的查int lastIndexOf();
单个字符查:
public int indexOf(int ch);
public int indexOf(int ch,int formIndex);
由指定位置从前向后查指定字符串的位置,到返回位置,不到返回-1
第⼀⾏是查字符ch在当前字符串中第⼀次出现的位置。
字串查:
public int indexOf(String stringName2);
public int indexOf(String stringName2,int formIndex);
String s1 ="I LOVE JAVA";
s1.indexOf('a');//8
s1.indexOf('j',2);//7
s1.indexOf("LOVE");//2
s1.indexOf("LOVE",1)//2
public char charAt(int index);返回指定索引处的char值。
6. 字符串连接
public String concat(String str); 将指定字符串串联到此字符串的结尾。如果参数字符串长度为0,则返回此String对象,否则,创建⼀个新的String对象。
还可以⽤+连接两个字符串。
例如:String str = 567 + "和789"; 567将⾃动转换为字符串然后与"和789"相加。 此例返回"567和789"
7. 字符串替换
String replace(char oldChar,char newChar);
8. 字符串⼤⼩写转换
转成⼤写:public String toUpperCase();
转成⼩写: public String toLowerCase();
9. 字符串分割
public String [] split(String regex);
public String[] split(String regex,int limit);
此⽅法返回的数组包含此字符串的每个⼦字符串。
例如:
String str ="张三,李四,王五,赵六";
String[] names = str.split(",");
for(int i =0; i < names.length; i++){
System.out.println(names[i]);
}
上⾯str⽤逗号分隔开之后,split[]数组包含四个元素,分别是 “张三” “李四” “王五” “赵六”
11. 去掉串前串后空格:public String trim();
12. 其他数据类型转换成字符串
public static String valueOf(boolean b);
public static String valueOf(int i);
public static String valueOf(float f);
public static String valueOf(double d);
.....
例如:String s = String.valueOf(123); //s=“123”
此外,toString()⽅法也可以将其他数据类型转换为字符串。
12. 字符串与字符数组相互转化 P139
字符数组转化成字符串⽤copyValue()⽅法
字符串转化成字符数组⽤getChars()⽅法
toString()⽅法
将其他数据类型转换为字符串。
String  s = String(12.8);//s = "12.8"
System.out.println();//如果带参数,则⾃动调⽤对象的toString()⽅法。
⼀切类都是Object的⼦类,Object有toString⽅法,因此所有对象都有toString⽅法。
打印⼀个对象时,打印的就是这个对象的toString⽅法返回值,值为类名@内存地址
例如:
class A{
int a;
public A(int i){
a=i;
}
}
class B extends A{
public B(int i){
super(i);
}
public String toString(){
return i;
}
}
public class Test{
public static void main(String [] args){
A a1 =new A(1);
B b1 =new B(2);
System.out.println(a1);//显⽰A@132f0db
System.out.println(b1);//显⽰2
}
}
在字符串的加号运算中,如果连接的是对象,则⾃动调⽤toString()⽅法。⼀般在⾃定义的类⾥,最好覆盖toString()⽅法。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。