1. java.lang.String
1) 2가지 작성법
(1) String str = "Java";
(2) String str = new String("Java");
2) String 클래스는 final 키워드가 붙어있다.
(1) 때문에 임의의 변경이 불가능(immutable)하다.
(2) 다른 클래스의 조상이 될 수 없다.
* final 키워드가 붙은 메소드는 상속 관계 시 오버라이딩이 될 수 없다.
final 키워드는 마지막, 최종으로 수정이 불가능한 의미이고,
오버라이딩은 이미 있는 메소드를 재정의 하는 의미인데 두 의미가 상충하기 때문이다.
# 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 StringTest01 { public static void main(String[] args) { String str1 = "abc"; String str2 = "abc"; System.out.println("str1.equals(str2): " + (str1.equals(str2))); System.out.println("str1 == str2: " + (str1 == str2)); String str3 = new String("java"); String str4 = new String("java"); System.out.println("str3.equals(str4): " + (str3.equals(str4))); System.out.println("str3 == str4: " + (str3 == str4)); } } # 실행 결과 str1.equals(str2): true str1 == str2: true str3.equals(str4): true str3 == str4: false | cs |
# 설명
- equals() 메소드는 이미 오버라이딩으로 데이터값만 같은지 비교하는 것으로, String 객체들끼리 주소값까지 같은지를 비교할 수 없다.
이는 '== 연산자'를 통하여 비교하여야 한다.
# String 클래스의 초기화
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | package stringex; public class StringTest02 { public static void main(String[] args) { int num1 = 0; double num2 = 0.0; int[] arr = null; arr = new int[10]; String str1 = null; System.out.println(str1 + "null 초기화"); String str2 = ""; System.out.println(str2 + "null 초기화"); } } # 실행 결과 nullnull 초기화 null 초기화 | cs |
# 설명
Line 6~7: 기본형 데이터 타입의 초기화는 0으로 표현한다.
Line 9~10: 기본형 데이터 타입 배열의 초기화는 우선 null로 표현하며 그 후에 배열의 길이를 선언해준다 .
Line 12: String 변수를 null로 초기화하게 되면 Line 22와 같이 출력이 된다.
그 이유는 다른 문자열과 함께 사용하였을 때 null 키워드가 문자열로 바뀐다.
Line 15: 때문에 객체형이지만 null이 아닌 ""로 초기화를 하는 것이 좋다.
# 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 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | package stringex; import java.util.Scanner; public class StringTest03 { public static void main(String[] args) { String name = "lEe sUn sHin"; // * String은 공백까지 인덱스에 포함 // 1. 첫번째 s의 위치 int idx = name.indexOf("s"); System.out.println("s의 첫번째 위치: " + idx); // 2. 마지막 s의 위치 idx = name.lastIndexOf("s"); System.out.println("s의 마지막 위치: " + idx); // 3. m의 위치 idx = name.indexOf("m"); System.out.println("m의 위치: " + idx); System.out.println("m의 위치: " + (idx == -1 ? "없다" : idx)); // 4. name을 대문자, 소문자로 각각 바꾸기 System.out.println(name.toUpperCase()); System.out.println(name.toLowerCase()); // 5. name을 대문자로 바꾼 후, 대문자 S를 출력 // 체인 시스템의 마지막 메서드의 반환값을 타입으로 지정해야 한다. char ch = name.toUpperCase().charAt(4); System.out.println("대문자 S 출력: " + ch); // 6. name에 사용자가 입력한 문자열이 있는지 판단 Scanner sc = new Scanner(System.in); System.out.print("검색할 문자열 입력: "); String str = sc.next(); if (name.contains(str)) { System.out.println(name + "에 " + str + "이(가) 있습니다."); }else { System.out.println("해당 문자열은 없습니다."); } } } # 실행 결과 s의 첫번째 위치: 4 s의 마지막 위치: 8 m의 위치: -1 m의 위치: 없다 LEE SUN SHIN lee sun shin 대문자 S 출력: S 검색할 문자열 입력: in lEe sUn sHin에 in이(가) 있습니다. | cs |
# 설명
- String 클래스에 있는 메소드들을 활용한 예시
String은 공백까지 저장하여 인덱스에 포함된다.
'JAVA > JAVA2' 카테고리의 다른 글
JAVA2_day07 | String 메소드 연습문제 (1) (0) | 2018.01.19 |
---|---|
JAVA2_day06 | 추가공부 (String 클래스의 메소드) (0) | 2018.01.18 |
JAVA2_day06 | Object 클래스의 메소드 (0) | 2018.01.17 |
JAVA2_day06 | 다형성 연습문제 (0) | 2018.01.17 |
JAVA2_day05 | instanceof, equals 오버라이딩 연습문제 (0) | 2018.01.17 |