Java에서 자주 사용되는 String 클래스의 메소드(요약 공유)

WBOY
풀어 주다: 2022-08-30 13:37:18
앞으로
1767명이 탐색했습니다.

이 기사에서는 java에 대한 관련 지식을 제공합니다. String 클래스는 매우 일반적으로 사용되는 클래스이자 Java 언어의 핵심 클래스로, 문자열 상수를 코드에 저장하고 많은 작업 문자를 캡슐화하는 데 사용됩니다. 다음은 String 클래스의 몇 가지 일반적인 메서드 사용을 요약한 것입니다. 이것이 모든 사람에게 도움이 되기를 바랍니다.

Java에서 자주 사용되는 String 클래스의 메소드(요약 공유)

추천 학습: "java 비디오 튜토리얼"

1. 문자열 객체 비교

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 = s1;
        System.out.println(s1 == s2); // false
        System.out.println(s2 == s3); // false
        System.out.println(s1 == s4); // true
}
로그인 후 복사

2. boolean equals(Object anObject)

사전 순서로 비교(사전순: 문자 크기 순서)

String 클래스는 기본적으로 ==에 따라 Object 비교의 equals 메서드를 재정의합니다. . String이 equals 메소드를 다시 작성한 후 다음과 같은 규칙에 따라 비교가 수행됩니다. s1.equals(s2)

String의 equals 메소드 분석:

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)anObject;
            int n = value.length;
            // 3. this和anObject两个字符串的长度是否相同,是继续比较,否则返回false
            if (n == anotherString.value.length) {
                char v1[] = 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
}
로그인 후 복사

3. (문자열 s)

사전식 순서로 비교

equal과의 차이점은 equals는 부울 유형을 반환하고, CompareTo는 int 유형을 반환한다는 것입니다. 구체적인 비교 방법:

먼저 사전 순서대로 크기를 비교합니다. 같지 않은 문자가 있으면 두 문자의 크기 차이를 직접 반환합니다.

처음 k자가 동일한 경우(k는 두 문자의 최소 길이) 반환 값은 두 문자열 사이의 길이 차이입니다

public static void main(String[] args) {
        String s1 = new String("abc");
        String s2 = new String("ac");
        String s3 = new String("abc");
        String s4 = new String("abcdef");
        System.out.println(s1.compareTo(s2)); // 不同输出字符差值-1
        System.out.println(s1.compareTo(s3)); // 相同输出 0
        System.out.println(s1.compareTo(s4)); // 前k个字符完全相同,输出长度差值 -3
}
로그인 후 복사

4. int CompareToIgnoreCase(String str)

비교와 동일하지만 비교 시 대소문자를 무시합니다

public static void main(String[] args) {
        String s1 = 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
}
로그인 후 복사

문자열 검색은 문자열에서도 매우 일반적입니다. 연산, String 클래스에서 제공하는 일반 검색 메소드,

메소드 char charAt(int index)int indexOf(int ch)int indexOf(int ch, int fromIndex)int indexOf(String str)int indexOf(를 반환하지 않음) String str, int fromIndex) int lastIndexOf(int ch) int lastIndexOf(int ch, int fromIndex)int lastIndexOf(String str)int lastIndexOf(String str, int fromIndex)
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.indexOf("bbb")); // 3
        System.out.println(s.indexOf("bbb", 10)); // 12
        System.out.println(s.lastIndexOf('c')); // 17
        System.out.println(s.lastIndexOf('c', 10)); // 8
        System.out.println(s.lastIndexOf("bbb")); // 12
        System.out.println(s.lastIndexOf("bbb", 10)); // 3
}
로그인 후 복사
참고:
함수
인덱스가 음수이거나 범위를 벗어난 경우 인덱스 위치의 문자를 반환합니다. 경계에서 IndexOutOfBoundsException이 발생합니다. Exception
-1
fromIndex에서 시작하지 않고 ch가 처음 나타나는 위치를 반환합니다. ch를 처음 찾는 위치 str이 나타나는 위치는 -1
str이 처음 나타나는 위치를 반환하고 -1
From fromIndex 위치는 str이 처음 나타나는 위치부터 찾기 시작하며, -1을 반환하지 않습니다.
뒤에서 앞으로 살펴보고, ch가 처음 등장했지만 -1을 반환하지 않는 위치
fromIndex 위치에서 시작하여 ch가 처음 나타나는 위치인 No -1을 뒤에서 앞으로 검색합니다. return
뒤에서 앞으로 검색하여 str이 처음 나타나는 위치를 반환하고 반환하지 않음 -1
fromIndex에서 시작 position, str이 처음 나타나는 위치를 뒤에서 앞으로 찾습니다. Return -1

