String
Java에서는 문자열을 String 유형의 객체로 취급합니다. String 클래스는 기본적으로 모든 프로그램에서 자동으로 가져오는 java.lang 패키지에 있습니다.
문자열 객체 생성 방법:
String s1 = "java"; String s2 = new String(); String s3 = new String("Java");
Java 문자열의 불변성
문자열 객체는 생성된 후에 수정할 수 없습니다. , 소위 수정은 실제로 다른 메모리 공간을 가리키는 새 객체를 생성합니다.
변경할 수 있는 문자열이 필요한 경우 StringBuffer 또는 StringBuilder를 사용할 수 있습니다.
새 문자열이 생성될 때마다 새 개체가 생성됩니다. 두 문자열의 내용이 동일하더라도 "=="를 사용하여 비교하면 "false"가 됩니다. 내용이 같은지 비교하려면 "equals()" 메소드를 사용해야 합니다.
Java의 상수 풀은 컴파일 중에 결정된 컴파일된 클래스 파일에 데이터를 저장하는 데 사용됩니다.
package cn.test;public class Demo12 { public static void main(String[] args) { String s1 = "java";//先检查字符串常量池中是否有"java"字符串,如果有则直接指向,如果没有就在字符串常量池中添加"java"字符串并指向它,所以这种方式创建字符串时最多创建一个对象,或者不创建对象 String s2 = "java";//s2直接指向字符串常量池中的"java" String s3 = new String("java");//在堆内存申请一块内存存储字符串"java",s3指向其内存块对象,同时检查字符串常量池中是否有"java"字符串,如果没有就添加字符串"java"到常量池中,所以new String()有可能创建两个对象 String s4 = new String("java"); System.out.println(s1 == s2); System.out.println(s1 == s3); System.out.println(s3 == s4); s1 = "欢迎来到" + s1; System.out.println(s1); System.out.println(s3.equals(s4)); } }
실행 결과:
true
false
false
Java에 오신 것을 환영합니다
true
String 클래스 일반적으로 사용된 메소드
예 1:
String fileName = "HelloWorld.java"; String email = "xiaoli@163.com"; // 判断.java文件名是否正确:合法的文件名应该以.java结尾 int index = fileName.lastIndexOf('.'); String prefix = fileName.substring(index+1); if ( index > 0 && prefix.equals("java")) { System.out.println("Java文件名正确"); } else { System.out.println("Java文件名无效"); } // 判断邮箱格式是否正确:合法的邮箱名中至少要包含"@", 并且"@"是在"."之前 int index2 = email.indexOf('@'); int index3 = email.indexOf('.'); if (index2 != -1 && index3 > index2) { System.out.println("邮箱格式正确"); } else { System.out.println("邮箱格式无效"); } String str = "boo:and:foo"; String[] arr = str.split(":"); for (int i = 0; i < arr.length; i++) { System.out.print(arr[i]); }
실행 결과:
Java 파일 이름이 정확합니다
이메일 형식이 정확합니다
booandfoo
예시 2:
String str = "boo:and:foo"; String[] arr = str.split(":"); for (int i = 0; i < arr.length; i++) { System.out.print(arr[i]); }
실행 결과:
[97][98][99][100][-80 ][- 94]
참고: 1바이트는 8비트와 같습니다. gbk 인코딩에서는 한자 1자 저장에는 2바이트가 필요하고, 영문자 1자 저장에는 1바이트가 필요합니다.
예 3:
String str = "abcd阿"; byte[] b = str.getBytes(); for (int j = 0; j < b.length; j++) { System.out.print("[" + b[j] + "]"); }
실행 결과:
문자 a 발생 횟수: 8
StringBuilder 클래스
String 클래스는 변경 가능하며 문자열을 자주 조작할 때 많은 임시 변수 가 생성됩니다. 이 문제는 StringBuilder 또는 StringBuffer를 사용하여 피할 수 있습니다. 기본적으로 비슷하지만 StringBuffer는 스레드안전하므로 성능이 약간 더 높다는 차이점이 있습니다. 따라서 일반적으로 가변 내용이 포함된 문자열 개체를 만들려면 StringBuilder 클래스가 선호됩니다.
String s = "aljlkdsflkjsadjfklhasdkjlflkajdflwoiudsafhaasdasd"; // 出现次数int num = 0; // 循环遍历每个字符,判断是否是字符 a ,如果是,累加次数for ( int i = 0;i < s.length(); i++ ) { // 获取每个字符,判断是否是字符a if ( s.charAt(i) == 'a' ) { // 累加统计次数 num++; } } System.out.println("字符a出现的次数:" + num);
StringBuilder 클래스의 일반적인 메서드:
위 내용은 Java의 문자열에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!