1. 문자열 연산
# 저장된 문자열을 자르거나, 붙이거나, 비교하거나 혹은 필요한 문자의 위치를 알아내는 작업
1) 문자열을 다루기 위한 메소드
# 예시
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 | package stringex; public class StringTest01 { public static void main(String[] args) { String target = "Welcome to Java World"; System.out.println(target.concat(" and workspace")); System.out.println(target.substring(11)); System.out.println(target.substring(11, 15)); System.out.println(target.replace('o', 'O')); System.out.println(target.replace("Java", "C")); System.out.println(target.toLowerCase()); System.out.println(target.toUpperCase()); } } # 실행 결과 Welcome to Java World and workspace Java World Java WelcOme tO Java WOrld Welcome to C World welcome to java world WELCOME TO JAVA WORLD | cs |
# 설명
Line 8: target 뒤에 " and workspace"를 붙인다.
Line 9: 11번째 인덱스부터 끝까지 출력한다.
Line 10: 11번째부터 15번째까지의 인덱스를 출력한다.
Line 11: 소문자 o를 대문자 O로 바꾸어준다.
Line 12: "Java"를 "C"로 바꿔준다.
Line 13~14: 각각 소문자와 대문자로 바꿔준다.
2. 문자열 비교
1) == 연산자: 기본형 데이터를 비교할 때와 마찬가지로 쓰이지만, 변수의 데이터가 저장된 메모리 위치를 서로 비교한다.
즉, JVM 메모리에 저장된 데이터(객체)를 직접 비교하는 것
2) equals(): 순수 객체의 데이터값끼리를 비교한다.
3) compareTo(): 사전적 위치를 나타내는 것일 뿐, 결과로 나오는 값의 절댓값을 이용해서 문자열이 사전적으로 얼마나 벌어져 있는지 확인하는 용도로 사용해서는 안된다.
# 문자열을 비교하기 위한 메소드
# 예시
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 31 32 33 34 35 36 | package stringex; public class StringTest02 { public static void main(String[] args) { String coffee1 = new String("Americano"); String coffee2 = new String("Americano"); String coffee3 = new String("AmeRicAnO"); String coffee4 = new String("Blue mountin"); String coffee5 = new String("Cappuccino"); System.out.println((coffee1 == coffee2) ? "equal" : "not equal"); System.out.println((coffee1.equals(coffee2)) ? "equal" : "not equal"); System.out.println((coffee1.equals(coffee3)) ? "equal" : "not equal"); System.out.println((coffee1.equalsIgnoreCase(coffee3)) ? "equal" : "not equal"); System.out.println(coffee4.compareTo(coffee3)); System.out.println(coffee4.compareToIgnoreCase(coffee5)); System.out.println(coffee5.endsWith("A")); System.out.println(coffee5.endsWith("o")); System.out.println(coffee5.startsWith("Ca")); } } # 실행 결과 not equal equal not equal equal 1 -1 false true true | cs |
# 설명
Line 12: == 연산자로 비교했기 때문에 객체의 주소값이 다르므로 false
Line 13: equals() 메소드로 비교했기 때문에 데이터 값이 같으므로 true
Line 18: coffee4의 B는 coffee3의 A보다 사전적 위치로 뒤에 있기 때문에 양수 1
Line 19: coffee4의 B는 coffee5의 C보다 사전적 위치로 앞에 있기 때문에 음수 -1
3. 특정 문자열의 위치 파악
# 대상 문자열에서 특정 문자의 위치값을 나타내는 index를 알기 위한 메소드
# 예시
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 31 32 33 34 35 36 | package stringex; import java.util.Scanner; public class StringTest03 { public static void main(String[] args) { String alphabet = "abcdefghijklmnopqrstuvwxyz"; String number = "1234567890"; System.out.print("문자나 숫자를 입력하세요: "); Scanner sc = new Scanner(System.in); String str = sc.next(); String temp = str.toLowerCase(); int alphabetIdx = alphabet.indexOf(temp); int numberIdx = number.lastIndexOf(temp); System.out.println("Input character: " + str); System.out.println("Alphabet? : " + ((alphabetIdx >= 0) ? "true" : "false")); System.out.println("Number? : " + ((numberIdx >= 0) ? "true" : "false")); } } # 실행 결과 문자나 숫자를 입력하세요: 6 Input character: 6 Alphabet? : false Number? : true 문자나 숫자를 입력하세요: f Input character: f Alphabet? : true Number? : false | cs |
# 설명
- indexOf(String s)의 결과값으로 음수면 대상 문자열에서 String s는 존재하지 않는 것이고, 양수면 존재하는 것이다.
Line 17~18: 각 문자열 변수들의 해당 index를 저장하게 된다.
4. 문자열로 형 변환하는 법
# valueOf(): 다양한 데이터들을 문자열로 바꿔주는 형 변환 함수
# 예시
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | package stringex; public class StringTest04 { public static void main(String[] args) { float f = 10.2031F; String temp = String.valueOf(f); System.out.println(temp); System.out.println(temp.concat(" is String!")); } } # 실행 결과 10.2031 10.2031 is String! | cs |
# 설명
- float형인 변수를 valueOf()를 통해 문자열로 형 변환한다.
5. 특정 형식으로 문자열 포매팅하는 법
# 문자열 포매팅: 문자열의 형태를 정해진 문법에 의해서 변환하는 것
1) 포맷 지시자
# 대상 문자열을 어떤 형식(포맷)으로 변환하도록 기호로 지정하는 역할
(1) 인자 번호: format() 메소드에서 포매팅할 대상 문자열의 인자 번호를 의미
ex. format("%04d", 12, 13); 일때, 12의 인자 번호는 1, 13의 인자 번호는 2가 된다.
이때, 인자 번호 다음에는 반드시 인자 번호를 의미하는 '$' 문자를 붙여야 한다.
(2) 플래그: 숫자를 정렬하거나 특수한 옵션을 지정한다. 결과값을 왼쪽 정렬하는 '-'가 플래그로 가장 많이 사용된다.
(3) 너비: 포매팅할 대상의 너비를 지정한다. 너비는 결과값의 너비를 결정한다.
'04'로 한다면 네 자릿수에 빈칸은 0으로 채워지게 된다.
'4'로 한다면 0대신 빈칸으로 채워지게 된다.
(4) 정밀도: 소수점 아래에 대한 정밀도를 지정하며 대상이 float형인 경우에만 사용한다.
(5) 유형: 포매팅할 유형을 의미한다.
* 10진수: %d, 16진수: %x, 부동 소수점: %f, 문자: %c, 문자열: %s
# 예시
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | package stringex; public class StringTest05 { public static void main(String[] args) { System.out.println("자릿수 맞추는 format"); System.out.println(String.format("%04d", 3)); System.out.println(String.format("%04d", 30)); System.out.println(String.format("%04d", 3000)); System.out.println(String.format("%4d", 30)); System.out.println("\n돈과 관련된 유용한 format"); System.out.println(String.format("%,d", 10000000)); System.out.println(String.format("%,.2f", 10000000F)); System.out.println("\n문자열 자릿수 맞추는데 유용한 format"); System.out.println(String.format("%10s", "abcde")); System.out.println(String.format("%10s", "abcdefghijklmnopqrstuvwxyz")); System.out.println("\n부동 소수점에 대한 유용한 format"); System.out.println(String.format("%.2f", 12345.12345)); System.out.println(String.format("%.2f", 12.1)); } } # 실행 결과 자릿수 맞추는 format 0003 0030 3000 30 돈과 관련된 유용한 format 10,000,000 10,000,000.00 문자열 자릿수 맞추는데 유용한 format abcde abcdefghijklmnopqrstuvwxyz 부동 소수점에 대한 유용한 format 12345.12 12.1 | cs |
'JAVA > JAVA2' 카테고리의 다른 글
JAVA2_day07 | String 메소드 연습문제 (2) (0) | 2018.01.23 |
---|---|
JAVA2_day07 | String 메소드 연습문제 (1) (0) | 2018.01.19 |
JAVA2_day06 | java.lang.String (0) | 2018.01.18 |
JAVA2_day06 | Object 클래스의 메소드 (0) | 2018.01.17 |
JAVA2_day06 | 다형성 연습문제 (0) | 2018.01.17 |