Java String类

一、常用方法

1.字符串构造方法

字符串构造方法主要有三种:

public static void main(String[] args){
    //使用常量构造
    String s1 = "hello word";
    sout(s1);

    // 直接newstring对象
    String s2 = new string("hello bit");
    System.out.println(s1);

    // 使用字符数组进行构造
    char[] array ={'h','b'.'i','t'};
    String s3 = new string(array);
    System.out.println(s1);
}

2.字符串的比较

2.1 ==比较是否引用同一对象
public static void main(string[] args){
    int a = 10;
    int b = 20;
    int c = 10;
// 对于基本类型变量,==比较两个变量中存储的值是否相同
    System.out.println(a == b);// false
    System.out.println(a == c);// true
// 对于引用类型变量,==比较两个引用变量引用的是否为同一个对象
    String s1 = new string("hello");
    String s2 = new string("hello");
    String s3 = new string("world");
    String s4 = sl;
    System.out.println(s1 == s2);// false
    System.out.println(s2 == s3);// false
    System.out.println(s1 == s4);// true
}
2.2 equals方法进行比较(按照字典序进行比较,即比较字符串中的内容) 

String类中重写了父类Object类中的equals方法,Object中的equals默认按照==比较,String类重写equals了方法后,按照如下规则进行比较,比如: s1.equals(s2)

public boolean equals(object anobject){
//1:先检测this 和 anobject 是否为同一个对象比较,如果是返回true
    if(this == anobject){
    return true;
// 2.检测anobject是否为string类型的对象,如果是继续比较,否则返回false
    if(anobject instanceof string){
// 将anobject向下转型为string类型对象
    String anotherstring = (String)anobiect
    int n= value.length;
// 3.this和anobject两个字符串的长度是否相同,是继续比较,否则返回false
    if(n == anotherstring.value.length){
    char vl[]= value;
    char v2[]= anotherString.value;
    int i = 0;
//4、按照字典序,从前往后逐个字符进行比较
    while(n--!=0){
    if(v1[i] != v2[i])
    return false;
    i++;
 }
    return true;
 }
}
    return false;
}
public static void main(string[] args)
    String s1 = new string("hello");
    String s2 = new string("hello");
    String s3 = new string("Hello");
    // s1、s2、s3引用的是三个不同对象,因此==比较结果全部为false
    System.out.println(s1 == s2);// false
    System.out.println(s1 == s3);// false
    // equals比较:string对象中的逐个字符
    // 虽然s1与s2引用的不是同一个对象,但是两个对象中放置的内容相同,因此输出true
    // s1与s3引用的不是同一个对象,而且两个对象中内容也不同,因此输出false
    System.out.println(s1.equals(s2));//true
    System.out.println(s1.equals(s3));//false
2.3 compareTo(String s) 方法( 按照字典序进行比较)

与equals不同的是,equals返回的是boolean类型,而compareTo返回的是int类型。具体比较方式:

1.先按照字典次序大小比较,如果出现不等的字符,直接返回这两个字符的大小差值
2.如果前k个字符相等(k为两个字符长度最小值),返回值两个字符串长度差值

public static void main(string[] args)
    String sl = new string("abc");
    String s2 = new String("ac");
    String s3 = new String("abc");
    String s4 = new string("abcdef");

    // 不同输出字符差值-1 
    //注意:这里是s1减去s2,所以是-1,而不是1
    System.out.print1n(s1.compareTo(s2));
    
    System.out.println(s1.compareTo(s3));//相同输出0
    System.out.println(s1.compareTo(s4));// 前个字符完全相同,输出长度差值 -3
2.4 compareToIgnoreCase(String str) 方法(与compareTo方式相同,但是忽略大小写比较) 
public static void main(string[l args){
    String sl = new string("abc");
    String s2 = new string("ac");
    String s3 = new string("ABc");
    String s4 = new string("abcdef");
    System.out.println(s1.compareToIgnoreCase(s2));// 不同输出字符差值-1
    System.out.println(s1.compareToIgnoreCase(s3));// 相同输出 0
    System.out.println(s1.compareToIgnorecase(s4));//前k个字符完全相同,输出长度差值 -3

3.字符串查找

String类提供的常用查找的方法有:

方法功能
char charAt(int index)返回index位置上字符,如果index为负数或者越界,抛出 IndexOutOfBoundsException异常
int indexOf(int ch)返回ch第一次出现的位置,没有返回-1
int indexOf(int ch, int fromIndex)从fromIndex位置开始找ch第一次出现的位置,没有返回-1
int indexOf(String str)返回str第一次出现的位置,没有返回-1
int indexOf(String str, int fromlndex)从fromIndex位置开始找str第一次出现的位置,没有返回-1
int lastlndexOf(int ch)从后往前找,返回ch第一次出现的位置,没有返回-1
int lastindexOf(int ch, int fromIndex)从fromIndex位置开始找,从后往前找ch第一次出现的位置,没有返 回-1
int lastindexOf(String str)从后往前找,返回str第一次出现的位置,没有返回-1
int lastlndexOf(String str, int fromlndex)从fromIndex位置开始找,从后往前找str第一次出现的位置,没有返 回-1
public static void main(string[]args){
String s = "aaabbbcccaaabbbccc"
System.out.println(s.charAt(3));//'b
System.out.println(s.indexOf('c'));// 6
System.out.println(s.indexOf('c',10));// 15
System.out.println(s.index0f("bbb"));// 3
System.out.println(s.index0f("bbb",10));// 12
System.out.println(s.lastIndex0f('c'));//17
System.out.println(s.lastIndex0f('c',10));// 8
System.out.println(s.lastIndex0f("bbb"));// 12
System.out.println(s.lastIndex0f("bbb",10));//3

 4.字符串截取

字符串截取是从一个完整的字符串中截取出部分内容

方法功能
String substring(int beginIndex)从指定索引截取到结尾
String substring(int beginIndex, int endIndex)截取部分内容
public static void main(stringl args){
String str ="helloworld"
System.out.println(str.substring(5));//截取5到字符串未尾的内容
System.out.println(str.substring(0,5));//截取[0~5)下标的内容

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值