본문 바로가기

국비교육/국비교육

day14 - 0811

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