java -- String 클래스 와 String 예

9080 단어 String
문자열 비교 중 "=" 과 equals () 의 차 이 를 설명해 주 시 겠 습 니까?          ==:비교 한 것 은 두 문자열 의 메모리 주소 의 수치 가 같 고 수치 비교 에 속 하 는 지 여부 입 니 다.        equals (): 비교 한 것 은 두 문자열 의 내용 으로 내용 비교 에 속 합 니 다.
        나중에 문자열 이 같은 판단 을 할 때 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)) ;
         }
}

 

좋은 웹페이지 즐겨찾기