1. 객체 생성
Java 프로그램의 직접 문자열 상수 의 경우 JVM은 문자열 풀을 사용하여 이를 저장합니다. 문자열 직접 상수가 처음으로 사용되면 JVM은 캐싱을 위해 이를 문자열 풀에 넣습니다. 일반적인 상황에서는 문자열 풀의 문자열 개체가 가비지 수집되지 않습니다. 프로그램이 문자열을 다시 사용해야 하는 경우 참조 변수는 새 문자열을 다시 생성하지 않고도 문자열의 기존 문자열을 직접 가리킬 수 있습니다. new 작업을 사용하여 생성된 문자열 객체는 문자열 풀의 객체를 가리키지 않지만 intern() 메서드를 사용하여 문자열 풀의 객체를 가리킬 수 있습니다.
다음과 같이 코드 코드를 복사합니다 .
공개 클래스 StringDemo1 {
공개 정적 무효 메인(문자열[] 인수){
문자열 str1="abc";
문자열 str2 = "abc";
String str3 =new String("abc");
System.out.println(str1==str2);//true
System.out.println(str1==str3);//false
}
}
FAQ
다음과 같이 코드 코드를 복사합니다 .
String str3 =new String("abc");
얼마나 많은 객체가 생성되었나요?
답: 2
다음과 같이 코드 코드를 복사합니다 .
문자열 str="ab"+"cd";
얼마나 많은 객체가 생성되었나요? 대답: 하나. "ab" 및 "cd"는 문자열 풀에 배치된 상수입니다. 따라서 하나의 abcd 문자열 풀만 생성되고 abcd 문자열이 문자열 풀에 저장됩니다.
다음과 같이 코드 코드를 복사합니다 .
공개 클래스 StringDemo1 {
공개 정적 무효 메인(문자열[] 인수){
문자열 str1 = "ab";
문자열 str2="cd";
String str3 ="ab"+"cd";//객체를 생성하고 문자열 풀에 추가합니다.
문자열 str4 =str1+str2;
문자열 str5 =str1+"cd";
System.out.println(str3==str4);//false
System.out.println(str3==str5);//false
}
}
위의 코드에서 볼 수 있습니다. 텍스트가 포함된 따옴표로 생성된 String 개체만 문자열 풀에 추가될 수 있습니다. 새 메서드로 생성된 새 개체가 포함된 "+" 연결 표현식의 경우 생성된 새 개체는 풀의 문자열에 추가되지 않습니다.
그러나 우리의 주의가 필요한 상황이 있습니다:
다음과 같이 코드 코드를 복사합니다 .
공개 클래스 StringDemo1 {
private final static String str1 = "ab";
private final static String str2 = "cd";
공개 정적 무효 메인(문자열[] 인수){
String str3 ="ab"+"cd";//객체를 생성하고 문자열 풀에 추가합니다.
문자열 str4 =str1+str2;
문자열 str5 =str1+"cd";
System.out.println(str3==str4);//true
System.out.println(str3==str5);//true
}
}
왜 이런가요? 그 이유는 상수 때문입니다. 해당 값은 고정되어 있으므로 컴파일 타임에 결정될 수 있습니다.
위의 코드를 약간 변경하고 무슨 일이 일어나는지 확인하세요.
다음과 같이 코드 코드를 복사합니다 .
공개 클래스 StringDemo1 {
개인 최종 정적 문자열 str1;
개인 최종 정적 문자열 str2;
공전{
str1="ab";
str2="cd";
}
공개 정적 무효 메인(문자열[] 인수){
String str3 ="ab"+"cd";//객체를 생성하고 문자열 풀에 추가합니다.
문자열 str4 =str1+str2;
문자열 str5 =str1+"cd";
System.out.println(str3==str4);//false
System.out.println(str3==str5);//false
}
}
str1과 str2는 상수로 정의되어 있지만 s의 값이 계산되기 전에는 즉시 값이 할당되며, 할당되는 값은 변수이므로 속성은 변수와 동일합니다. 런타임에만 생성할 수 있습니다.
2. 문자열 방식
메소드 가져오기
•정수 길이()
•char charAt(int index)는 위치에 따라 문자를 가져옵니다.
•int indexOf(int ch)는 문자열에서 ch가 처음 나타나는 위치를 반환합니다.
•int indexOf(int ch,int fromIndex)는 fromIndex에 지정된 위치에서 시작하여 문자열에서 ch가 처음 나타나는 위치를 가져옵니다.
•int indexOf(문자열 str)
•int indexOf(문자열 str,int fromIndex)
•int lastIndexOf(int ch)
판정방법
•boolean contain(String str) 또 다른 판단 방법: if(str.index(str)!=-1)
• 부울 startWith(문자열 str)
• 부울 endWith(문자열 str)
•bolean isEmpty(문자열 str)
• 부울 같음(문자열 str)
• 부울은 IgnoreCase(String str);
변환 방법
•문자배열을 문자열로 변환
건설자
1.문자열(문자[] chs)
2.String(char[] chs,offset,count)는 문자 배열의 일부를 문자열로 변환합니다.
정적 방법
1.정적 문자열 copyValueOf(char[] chs)
2.정적 문자열 copyValueOf(char[] chs,int offset,int count)
3.정적 문자열 값(char[])
4.정적 문자열 valueOf(char[] chs,int offset,int count)
• 문자열을 문자 배열로 변환
char[] toCharArray
•문자배열을 문자열로 변환
•문자열을 바이트 배열로 변환
바이트[]에서바이트
교체 방법
문자열 교체(olderStr,newStr)
절단방법
문자열 분할(정규식)
하위 문자열 가져오기[카테고리 편집]
문자열 하위 문자열(시작)
문자열 subString(begin,end)에는 머리가 포함되지만 꼬리는 포함되지 않습니다.
문자열을 대문자와 소문자로 변환 Android(10)
문자열 toUpperCase()
문자열 toLowerCase()
문자열의 양쪽 끝에서 공백을 제거합니다.
문자열 다듬기()
두 문자열을 자연 순서로 비교
int CompareTo(문자열 str)
3.스트링 연습
1. 끈 뒤집기
다음과 같이 코드 코드를 복사합니다 .
공개 클래스 StringDemo2 {
공개 정적 무효 메인(문자열[] 인수){
문자열 str = "avdkfasjks";
reverseMethod_1(str);
}
공개 정적 무효 reverseMethod_1(문자열 str){
for(int i=str.length();i>0;i--){
System.out.print(str.charAt(i-1));
}
}
}
2. 가장 큰 동일한 하위 문자열을 가져옵니다.
다음과 같이 코드 코드를 복사합니다 .
공개 클래스 StringDemo2 {
공개 정적 무효 메인(문자열[] 인수){
문자열 str1 = "avdkfasjks";
문자열 str2 = "ewavdrtte";
System.out.println(commonMaxSubstring(str1, str2));
}
공개 정적 문자열 commonMaxSubstring(문자열 str1,문자열 str2){
int len = str1.length();
문자열 str3 = null;
밖의:
//i는 하위 문자열의 길이입니다.
for(int i = len;i>0;i--){
//j는 하위 문자열의 하위 문자열입니다.
for(int j=0;j<len-i+1;j++){
str3=str1.substring(j,j+i);
if(str2.contains(str3))
외부 휴식;
}
}
str3을 반환;
}
}