java -- String 클래스 와 String 예
9080 단어 String
나중에 문자열 이 같은 판단 을 할 때 equals () 를 사용 합 니 다.
문자열 상수 는 익명 의 대상 입 니 다. 익명 의 대상 은 영원히 null 일 수 없습니다. String 클래스 를 디자인 할 때 공유 디자인 모드 라 는 개념 을 사 용 했 습 니 다. 모든 실행 중인 JVM 밑 에 문자열 의 대상 풀 (Object Pool) 이 존재 합 니 다. 사용자 가 직접 할당 방식 을 사용 하면 문자열 의 내용 을 풀 에 넣 어 직접 할당 방식 을 사용 하 는 다른 String 대상 이 사용 할 수 있 도록 합 니 다.새 성명 의 문자열 내용 이 풀 에 없 으 면 다음 에 사용 할 수 있 도록 새로운 것 을 열 고 풀 에 계속 넣 을 것 입 니 다.
public class StringDemo {
/**
* @param args
*/
public static void main(String[] args) {
String a="hello";
String b="hello";
String c="hello";
String d=new String("hello");
System.out.println(a==b);
System.out.println(a==c);
System.out.println(b==c);
System.out.println(d==a);
}
}
구조 적 방법 을 사용 하여 열 린 문자열 대상 은 실제 적 으로 두 개의 공간 을 열 고 그 중 하 나 는 쓰레기 라 고 부 를 수 있 습 니 다.
public class StringDemo {
public static void main(String args[]) {
String str1 = new String("Hello") ;
String str2 = "Hello" ; //
String str3 = "Hello" ; //
System.out.println(str1 == str2) ; // false
System.out.println(str1 == str3) ; // false
System.out.println(str2 == str3) ; // true
}
}
위의 프로그램 을 통 해 구조 방법 을 사용 하여 실례 화 된 String 대상 은 풀 에 들 어가 지 않 기 때문에 스스로 사용 할 수 밖 에 없다 는 것 을 알 수 있다.그러나 String 류 에서 조작 을 편리 하 게 하기 위해 수 동 으로 연못 에 들 어 가 는 방법 을 제공 했다. Public String intern ().
public class StringDemo {
public static void main(String args[]) {
String str1 = new String("Hello").intern() ;
String str2 = "Hello" ; //
String str3 = "Hello" ; //
System.out.println(str1 == str2) ; // true
System.out.println(str1 == str3) ; // true
System.out.println(str2 == str3) ; // true
}
}
면접 문제: String 류 의 두 가지 대상 의 실례 화 방식 의 차 이 를 설명해 주 시 겠 습 니까?
· 직접 할당: 메모리 공간 만 열 고 문자열 의 내용 은 다음 에 사용 할 수 있 도록 자동 으로 풀 에 들 어 갈 수 있 습 니 다.
· 구조 방법: 두 개의 메모리 공간 을 열 면 한 개 는 쓰레기 가 되 고 자동 으로 연못 에 들 어 갈 수 없 으 며 intern () 을 사용 하여 수 동 으로 연못 에 들 어 갈 수 있 습 니 다.
앞으로 의 모든 개발 에서 String 대상 의 실례 화 는 영원히 직접 값 을 부여 하 는 방식 으로 이 루어 질 것 입 니 다.
문자열 내용 의 변경 은 실제 적 으로 문자열 대상 의 인용 과정 을 바 꾸 고 대량의 쓰레기 가 수반 되 므 로 다음 코드 는 실제 적 으로 피해 야 합 니 다.
public class StringDemo {
public static void main(String args[]) {
String str = "" ;
for (int x = 0 ; x < 1000 ; x ++) {
str += x ;
}
System.out.println(str) ;
}
}
그러나 이 코드 는 '끊 기 - 연결' String 대상 이 1000 회 필요 해 쓰레기 가 많이 발생 하기 때문에 사용 할 수 없습니다.
public String(char[] value) 구조 모든 문자 배열 내용 을 문자열 로 변경 합 니 다.
public String(char[] value, int offset, int count)
구조 일부 문자 배열 을 문자열 로 바 꾸 고, offset 은 시작 점 을 표시 하 며, count 는 동작 할 길 이 를 표시 합 니 다 Public char charAt (int index) 수수 하 다 지정 한 색인 위치 에 있 는 문자 public char [] toCharArray () 가 져 오기 수수 하 다 문자열 을 문자 배열 로 변환 합 니 다.
문자열 과 문자 배열 변환, 소문 자 문자열 을 대문자 문자열 로 바 꾸 는 작업 을 완 료 했 습 니 다. 소문 자 와 대문자 가 32 차이 가 났 습 니 다.
public class StringDemo {
public static void main(String args[]) {
String str = "helloworld" ;
char data [] = str.toCharArray() ; //
for (int x = 0 ; x < data.length ; x ++) {
System.out.print(data[x] + "、") ;
data [x] -= 32 ; //
}
System.out.println() ;
System.out.println(" :" + new String(data)) ;
System.out.println(" :" + new String(data,0,5)) ;
}
}
현재 문자열 이 숫자 로 구성 되 었 는 지 판단 해 야 합 니 다
public class StringDemo {
public static void main(String args[]) {
char c = '8' ;
System.out.println(c >= '0' && c <= '9') ;
System.out.println((int) c) ;
}
}
문자열 을 먼저 문자 배열 로 바 꾼 다음 문자 배열 의 모든 문자 가 숫자 인지 아 닌 지 를 순서대로 판단 합 니 다. 만약 전부 라면 true 로 돌아 갑 니 다. 그렇지 않 으 면 false 로 돌아 갑 니 다.
public class StringDemo {
public static void main(String args[]) {
String str = " 1a 23" ;
System.out.println(isNumber(str)) ;
}
public static boolean isNumber(String temp) {
char data [] = temp.toCharArray() ; //
for (int x = 0 ; x < data.length ; x ++) {
if (data[x] < '0' || data[x] > '9') {
return false ; //
}
}
return true ;
}
}
public String(byte[] bytes)
구조 모든 바이트 배열 을 문자열 로 변경 합 니 다.
public String(byte[] bytes, int offset, int length)
구조 부분 바이트 배열 을 문자열 Public byte [] getBytes () 로 변경 합 니 다. 수수 하 다 문자열 을 바이트 배열 public byte [] getBytes (String charset Name) throws Unsupported Encoding Exception 으로 변경 합 니 다. 수수 하 다 문자열 코드 변환 동작
일반적인 상황 에서 프로그램 에서 바이트 배열 을 조작 하려 면 두 가지 상황 만 있 습 니 다. · 상황 1: 인 코딩 변환 이 필요 할 때; · 상황 2: 데이터 가 전송 되 어야 할 때. public boolean equals(String anObject) 수수 하 다 대소 문자 구분 동일 판단 public boolean equalsIgnoreCase (String anotherString) 수수 하 다 대소 문자 비교 가 같은 지 구분 하지 않 음 public int compareTo (String anotherString) 수수 하 다 두 문자열 의 크기 를 비교 합 니 다 public boolean contains (String s) 수수 하 다 지정 한 하위 문자열 이 존재 하 는 지 찾 습 니 다. JDK 1.5 이후 Public int index Of (String str) 가 있 습 니 다. 수수 하 다 처음부터 지정 한 문자열 의 위 치 를 찾 습 니 다. - 1 public int index Of (String str, int from Index) 를 찾 을 수 없습니다. 수수 하 다 지정 한 위치 에서 뒤로 문자열 의 위 치 를 찾 습 니 다. - 1 Public int lastIndex Of (String str) 를 찾 을 수 없습니다. 수수 하 다 뒤로 가서 문자열 의 위 치 를 찾 습 니 다. - 1 Public int lastIndex Of (String str, int from Index) 를 찾 을 수 없습니다. 수수 하 다 지정 한 위치 에서 앞으로 Public boolean starts With (String prefix) 를 찾 습 니 다. 수수 하 다 지정 한 문자열 로 시작 할 지 여 부 를 판단 합 니 다 Public boolean starts With (String prefix, int toffset) 수수 하 다 지정 한 위치 에서 지정 한 문자열 로 시작 할 지 여 부 를 판단 합 니 다. JDK 1.7 Public boolean ends With (String suffix) 수수 하 다 지정 한 문자열 로 끝 날 지 여 부 를 판단 합 니 다 public String replaceAll (String regex, String replacement) 수수 하 다 모두 바 꾸 기 public String replaceFirst (String regex, String replacement) 수수 하 다 첫 번 째 public String substring 바 꾸 기 (int beginIndex) 수수 하 다 지정 한 위치 에서 끝까지 public String substring (int beginIndex, int endIndex) 수수 하 다 지정 한 범위 의 내용 을 캡 처 합 니 다 public String [] split (String regex) 수수 하 다 지정 한 문자열 에 따라 Public String [] split (String regex, int limit) 를 모두 나 눕 니 다. 수수 하 다 지정 한 길이 로 나누다
public class StringDemo {
public static void main(String args[]) {
String str = "192.168.1.1" ;
String result []= str.split("\\.") ;
for (int x = 0 ; x < result.length ; x ++) {
System.out.println(result[x]) ;
}
}
}
public boolean isEmpty() 수수 하 다 빈 문자열 인지 판단 하기 (") public int length () 수수 하 다 문자열 길이 public String trim () 가 져 오기 수수 하 다 좌우 스페이스 바 를 지 운 public String toLowerCase () 수수 하 다 모든 문자열 을 소문 자 public String toUpperCase () 로 변환 수수 하 다 모든 문자열 을 대문자 public String intern () 로 변환 수수 하 다 입 지 public String concat (String str) 수수 하 다 문자열 연결 은 이니셜 을 대문자 로 쓸 수 있 지만, 이 방법 은 사실 매우 중요 하지만, String 클래스 는 제공 하지 않 습 니 다.다음은 간단하게 실현 하고 기본 적 인 원 리 를 드 리 겠 습 니 다.
public class StringDemo {
public static void main(String args[]) {
String str = "hello" ;
System.out.println(initcap(str)) ;
}
public static String initcap(String s) {
return s.substring(0,1).toUpperCase().concat(s.substring(1)) ;
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Access Request, Session and Application in Struts2If we want to use request, Session and application in JSP, what should we do? We can obtain Map type objects such as Req...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.