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());

注意:汉字与其他英文和符号相同,也只用一个字符表示就够了。

  1. 获取字串:
    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"
    
  2. 字符串比较的三种方法:
    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( s1.compareTo(s2) ); // -1 (前面相等,s1长度小1)
System.out.println( s1.compareTo(s3) ); // -3 (前面相等,s1长度小3)
System.out.println( s1.compareTo(s4) ); // 48 ("a"的ASCII码是97,"1"的的ASCII码是49,所以返回48)
System.out.println( s1.compareTo(s5) ); // -2 ("a"的ASCII码是97,"c"的ASCII码是99,所以返回-2)

boolean equals(String s)方法

将当前字符串与方法的参数列表给定的字符串相比较,若两字符串相同,则返回true,不同则返回false。

boolean equalsIgnoreCase(String anotherString)方法

与equals(String s)方法用法大致相同,但是不考虑字母的大小写。

  1. 字符串查找:确定一个字符串是否(或从指定位置开始)包含某一个字符或字符字串
    ,如果包含则返回其位置,不包含则返回负数。若存在多个子字符串,返回数值最小的整数值。

从后往前的查找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
  1. 截取一个字符
    public char charAt(int index);返回指定索引处的char值。
  2. 字符串连接
    public String concat(String str); 将指定字符串串联到此字符串的结尾。如果参数字符串长度为0,则返回此String对象,否则,创建一个新的String对象。
    还可以用+连接两个字符串。
    例如:String str = 567 + "和789"; 567将自动转换为字符串然后与"和789"相加。 此例返回"567和789"
  3. 字符串替换
    String replace(char oldChar,char newChar);
  4. 字符串大小写转换
    转成大写:public String toUpperCase();
    转成小写: public String toLowerCase();
  5. 字符串分割
    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[]数组包含四个元素,分别是 “张三” “李四” “王五” “赵六”

  1. 去掉串前串后空格:public String trim();
  2. 其他数据类型转换成字符串
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()方法也可以将其他数据类型转换为字符串。

  1. 字符串与字符数组相互转化 P139
    字符数组转化成字符串用copyValue()方法
    字符串转化成字符数组用getChars()方法

toString()方法

将其他数据类型转换为字符串。

String  s = Double.toString(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()方法。

  • 1
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值