Java 문자열 세부 정보 인스턴스 소개
JVM은 자바 프로그램의 문자열 직접 상수에 대해 문자열 풀을 사용하여 저장합니다.문자열 직접 상수를 처음 사용할 때 JVM은 이를 문자열 풀에 캐시합니다.일반적으로 문자열 탱크의 문자열 대상은 쓰레기로 회수되지 않습니다.프로그램이 이 문자열을 다시 사용해야 할 때, 새로운 문자열을 새로 만들지 않아도 인용 변수가 문자열에 있는 문자열을 직접 가리킬 수 있습니다.new 동작을 사용하여 만든 문자열 대상은 문자열 탱크의 대상을 가리키지 않지만,intern () 방법으로 문자열 탱크의 대상을 가리킬 수 있습니다.
public class StringDemo1 {
public static void main(String[] args){
String str1 ="abc";
String 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");
는 몇 개의 대상을 만들었습니까?답: 두 개
String str ="ab"+"cd";
가 몇 개의 대상을 만들었습니까?답: 하나.'ab'와'cd'는 모두 문자열 탱크에 상수로 놓여 있습니다.따라서 abcd 문자열 탱크만 만들고 문자열 abcd를 문자열 탱크에 저장합니다.
public class StringDemo1 {
public static void main(String[] args){
String str1 ="ab";
String str2 ="cd";
String str3 ="ab"+"cd";//
String str4 =str1+str2;
String str5 =str1+"cd";
System.out.println(str3==str4);//false
System.out.println(str3==str5);//false
}
}
위 코드에서 알 수 있듯이 인용부호가 텍스트를 포함하는 방식으로만 생성된 String 대상은 문자열 풀에 추가될 수 있으며, new 방법을 포함하는 새 대상을 포함하는 + 연결 표현식에 의해 생성된 새 대상은 문자열 풀에 추가되지 않습니다.그러나 우리의 주의를 끌 필요가 있는 상황이 있다.
public class StringDemo1 {
private final static String str1 ="ab";
private final static String str2 ="cd";
public static void main(String[] args){
String str3 ="ab"+"cd";//
String str4 =str1+str2;
String str5 =str1+"cd";
System.out.println(str3==str4);//true
System.out.println(str3==str5);//true
}
}
이것은 또 무엇 때문일까?원인은 이렇다. 상량으로 말하자면.그것의 값은 고정되어 있기 때문에 번역 기간에 확정될 수 있다.위의 코드를 약간 바꾸어 어떤 상황이 발생할지 봅시다.
public class StringDemo1 {
private final static String str1 ;
private final static String str2;
static{
str1="ab";
str2="cd";
}
public static void main(String[] args){
String str3 ="ab"+"cd";//
String str4 =str1+str2;
String str5 =str1+"cd";
System.out.println(str3==str4);//false
System.out.println(str3==str5);//false
}
}
str1과str2는 상량으로 정의되었지만 그녀들의 명예는 바로 값을 부여한다. s의 값을 계산하기 전에 그녀들이 언제 값을 부여받았는지, 그리고 어떤 값을 부여받았는지 모두 변수이기 때문에 성질은 변수와 같다.실행할 때만 생성됩니다.2. 문자열 방법
획득 방법
• int length () • char charAt (int index) 위치에 따라 문자 가져오기 • int index Of (int ch) 문자열에 처음 나타나는 위치 반환 • int index Of (int ch, int from Index) from Index 지정된 위치에서 시작하여 문자열에 처음 나타나는 위치 가져오기 • int index Of (String str, int from Index) • int last Index Of (int ch) 판단 방법
• boolean contains(Stringstr)의 또 다른 판단 방법: if(str.index(str)!=-1)•boolean startsWith(String str)•boolean endsWith(String str)•bolean isEmpty(String str)•boolean equals(String str)•boolean equalsIgnoreCase(String str);변환 방법
• 문자열 그룹을 문자열 구조 함수로 변환
1.String(char[] chs)
2. String(char[]chs,offset,count)은 문자 그룹의 일부를 문자열로 바꿉니다.
정적 방법
1.static String copyValueOf(char[] chs)
2.static String copyValueOf(char[] chs,int offset,int count)
3.static String valueOf(char[] )
4.static String valueOf(char[] chs,int offset,int count)
• 문자열을 문자 그룹 char[] toCharArray로 변환
• 문자열을 문자열로 변환 • 문자열을 바이트 그룹으로 변환byte[]toBytes
대체 방법
String replace(olderStr,newStr)
절단 방법
String split(regex)
하위 열 가져오기 [분류 편집]
String subString(begin)
String subString(begin,end) 포함 헤더에 끝 없음
문자열을 대소문자 Android로 변환하기 (10)
String toUpperCase()
String toLowerCase()
문자열 양 끝에 있는 공백 제거
String trim()
두 문자열을 자연 순서로 비교하다
int compareTo(String str)
3. String 연습
1. 문자열 뒤집기
public class StringDemo2 {
public static void main(String[] args){
String str = "avdkfasjks";
reverseMethod_1(str);
}
public static void reverseMethod_1(String str){
for(int i=str.length();i>0;i--){
System.out.print(str.charAt(i-1));
}
}
}
2.최대 동일 하위 문자열 가져오기
public class StringDemo2 {
public static void main(String[] args){
String str1 = "avdkfasjks";
String str2 = "ewavdrtte";
System.out.println(commonMaxSubstring(str1, str2));
}
public static String commonMaxSubstring(String str1,String str2){
int len = str1.length();
String str3 = null;
outer:
//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))
break outer;
}
}
return str3;
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
38. Java의 Leetcode 솔루션텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.