문제1. String 클래스의 다양한 메소드 연습하기

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 StringEx01 {
    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(1115));
        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 문자열 뒤에 이어 붙여준다. 

Line 9: 11~끝까지의 인덱스에 해당하는 문자를 출력한다. 

Line 10: 11~15번째의 인덱스에 해당하는 문자를 출력한다.



문제2. 문자열 비교하기

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 StringEx02 {
    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: == 연산자는 데이터들의 주소값까지 비교하므로 'not equal'이 반환된다. (coffee1과 coffee2는 new를 통해 각각 다른 주소값을 가지며 생성)

Line 18~19: A.compareTo(B) > A가 B보다 사전적 위치가 앞에 놓였다면 음수를, 그렇지 않으면 양수를 반환한다.

Line 20~21: endsWith(String s) > 문자열의 마지막 문자가 s이면 true를, 그렇지 않으면 false를 반환한다. 



문제3. 입력한 문자열이 문자인지 숫자인지 판단하기

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 StringEx03 {
    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"));
        
    }
}
 
# 실행 결과
문자나 숫자를 입력하세요: a
Input character: a
Alphabet? : true
Number? : false
 
문자나 숫자를 입력하세요: 1
Input character: 1
Alphabet? : false
Number? : true
cs

# 설명

Line 15: 입력한 문자열 중에 대문자가 있을 경우 모두 소문자로 변환한다. 

Line 17~18: 만약 입력한 문자열 중에 알파벳이나 숫자가 있을 경우 그 인덱스를 각각 저장한다.

Line 21~22: 저장된 인덱스가 0보다 크다면 해당 문자나 숫자가 존재하므로 false를 반환한다.  



문제4. 숫자형 데이터 타입을 String 타입으로 바꾸기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package stringex;
 
public class StringEx04 {
    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

# 설명

Line 7: String.valueOf(); 메소드는 오버로딩의 대표적인 예이며 문자열로 반환해준다.



문제5. 유용하게 쓰이는 format

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 StringEx05 {
    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.10
cs

# 설명

Line 7~9: '%04d' 는 입력한 값을 4자릿수 너비로 맞춰주는 역할을 한다

Line 10: '0' 대신 공백으로 채워져 출력된다.