위 메서드는 모두 인스턴스 메서드이며 개체 참조를 통해 호출됩니다.

3. 변환

1. 숫자 및 문자열 변환

static String valueof() 숫자를 문자열로

Integer.parseInt() 문자열을 부동 소수점 유형으로

public class Test {
    public static void main(String[] args) {
        // 值转字符串
        String s1 = String.valueOf(1234);
        String s2 = String.valueOf(12.34);
        String s3 = String.valueOf(true);
        String s4 = String.valueOf(new Student("Hanmeimei", 18));
        
        System.out.println(s1);
        System.out.println(s2);
        System.out.println(s3);
        System.out.println(s4);
        System.out.println("=================================");
        
        // 字符串转数字
        //Integer、Double等是Java中的包装类型
        int data1 = Integer.parseInt("1234");
        double data2 = Double.parseDouble("12.34");
        
        System.out.println(data1);
        System.out.println(data2);
    }
}

class Student{
    String name;
    int age;
    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }
    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
로그인 후 복사

실행 결과:

2. 대소문자 변환

String toUpperCase() 대문자로 변환

String toLowerCase() 소문자로 변환

이 두 함수는 문자만 변환합니다.

public static void main(String[] args) {
        String s1 = "hello";
        String s2 = "HELLO";
        // 小写转大写
        System.out.println(s1.toUpperCase());
        // 大写转小写
        System.out.println(s2.toLowerCase());
}
로그인 후 복사

실행 결과:

3. 문자열과 배열의 변환

char[ ] toCharArray() 문자열을 배열로

new 문자열(배열 참조) 배열을 문자열로

public static void main(String[] args) {
        String s = "hello";
        // 字符串转数组
        char[] ch = s.toCharArray();
        for (int i = 0; i < ch.length; i++) {
            System.out.print(ch[i]);
        }
        System.out.println();
        // 数组转字符串
        String s2 = new String(ch);
        System.out.println(s2);
}
로그인 후 복사

실행 결과:

4. Formatting

static String format( );

public static void main(String[] args) {
        String s = String.format("%d-%d-%d", 2022, 8, 29);
        System.out.println(s);
}
로그인 후 복사

실행 결과:

4. String replacement

기존 문자열 데이터를 지정된 새 문자열로 바꾸기, 사용 가능한 방법은 다음과 같습니다.

메소드

함수

String replacementAll(String regex, String replacement)String replacementFirst(String regex, String replacement)

代码示例:

字符串的替换处理:

public static void main(String[] args) {
        String str = "helloworld" ;
        System.out.println(str.replaceAll("l", "_"));
        System.out.println(str.replaceFirst("l", "_"));
}
로그인 후 복사

执行结果:

注意事项:

由于字符串是不可变对象, 替换不修改当前字符串, 而是产生一个新的字符串.

五. 字符串拆分

可以将一个完整的字符串按照指定的分隔符划分为若干个子字符串。

可用方法如下:

지정된 모든 내용 바꾸기
처음 지정된 내용 바꾸기
方法功能
String[] split(String regex)将字符串全部拆分
String[] split(String regex, int limit)将字符串以指定的格式,拆分为limit组

如果一个字符串中有多个分隔符,可以用"|"作为连字符.

代码示例:

实现字符串的拆分处理

public static void main(String[] args) {
        String str = "hello world hello rong";
        String[] result = str.split(" ") ; // 按照空格拆分
        for(String s: result) {
            System.out.println(s);
        }

        System.out.println("==============");

        String str1 = "xin&xin=xiang&rong";
        String[] str2 = str1.split("&|=");//按照=和&拆分
        for(String s: str2) {
            System.out.println(s);
        }
}
로그인 후 복사

