自学内容网 自学内容网

Java中的String类

1.常用方法

1.1字符串构造

String提供的构造方式非常多,不过主要使用的是一下三种

public class Main{
    public static void main (String args){
        String s1 = "Hello";
        String s2 = new String("Hello")
        char[] chars = {'H','e','l','l','o'}
        String s3 = new String(chars);
    }   
}

上述代码中的s1,s2,s3输出的内容都是"Hello",我们在实际中最长使用的就是是一种字符串的构造方法,s1所指的"Hello"是放在"常量池"中的,s2中的"hello"是通过"new"出来的,在java编程体系中,只要是通过"new"出来的都是放在"堆"上面的,s3同s2一样是如此

注意的是:String是引用类型,内部并不储存字符串本身

public class Main{
    public static void main (String agrs){
    //s1和s2引用的是不同的对象,s1和s3引用的是同一个对象
    String s1 = new String("hello");
    String s2 = new String("world");
    String s3 = s1;
    
    System.out.println(s1.length());
    System.out.println(s2.isEmpty());
    //如果字符串的长度为 0 返回 true 否则返回 false
    }
}

 String 对象的比较

字符串的比较是比较常见的,在java中提供了4中方式:

1."=="比较是否引用同一个对象

注意:对于内置类型,==是比较变量中的值;对于引用类型==比较的是引用中的地址

public class Main2 {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        int c = 10;
        //对于基本类型变量,==是比较两个变量中储存的数值是否相等
        System.out.println(a == b);
        System.out.println(a == c);
        //对于引用类型的变量,==是比较两个引用变量是否的是同一个对象
        String s1 = new String("hello");
        String s2 = new String("hello");
        String s3 = new String("world");
        String s4 = s1;
        System.out.println(s1 == s2);
        System.out.println(s2 == s3);
        System.out.println(s1 == s4);
    }
}

2.boolean equals(Object anObject)方法:按照字典序比较

字典序:字符大小的顺序

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

public class Main4 {
    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);
        System.out.println(s2 == s3);
        //equals()方法比较:String 中的逐个字符比较
        //这里的s2和s3虽然引用的不是同一个对象,但是它们的内容是相同的,在进行字典序比较时会返回true
        //s1和s2的内容是不相同的通过字典序的比较,结果返回的是false
        System.out.println(s1.equals(s2));
        System.out.println(s2.equals(s3));
    }
}

3.int compareTo(String s)方法:按照字典序比较

与equals不同的是equals返回的是boolean类型,而compareTo返回的是int类型.

比较方式如下

1.先按照字典序的次数进行比较,如果出现不等的字符,直接返回这两个字符的大小差值

如果出现前n个字符相等(n为两个字符长度的最小值),返回两个字符串的差值 

public class Main5 {
    public static void main(String[] args) {
        String s1 = new String("abc");
        String s2 = new String("ab");
        String s3 = new String("abc");
        String s4 = new String("abcdef");
        System.out.println(s1.compareTo(s2));
        System.out.println(s2.compareTo(s1));
        System.out.println(s1.compareTo(s3));
        System.out.println(s1.compareTo(s4));
        System.out.println(s4.compareTo(s1));
    }
}

输出结果分别是

1

-1

0

-3

3

我们通过结果可以看出把s1和s2放在compareTo的不同位置会得到不同的结果,计算过程一般是this就是"."前面的会减去"()"这里面的,得出的计算结果

4.int compareTolgnoreCase(String str)方法:与compareTo方式相同,但是会忽略大小比较

public class Main6 {
    public static void main(String[] args) {
        String s1 = new String("abc");
        String s2 = new String("ab");
        String s3 = new String("ABc");
        String s4 = new String("abcdef");
        System.out.println(s1.compareToIgnoreCase(s2));
        System.out.println(s1.compareToIgnoreCase(s3));
        System.out.println(s1.compareToIgnoreCase(s4));
    }
}

输出结果分别为

1

0

-3

二.字符串查找

char charAt(int index)

返回index位置上的字符,如果index为负数或者越界,会抛出indexOutOfBoundsException异常

int indexOf(int ch)

返回ch第一次出现的位置,没有返回-1

int indexOf(int ch,int fromlndex)

从fromlndex位置开始找ch第一次出现的位置,没有找到返回-1

int indexOf(String str)

返回str第一次出现的位置,没有返回-1

int indexOf(String str,int fromlndex)

从fromlndex位置开始找str第一次出现的位置,没有就返回-1

int lastlndexOf(int ch)

从后往前找第一次出现ch的位置,没有就返回-1

2.2转化

1.数值和字符串的相互转化

public class Main8 {
    public static void main(String[] args) {
        //数字转字符串
        String s1 = String.valueOf(1234);
        String s2 = String.valueOf(12.34);
        String s3 = String.valueOf(true);
        System.out.println(s1);
        System.out.println(s2);
        System.out.println(s3);
    }
}

数字转为字符串主要用到是valueOf()函数

2.字符串转数字

public class Main8 {
    public static void main(String[] args) {
       //字符串转数字
        int data1 = Integer.parseInt("1234");
        double data2 = Double.parseDouble("123.456");
        System.out.println(data1);
        System.out.println(data2);
    }
}

3.大小写转换

 

public class Main9 {
    public static void main(String[] args) {
        String s1 = "hello";
        String s2 = "HELLO";
        //小写转大写
        String s3 = s1.toUpperCase();
        System.out.println(s1.toUpperCase());
        System.out.println(s3);
        System.out.println(s1);
        //大写转小写
        System.out.println(s2.toLowerCase());
        System.out.println(s2);
    }
}

大小写的转换并不会改变原有的内容

4.字符串转数数组

public class Main {
    public static void main(String[] args) {
        String s1 = "hello";
        //字符串转数组
        char[] ch = s1.toCharArray();
        for(int i = 0;i<ch.length;i++){
            System.out.println(ch[i]);
        }
        //数组转字符串
        String s2 = new String(ch);
        System.out.println(s2);
    }
}

 字符串转数组使用的是".toCharArray()"的方法

5.格式化

public class Main2 {
    public static void main(String[] args) {
        String s = String.format("%d-%d-%d",2024,12,31);
        System.out.println(s);
    }
}

6.字符串替换

使用一个指定的新的字符串替换掉已经有的原字符串

public class Main3 {
    public static void main(String[] args) {
        String s = "Hello World";
        //替换掉字符串中所有出现"l"的字符
        System.out.println(s.replace("l","L"));
        //替换掉字符串中第一个出现"l"的字符
        System.out.println(s.replaceFirst("l","L"));
        //替换掉字符串中所有出现"l"的字符
        System.out.println(s.replaceAll("l","L"));
    }
}

 

 

 


原文地址:https://blog.csdn.net/lxsxjsj/article/details/144309664

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!