Object 클래스
- Object 클래스는 모든 클래스의 최상위 클래스
- 모든 클래스는 기본적으로 Object 클래스의 상속을 받는다 (extends로 상속을 입력하지 않아도)
- 다형성의 최정점에 있다 (모든 클래스의 인스턴스는 Object 클래스의 인스턴스로 업 캐스팅 가능)
생성자
Object() | Object 인스턴스 생성 |
메소드
Modifier and Type | Method | Description |
protected Object | 참조변수명.clone() | 객체 자신의 복사본을 생성하여 반환 |
boolean | 참조변수명.equals(Object obj) | 객체 자신과 obj객체가 동일한지 여부 반환 |
int | 참조변수명.hashCode() | 객체 자신의 해시코드를 반환 |
String | 참조변수명.toString() | 객체 자신의 정보를 문자열로 반환 |
** equals() 메소드
- 기본적으로 equals(Object obj) 메소드는 객체의 참조변수를 매개변수로 받아서 비교한다
- 참조변수는 해당 객체의 데이터가 저장된 주소값을 저장한다
- 서로 다른 두 객체의 같음을 비교하기 위해서는 equals 메소드를 오버라이딩 해야한다
** String 클래스에서 두 문자열이 같은 문자열인지 판별
문자열의 내용이 같으면 동일한 해시코드를 반환하도록 hashCode() 메소드가 오버라이딩 되어있으므로
문자열의 '같음'을 비교할 때 equals(Object o) 메소드를 사용한다
** 참조변수명 instanceof 클래스명
- 참조변수가 참조하고 있는 인스턴스의 타입을 검사
- instanceof의 결과가 true이면 검사한 타입으로 형 변환이 가능하다
String 클래스
- 문자열(char sequence)을 다루는 클래스
- 변경 불가능한(immutable) 클래스 : 한 번 String 클래스의 인스턴스가 생성되면 문자열 변경 불가능
** 문자열의 덧셈이 가능했던 것은 더한 문자열을 값으로 갖는 새로운 인스턴스를 생성했기 때문이다
** 이 방식은 비효율적이므로 StringBuffer 또는 StringBuilder 클래스를 이용하여 문자열을 더한다
생성자
String() | 빈 문자열 생성 | |
String(String str) | 주어진 문자열을 갖는 String 인스턴스 생성 |
메소드
char | charAt(int index) | 해당문자열에서 지정한 index의 문자 반환 - index는 0부터 시작 |
int | compareTo(String str) | 해당 문자열을 문자열 str과 사전순서로 비교 - 해당 문자열이 str보다 사전순으로 이전이면 음수 반환 - 해당 문자열이 str보다 사전순으로 같으면 0 반환 - 해당 문자열이 str보다 사전순으로 앞이면 양수 반환 |
String | contact(String str) | 해당 문자열에 문자열 str을 덧붙인다 |
boolean | contains(CharSequence s) | 특정 문자열 s가 포함되어 있으면 true를 반환 |
boolean | equals(Object o) | 매개변수로 받은 문자열 o와 String 인스턴스의 문자열 비교 |
boolean | endWith(String suffix) | 해당 문자열 suffix로 끝나면 true를 반환 |
boolean | equalsIgnorecase(String str) | 해당 문자열과 문자열 str을 대소문자 구분없이 비교 |
int | indexOf(String str) | 문자열 str이 존재하는지 확인하여 index 반환 - index는 0부터 시작 - 없으면 -1 반환 |
int | indexOf(String str, int fromIndex) | 문자열 str이 존재하는지 fromIndex부터 확인하여 index 반환 |
String | intern() | 해당 문자열을 상수풀(constant pool)에 등록한다 이미 상수풀에 같은 문자열이 있을 경우 그 주소값을 반환 |
int | lastIndexOf(String str) | 문자열 str이 존재하는지 오른쪽 끝부터 확인하여 index 반환 - 없으면 -1 반환 |
int | length() | 해당 문자열의 길이를 반환한다 |
String | repeat(int count) | 해당 문자열을 count만큼 반복한 문자열을 반환한다 |
String | replace(CharSequence old, CharSequence new) | 해당 문자열에서 old를 new로 바꾼 문자열을 반환한다 |
String | substring(int beginIndex, int endIndex) | 해당 문자열에서 beginIndex부터 endIndex까지의 문자열 반환 |
String | toUpperCase() | String 인스턴스에 저장된 문자열을 모두 소문자로 변환하여 반환 |
String | toString() | String 인스턴스에 저장된 문자열 반환 |
String | toLowerCase() | String 인스턴스에 저장된 문자열을 모두 대문자로 변환하여 반환 |
String | trim() | 해당 문자열의 왼쪽 끝과 오른쪽 끝에 있는 공백을 제거하여 반환 |
String | valueOf(값) | 지정된 값을 문자열로 반환 |
정규 표현식 (Regular Expression)
- 시작과 종료
^ | 시작 |
$ | 종료 |
- 글자 표시
abc | abc인 문자가 나온다 |
[abc] | a, b, c 중 하나가 포함된 문자가 나온다 |
[a-c] | a부터 c까지 중 하나가 포함된 문자가 나온다 |
[^abc] | a, b, c를 제외한 문자열이 나온다 (NOT) |
(ab|bc) | ab 또는 bc 중 하나가 나온다 (OR) |
- 횟수 표시
a{5} | a가 5번 나온다 |
a{5,} | a가 5번 이상 나온다 |
a{5,7} | a가 5번 이상 7번 이하 나온다 |
(hello){5} | hello가 5번 나온다 |
(hello|hi){5} | hello나 hi가 5번 나온다 |
[a-z]+ | a부터 z 사이 중 하나의 글자가 1번 이상 나온다 |
[a-z]{1,} | a부터 z 사이 중 하나의 글자가 1번 이상 나온다 |
[a-z]* | a부터 z 사이 중 하나의 글자가 0번 이상 나온다 |
[a-z]? | a부터 z 사이 중 하나의 글자가 0번 또는 1번 나온다 |
- 특수 표시
\d | digit을 의미, [0-9]와 같다 |
\w | word을 의미, [A-Za-z0-9_]와 같다 |
\s | whitespace(공백)를 의미 |
. | any character, 아무 글자나 1개를 의미 |
** 긍정 전방 탐색 : (?=문자열)
- 뒤에 나오는 문자열에 특정 문자나 문자열이 반드시 하나 이상 나오도록
ex) 대문자가 반드시 하나 이상 나오도록
String regexp = "^(?=.*[A-Z])[A-Za-z0-9!@#$]{8,16}$";
- .은 any character(아무 글자)를 의미
- *는 0번 이상(나와도 되고 안나와도 되고)을 의미
- 긍정 전방 탐색의 (?=.*[A-Z])는 '어떤 글자가 나오던 상관없지만 [A-Z] 중 하나는 반드시 나와야한다'를 의미한다
ex) 대문자, 소문자, 특수문자(!@#$) 가 각각 반드시 하나 이상 나오도록
String regexp = "^(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#$])[A-Za-z0-9!@#$]{8,16}$";
- 대문자 긍정 전방 탐색 : (?=.*[A-Z])
- 소문자 긍정 전방 탐색 : (?=.*[a-z])
- 특수문자 긍정 전방 탐색 : (?=.*[!@#$])
** 부정 전방 탐색 : (?!문자열)
- 뒤에 나오는 문자열에 특정 문자나 문자열이 하나도 나오지 않도록
'국비교육 > 국비교육' 카테고리의 다른 글
day21 - 0823 (0) | 2022.08.23 |
---|---|
day20 - 0822 (0) | 2022.08.23 |
day13 - 0810 (0) | 2022.08.10 |
day12 - 0808 (0) | 2022.08.09 |
day11 - 0805 (0) | 2022.08.09 |