执行结果:

代码示例:

字符串的部分拆分

public static void main(String[] args) {
        String str = "hello world hello rong" ;
        String[] result = str.split(" ",2) ;
        for(String s: result) {
            System.out.println(s);
        }  
}
로그인 후 복사

执行结果:

有些特殊字符作为分割符可能无法正确切分, 需要加上转义.

字符"|“,”*“,”+“,”."都得加上转义字符,前面加上 “” .

而如果是 “” ,那么就得写成 “\” ; 使用split来切分字符串时,遇到以反斜杠\作为切分的字符串,split后传入的内容是\\,这么写是因为第一和第三是个斜杠是字符串的转义符。转义后的结果是\,split函数解析的不是字符串而是正则,正则表达式中的\结果对应\,所以分隔反斜杠的时候要写四个反斜杠。

代码示例:

拆分IP地址

public static void main(String[] args) {
        String str = "192.168.1.1" ;
        String[] result = str.split("\\.") ;
        for(String s: result) {
            System.out.println(s);
        }
}
로그인 후 복사

执行结果:

代码中的多次拆分:

ppublic static void main(String[] args) {
        //字符串多次拆封
        String str = "xin&xin=xiang&rong";
        String[] str1 = str.split("&");
        for (int i = 0; i < str1.length; i++) {
            String[] str2 = str1[i].split("=");
            for (String x:str2) {
                System.out.println(x);
            }
        }

        String s = "name=zhangsan&age=18" ;
        String[] result = s.split("&") ;
        for (int i = 0; i < result.length; i++) {
            String[] temp = result[i].split("=") ;
            System.out.println(temp[0]+" = "+temp[1]);
        }
}
로그인 후 복사

执行结果:

六. 字符串截取

从一个完整的字符串之中截取出部分内容。可用方法如下 :

方法功能
String substring(int beginIndex)从指定索引截取到结尾
String substring(int beginIndex, int endIndex)截取部分内容

代码示例:

public static void main(String[] args) {
        String str = "helloworld" ;
        System.out.println(str.substring(5));
        System.out.println(str.substring(0, 5));
}
로그인 후 복사

执行结果:

注意事项:

索引从0开始

注意前闭后开区间的写法, substring(0, 5) 表示包含 0 号下标的字符, 不包含 5 号下标,即(0,4)

七. 其他操作方法

1. String trim()

去掉字符串中的左右空格,保留中间空格

trim 会去掉字符串开头和结尾的空白字符(空格, 换行, 制表符等).

示例代码:

public static void main(String[] args) {
        String str = "      hello world      " ;
        System.out.println("["+str+"]");
        System.out.println("["+str.trim()+"]");
}
로그인 후 복사

执行结果:

2. boolean isEmpty ()

isEmpty() 方法用于判断字符串是否为空

示例代码:

public static void main(String[] args) {
        String str = "";
        System.out.println(str.isEmpty());
}
로그인 후 복사

执行结果:

3. int length()

用于求字符串的长度

示例代码:

public static void main(String[] args) {
        String str = "xinxinxiangrong";
        System.out.println(str.length());
}
로그인 후 복사

执行结果:

4. 判断字符串开头结尾

boolean startsWith(String prefix) 判断字符串是否以某个字符串开头的

boolean endWith(String sufix) 判断字符串是否以某个字符串结尾的

示例代码:

public static void main(String[] args) {
        String str = "xinxinxianrong";
        System.out.println(str.startsWith("xin"));
        System.out.println(str.endsWith("rong"));
}
로그인 후 복사

执行结果:

5. boolean contains(String str)

判断字符串中是否包含某个字符串

示例代码:

public static void main(String[] args) {
        String str = "xinxinxianrong";
        System.out.println(str.contains("inx"));
}
로그인 후 복사

执行结果:

推荐学习:《java视频教程

위 내용은 Java에서 자주 사용되는 String 클래스의 메소드(요약 공유)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:jb51.net
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