0. fianl ( 마지막 )
변수에 final 사용: 상수 ( 값 수정 불가 )
메서드에 final 및 static 사용: 오버라이딩 ( overriding; 재정의 ) 불가.
클래스에 final 사용: 상속불가( extends 불가 )
1. 유틸리티 클래스 ( API )
1) java.lang.String 클래스
가. 사용방법 2가지
- 리터럴 이용
String s= "hello";
String ss = "hello";
==> 동일한 문자열은 한번만 생성됨.
s == ss 일때 true 반환됨
- new 이용
String s2 = new String("hello");
String ss2 = new String("hello");
==> new 할때마다 매번 생성됨.
s==ss2 일때 false 반환됨.
문자열 값을 비교할때는 반드시 equals 메서드를 사용해야 된다.
나. 메서드 정리
다. 특징
- String 는 한번 생성하면 변경 안됨. 메서드를 적용하면 새로운 문자열이
생성됨. 문자열 값을 변경하는 작업이 빈번하다면 String 사용은 지양해야
된다.
package exam19_Util;
public class Util01_StringTest {
public static void main(String[] args) {
// 1. 리터럴 이용하는 방법 ( * )
// ==> "hello" 문자열은 method area 에 저장, 동일한 문자열은 한번만 생성됨.
String s = "hello";
String s2 = "hello";
System.out.println(s);
System.out.println(s2);
System.out.println("주소값 비교: " + ( s == s2 )); // >>> true
System.out.println("문자열 실제값 비교: " + s.equals(s2)); // >>> true
System.out.println();
// 2. new 이용하는 방법
// ==> heap 에 저장, new 했기 때문에 동일한 문자열도 매번 생성됨.
String x = new String("hello");
String x2 = new String("hello");
System.out.println(x);
System.out.println(x2);
System.out.println("주소값 비교: " + ( x == x2 )); // >>> false
System.out.println("문자열 실제값 비교: " + x.equals(x2)); // >>> true
// 중요: 문자열 값을 비교할때는 반드시 equals 메서드를 사용해야 된다.
}
}
package exam19_Util;
import java.util.Arrays;
public class Util01_StringTest2_메서드 {
public static void main(String[] args) {
// 1. 생성
String s = "helLO";
String s2 = " helLO ";
// 2. 인스턴스 메서드 ( s.메서드 형식 )
int n = s.length();
System.out.println("1. 문자열길이: " + n); // >>> 5
char c = s.charAt(0);
System.out.println("2. 특정문자조회: " + c); // >>> h
// 특정부분의 시작값 ~ 끝
System.out.println("3. 부분열: " + s.substring(1)); // >>> elLO
// subString( beginIndex, endIndex ) : endIndex 는 문자열의 끝은 포함안됨.
// endIndex - 1 까지만 출력
System.out.println("3-1. 부분열: " + s.substring(1, 4)); // >>> elL
// indexOf() - 오버로딩메서드
System.out.println("4. 특정문자위치: " + s.indexOf("e")); // >>> 1
// 일치하는 문자가 없다면 -1 반환
System.out.println("4-1. 특정문자위치: " + s.indexOf("E")); // >>> -1
System.out.println("5. 대문자: " + s.toUpperCase()); // >>> HELLO
System.out.println("6. 소문자: " + s.toLowerCase()); // >>> hello
System.out.println("7. 문자열 값비교: " + s.equals("helLO")); // >>> true
// .equals() 는 대소문자를 구별한다.
System.out.println("7-1. 문자열 값비교: " + s.equals("hello")); // >>> false
// .equalsIgnoreCase() 는 대소문자 구분을 무시하고 equals 인지 확인
System.out.println("7-2. 문자열 값비교(대소문자무시): " + s.equalsIgnoreCase("hello")); // >>> true
System.out.println("8. 문자열 포함여부: "+ s.contains("el")); // >>> true
System.out.println("8-1. 문자열 포함여부: "+ s.contains("xe")); // >>> false
// .replace(기존값, 바꿀값)
System.out.println("9. 문자열치환: " + s.replace("h", "H")); // >>> HelLO
System.out.println("원본문자열: " + s);
// 위에서 변환을 많이 했지만 원본은 변경이 안됨.
// String 는 한번 생성하면 변경 안됨.
// 메서드를 적용하면 새로운 문자열이 생성됨.
String x = s2.trim(); // 공백제거
System.out.println("10. 공백제거 전: " + s2); // >>> ' helLO '
System.out.println("10-1. 공백제거 전 길이: " + s2.length()); // >>> 15 (공백포함)
System.out.println("10-2. 공백제거 후: " + x); // >>> helLO
System.out.println("10-3(1). 공백제거 후 길이: " + x.length()); // >>> 5
System.out.println("10-3(2). 공백제거 후 길이(메서드체인) : " + s2.trim().length()); // >>> 5
System.out.println("11. 문자열 연결: " + s.concat("!!!")); // >>> helLO!!!
char [] chr = s.toCharArray();
System.out.println("12. 문자열을 char [] 반환: " + Arrays.toString(chr)); // >>> [h, e, l, L, O]
String x2 = "홍길동/이순신/유관순"; // 홍길동,이순신,유관순 도 가능(구분자는 아무거나 상관없음)
String [] x3 = x2.split("/");
System.out.println("13. 구분자로 분리해서 배열로 반환: " + Arrays.toString(x3)); // >>> [홍길동, 이순신, 유관순]
System.out.println();
// 3. static 메서드 ( String.메서드 형식 )
// "10" ---> 10
int k = Integer.parseInt("10");
System.out.println(k+20); // 연산이 가능해짐.
// 비문자열 ---> 문자열
String x4 = String.valueOf(true);
String x5 = String.valueOf(100);
String x6 = String.valueOf(3.14);
String x7 = String.valueOf(new char[] { 'A', 'B', 'C' });
System.out.println(x4); // "true"
System.out.println(x5); // "100"
System.out.println(x6); // "3.14"
System.out.println(x7); // "ABC"
// 배열 사용 1
char [] y = new char[3];
y[0] = 'A';
y[1] = 'B';
y[2] = 'C';
String yy = String.valueOf(y);
// 배열 사용 2
char [] y2 = { 'A', 'B', 'C' };
String yy2 = String.valueOf(y2);
//배열 사용 3
String yy3 = String.valueOf(new char[] { 'A', 'B', 'C' });
}// end main
}// end class
'Programming > JAVA(eclipse)' 카테고리의 다른 글
java 11일차 _ 01. 유틸리티 클래스( wrapper 클래스 ) (0) | 2024.03.22 |
---|---|
java 11일차 _ 01. 유틸리티 클래스( StringBuilder 클래스 ) (0) | 2024.03.22 |
java 11일차 _ 10일차 정리 (0) | 2024.03.22 |
java 10 일차 _ 04. 람다식 (0) | 2024.03.21 |
java 10 일차 _ 03. 익명클래스 (0) | 2024.03.21 |