cf) final
변수에 final 사용 : 상수 (값 수정 불가)
메서드에 final 사용 : 오버라이딩 불가 (static도)
클래스에 final 사용 : 상속 불가
String s = "hello";
String ss = "hello";
-> 동일한 문자열은 한 번만 생성됨 (s == ss 일 때 true. 동일한 주소값)
String s2 = new String("hello");
String ss2 = new String("hello");
-> new 할 때마다 매번 생성됨 (s == ss2 일 때 false)
중요 : 문자열 값을 비교할 때는 반드시 equals 메서드 사용 (s.equals(s2);)
// 1. 생성
tring s = "helLO";
String s2 = " helLo ";
// 2.인스턴스 메서드 (s.메서드)
1) 문자열 길이
int n = s.length(); // 5
2) 특정 문자 조회
char c = s.charAt(0); // h
3) 부분열
s.substring(1); // 1부터 끝까지 : elLO
s.substring(1,4)); // 1부터 endIndex 전까지 : elL
4) 특정 문자 위치
s.indexOf("e"); // 1
s.indexOf("E"); // 일치하는 문자가 없으면 -1 반환
5) 대문자
s.toUpperCase(); // 전체 다 대문자로
6) 소문자
s.toLowerCase(); // 전체 다 소문자로
7) 문자열 값비교
s.equals("helLO"); // true
s.equalsIgnoreCase("hello"); // true (대소문자 무시)
8) 문자열 포함여부
s.contains("el"); // true
s.contains("le")); // false
9) 치환
s.replace("h", "H"); // h를 H로 : HelLO
10) 공백 제거
String x = s2.trim();
System.out.println(x); // helLo
s2.trim().length(); // 공백제거 후 길이(메서드체인)
11) 문자열 연결
s.concat("!!!"); // helLO!!!
12) 문자열을 char[]로 반환
char[] chr = s.toCharArray();
System.out.println(Arrays.toString(chr); // [h, e, l, L, O]
13) 구분자로 분리해서 배열로 변환
String x2 = "홍길동/이순신/유관순";
String[] x3 = x2.split("/");
System.out.println(Arrays.toString(x3); // [홍길동, 이순신, 유관순]
// 3. static 메서드 (String.메서드)
(1) "10" --> 10 문자열 숫자를 정수형으로
int k = Integer.parseInt("10");
System.out.println(k+20); // 30
// 비문자열 --> 문자열
String x4 = String.valueOf(true); // "true"
String x5 = String.valueOf(100); // "100"
String x6 = String.valueOf(3.14); // "3.14"
String x7 = String.valueOf(new char[] {'A','B','C'}); // "ABC"
StringBuilder sb = new StringBuilder("hello");
// 1. 생성
StringBuilder sb = new StringBuilder("hello");
// 2. 메서드
System.out.println("1. 값출력: " + sb); // sb.toString() 동일
System.out.println("2. 값 추가: " + sb.append(true)); // hellotrue
System.out.println("2. 값 추가: " + sb.append(100)); // hellotrue100
System.out.println("2. 값 추가: " + sb.append(3.14)); // hellotrue1003.14
System.out.println("2. 값 추가: " + sb.append("world")); // hellotrue1003.14world
System.out.println("2. 값 추가: " + sb.append(new char[] {'A','B'})); // hellotrue1003.14worldAB
System.out.println("3. 값 삽입: " + sb.insert(0, "홍길동")); //홍길동hellotrue1003.14worldAB
System.out.println("4. 값 삭제: " + sb.delete(0, 3)); //hellotrue1003.14worldAB
System.out.println("4. 값 삭제: " + sb.deleteCharAt(0)); //ellotrue1003.14worldAB
System.out.println("5. 값 거꾸로: " + sb.reverse()); //BAdlrow41.3001eurtolle
//String에서도 제공되었던 메서드
System.out.println("6. 길이: " + sb.length()); // 22
System.out.println("7. 특정문자얻기: " + sb.charAt(0)); // B
System.out.println("8. 특정문자 위치얻기: " + sb.indexOf("w")); // 6
System.out.println("9. 부분열: " + sb.substring(6)); // w41.3001eurtolle
System.out.println("9. 부분열: " + sb.substring(6,7)); // w
// StringBuilder --> String
String xxx = sb.toString();
System.out.println(xxx);
기본형 | wrapper 클래스 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
cf) 오토박싱 (auto boxing), 오토언박싱 (auto unboxing)
Calendar rightNow = Calendar.getInstance(); // getInstance() 안에서 new하고 리턴해줌
int year = cal.get(Calendar.YEAR):
Date d = new Date():
System.out.println(d); // Fri Mar 22 15:16:41 KST 2024
import java.util.Date;
import java.text.SimpleDateFormat;
Date d = new Date(); // Fri Mar 22 14:45:08 KST 2024
SimpleDateFormat sdf = new SimpleDateFormat("yyyy"); // "패턴" 지정
String year = sdf.format(d);
: String 클래스의 split(" ") 기능보다 업그레이드 된 클래스
StringTokenizer st = new StringTokenizer(s, ",");
System.out.println("token 갯수: " + st.countTokens());
// 출력
while(st.hasMoreTokens()) {
System.out.println("token 얻기: " + st.nextToken());
}
// 구분자가 여러 개인 경우에도 잘 분리해준다.
String x = "홍|길동, 이순|신, 유관순/AAA/BBB";
StringTokenizer st2 = new StringTokenizer(x, "/,|");
// 출력
while(st2.hasMoreTokens()) {
System.out.println("token 얻기2: " + st2.nextToken());
}
: 개별적으로 사용되는 여러 개의 상수를 효율적으로 사용 가능한 객체
public enum enum이름 {
상수명, 상수명2,...;
}
: 배열 관련 유틸리티 클래스
// 1. 오름차순 정렬 Arrays.sort()
int[] arr = {6, 2, 1, 85, 23};
Arrays.sort(arr);
Arrays.toString(arr); // [1, 2, 6, 23, 85]
// cf) 내림차순 정렬: Arrays.sort(arr, Collections.reverseOrder()); : Integer만 가능
// 2. 배열값 출력 Arrays.toString() ★
int[] arr = {6,2,1,85,23};
Arrays.toString(arr); // [1, 2, 6, 23, 85]
// 3. 여러 개의 값들 --> 컬렉션의 List ★
List<Integer> list = Arrays.asList(10,20,30);
Arrays.asList(10,20,30); // [10, 20, 30]
// 4. 전체 배열값 채우기 Arrays.fill( , )
int[] arr = {6,2,1,85,23};
Arrays.fill(arr, 100);
Arrays.toString(arr); // [100, 100, 100, 100, 100]
// 5. 특정 범위 배열값 채우기 Arrays.fill( , , , )
int[] arr = {6,2,1,85,23};
Arrays.fill(arr, 0, 3, 100); // fill(배열, start, end, 변경값)
Arrays.toString(arr); // [100, 100, 100, 85, 23]
// 6. 배열값 비교 Arrays.equlas( , )
int[] arr = {6,2,1,85,23};
int[] arr2 = {6,2,1,85,23};
Arrays.equals(arr, arr2); // true
// 7. 배열에서 특정값의 위치얻기 Arrays.binarySearch( , );
int[] arr = {6, 2, 1, 85, 23};
Arrays.sort(arr); // 꼭 오름차순, 내림차순 정렬 후 해야 됨
Arrays.binarySearch(arr, 85) ); // 3
// 8. 배열복사 및 크기변경 Arrays.copyOf( , );
int[] arr = {6, 2, 1};
int[] arr2 =Arrays.copyOf(arr, 5);
Arrays.toString(arr2); //[6, 2, 1, 0, 0]