개발바닥

문자열 다루기 본문

자바

문자열 다루기

라이언 2019. 3. 20. 17:50
반응형

문자열 연결


String 클래스 변수로 선언한 문자열들을  " + " 을 사용하여 연결할 수 있다.


   String str1="hello ";
   String str2="java";
   String out=str1+str2;


여러 문자열을 구분자로 구분해서 결합하려면 join 메서드를 사용한다.

첫 번째 인자는 분리 문자열이고, 

두 번째 인자부터는 결합하고 싶은 문자열을 지정한다.



   String str1="hello ";
   String names=String.join(", ", "java","python","c++","c#");
		




부분 문자열


문자열을 분리하려면 substring 메서드를 사용하면 된다.

첫 번째 인자는 추출할 부분 문자열의 시작 위치 (문자열의 인덱스는 0부터 시작한다.)

두 번째 인자는 부분 문자열에 포함하지 않을 문자의 첫 번째 위치이다. 

처음글자부터 5글자만 추출하기 위해서는 substring(0,5)를 하면 된다. ( 인덱스가 0번부터 시작하기 때문에 5가 글자로는 6번째 글자이기때문이다.)



  
		String names="hello world!";
		String subStr=names.substring(6,12);
		System.out.println(subStr);
		


문자열에서 문자열의 모든 부분을 구분자로 분리해서 추출하고 싶을 때는 split 메서드를 사용한다.



  
		String names="java, python, c++, c#";
                String[] result=names.split(", ");
		


문자열 비교


일반적으로 두 문자열을 비교할 때 "==" 연산자를 사용하는데 자바에서는 절대로 사용해서는 안된다.


"==" 연산자 사용은 메모리에서 같은 객체일 때만 true를 반환한다. JVM에는 각 문자열의 인스턴스가 오직 한 개씩만 있어서 "World"=="World"는 true가 된다. 그런데 new를 사용해서 객체를 생성하면 문자열이 같더라도 서로 다른 메모리 주소를 사용하기 때문에 false를 반환한다.


  
		String str1="world";
		String str2="world";
		if(str1==str2) {
			System.out.println("str1,str2 문자열은 같은 메모리 주소를 사용하고 있다.");	
		}else {
			System.out.println("str1,str2 두 문자열은 다른 메모리 주소를 사용하고 있다.");	
		}
		String str3=new String("world");
		String str4=new String("world");
		if(str3==str4) {
			System.out.println("str3,str4 문자열은 같은 메모리 주소를 사용하고 있다.");	
		}else {
			System.out.println("str3,str4 두 문자열은 다른 메모리 주소를 사용하고 있다.");	
		}		
		






 


다른 모든 객체 타입 변수와 마찬가지로 String 변수는 해당 변수는 해당 변수가 어떤 객체(빈 문자열조차)도 참조하지 않는 null이 될 수 있다.

객체가 null인지 검사하려면 "==" 연사자를 사용해야 한다.


  
  String name=null;
   if(name==null) {}
		


문자열을 리터럴 문자열과 비교할 때는 리터럴 문자열을 앞쪽에 두는 게 좋다.

(문자열이 null일 때도 제대로 동작하기 위함이다.)


  
   if("world".equals(location)){}



대소문자를 구별하지 않고 두 문자열을 비교하려면 equalsIgnoreCase 메서드를 사용하면 된다.


문자열을 순서대로 정렬해야 할 때도 있다. compareTo 메서드를 사용해서 한 문자열이 또 다른 문자열보다 앞에 오는지(오름차순) 알려준다.


first.compareTo(second)


first가 second보다 앞에 오면 음의 정수(꼭 -1은 아니다.) 를 반환

first가 second보다 뒤에 오면 양의 정수(꼭 1은 아니다.) 를 반환

두 문자열이 같으면 0을 반환한다.



서드 

목적 


boolean startsWith(String str)


boolean endsWith(String str)


boolean contains(CharSequence str) 


문자열이 지정한 문자열로 시작/종료하거나 지정한 문자열을 포함하는지 검사한다. 


int indexOf(String str)


int lastIndexOf(String str)


int indexOf(String str,int fromIndex)


int lastIndexOf(String str,int fromIndex) 


전체 문자열이나 fromIndex에서 시작하는 부분 문자열을 검색해서 str이 처음 또는 마지막으로 나타난 위치를 얻는다. 일치하는 부분을 찾지 못하면 -1을 반환한다. 


String replace(CharSequence oldString,CharSequence newString) 


oldString이 나타난 부분을 모두 newString으로 교체한 문자열을 반환한다. 


String toUpperCase()


String toLowerCase() 


원본 문자열의 모든 문자가 대문자 또는 소문자로 변환된 문자열을 반환한다. 


String trim() 


앞뒤 공백을 모두 제거한 문자열을 반환한다. 








반응형

'자바' 카테고리의 다른 글

숫자와 문자열 사이의 변환  (0) 2019.03.20
데이터 타입  (0) 2019.03.19
연산자의 종류와 우선 순위  (0) 2019.03.19
정렬 - 5 [ 퀵 정렬 ]  (0) 2018.11.18
정렬 - 4 [ 셸 정렬 ]  (0) 2018.11.17
Comments