일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 파이썬
- 정렬
- domain driven develop
- http 완벽가이드
- String 함수
- 백준 12761
- hadoop
- golang struct
- MongoDB Realm
- 도메인 주도 개발 시작하기
- 우분투
- 12761번 돌다리
- 트리 순회
- 자바 디자인패턴
- 백준 사이트
- ddd
- http 개념
- 백준 파이썬
- 하둡
- 자바 디자인 패턴
- 자바
- 도메인 주도 개발
- go
- 고 배열
- flask
- golang
- 백준 12761번
- 백준
- 몽고디비 렘
- 12761 돌다리
- Today
- Total
개발바닥
문자열 다루기 본문
문자열 연결
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 |