16장. Object 클래스
1. Object 클래스
Object 클래스의 개념
•
Object 클래스는 java.lang 패키지에 속한다.
•
모든 클래스의 조상 클래스
•
컴파일 할 경우에, 자동으로 슈퍼 클래스의 멤버가 들어가 있다.
◦
Object 클래스의 멤버를 모든 클래스가 사용할 수 있다.
•
모든 클래스에서 상속받아 사용할 공통 기능이 구현되어 있다.
Object 클래스의 주요 메소드
public boolean equals(Object obj) 메소드
•
obj가 가리키는 객체와 현재 객체를 비교하여 같으면 true 리턴
public final Class getClass() 메소드
•
현 객체의 런타임 클래스를 리턴
public int hashCode()
•
현 객체에 대한 해시 코드 값 리턴
public String toString()
•
현 객체에 대한 문자열 표현 리턴
protected Object clone()
•
객체 자신의 복사본을 생성하여 반환한다.
protected void finalize()
•
가비지 콜렉터에 의하여 호출된다.
==연산자
예제1) ==
•
예제1에서 obj1과 obj2가 같지 않은 이유는 위 그림처럼 서로 가르키고 있는 메모리주소가 같지 않기 때문이다.
•
예제1처럼 되지 않으려면 Equals()메소드를 사용해야 한다.
Equals(Object obj)메소드
예제) Equals메소드
•
Object의 equals(Object obj) 메소드는 인자로 건네진 객체 obj와 자기 자신의 내용을 비교하여 두 객체의 내용이 같은지 비교하는 메소드이다.
•
내용의 동일성은 전적으로 클래스 작성자가 정의할 문제이기 때문에, 클래스를 작성자가 equals() 메소드를 오버라이딩 하는 것이 원칙이다.
toString()메소드
•
toString(): 객체가 가지고 있는 정보나 값들을 문자열로 만들어 리턴하는 메소드이다.
예제) toString() 메소드
•
Object의 toString() 메소드는 객체의 클래스 이름 @ 객체의 해시코드 값을 16진수로 변환한 값 형식으로 출력된다.
•
개발자는 toString()메소드를 오버라이딩하여, 자신만의 문자열을 출력할 수 있다.
예제) toString() 오버라이딩
2. String 클래스
String 클래스 개념
•
String 클래스는 문자열을 구성하는 문자들을 내부에 저장한다.
•
String 객체도 문자들의 배열이다.
String 클래스 메서드
String 객체 생성의 2가지 방법
1.
리터럴 : 많이 사용되는 방법
•
수정할 수 없는 문자열을 직접 String 변수에 초기화하는 것
2.
객체 생성 : 원칙
•
생성자의 매개변수로 문자열을 전달하면서 객체를 생성
예제) String 객체 생성의 2가지 방법
String 객체 - 문자열 비교하기
•
== 연산자는 문자열을 비교하는 것이 아닌 주소값을 비교한다.
예제) == 연산자
•
문자열 비교는 꼭❗️❗️❗️ equals() 메서드 사용하기 (’==’ 사용
)
예제) equals() 메소드
String 객체 - 문자 추출 charAt()
public static void main(String[] args) {
String subject = "자바 프로그래밍";
char charValue = subject.charAt(3);
System.out.println(charValue); //'프' 출력
}
Java
복사
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
char ch = sc.next().charAt(0);
System.out.println(ch); //입력한 문자열의 0번 인덱스의 값 출력
}
Java
복사
String 객체 - 문자열 안에서 단어 찾기 indexOf()
public static void main(String[] args) {
String str = "the cat is on the table";
int index = str.indexOf("is");
System.out.println(index); //"is"의 시작 위치인 8 출력
}
Java
복사
•
만약 없는 문자열을 indexOf()에 넣게 되면 -1이 출력된다.
String 객체 - 문자열 길이 length()
public static void main(String[] args) {
String str = "the cat is on the table";
System.out.println(str.length()); //빈 공간 포함 23 출력
}
Java
복사
배열 속 문자열의 길이를 합하여 리턴하는 메서드 예제
String 객체 - 공백 잘라내기 trim()
public static void main(String[] args) {
String trimStr = " I Love you ";
System.out.println(trimStr);
System.out.println(trimStr.length()); //앞, 뒤의 빈 공간 포함 12 출력
System.out.println(trimStr.trim());
System.out.println(trimStr.trim().length()); //10 출력
}
Java
복사
String 객체 - 문자열을 단어로 분리 split()
public static void main(String[] args) {
String[] tokens = "I am a boy".split(" "); //공백을 기준으로 분리한다.
for (String t : tokens) {
System.out.println(t);
}
}
Java
복사
public static void main(String[] args) {
String[] tokens = "100, 200, 300".split(", "); //", "을 기준으로 분리한다.
for (String t : tokens) {
System.out.println(t);
}
}
Java
복사
String 객체 - 기본 타입값을 문자열로 전환 valueOf()
public static void main(String[] args) {
int num = 100;
String str = String.valueOf(num); //int 타입 100을 "100"으로 전환
System.out.println(str);
str = String.valueOf(10.0); //double 타입 10.0을 "10.0"으로 전환
System.out.println(str);
str = String.valueOf(false); //boolean 타입 false 를 "false"로 전환
System.out.println(str);
}
Java
복사
cf: int 타입으로 전환
예제
1.
Scanner를 이용하여 한 라인을 읽고, 공백으로 분리된 어절이 몇 개 들어 있는지 "그만"을 입력할 때까지 반복하는 프로그램을 작성하라. [Hint] Scanner.nextLine()을 이용하면 빈칸을 포함하여 한 번에 한 줄을 읽을 수 있다.
>> I love Java.
어절 개수는 3
>> 자바는 객체 지향 언어로서 매우 좋은 언어이다.
어절 개수는 7
>> 그만
종료합니다...
Plain Text
복사
code
Stack
Stack이란?
•
같은 타입의 자료를 순차적으로 저장하는 직선형 자료 구조
Stack의 사용
•
음료수 진열대 (먼저 들어간 음료수가 나중에 나옴)
•
인터넷 브라우저 창 (뒤로 가기, 앞으로 가기 등)
Stack의 구현
•
isEmpty
◦
스택이 empty 상태인지 확인한다.
•
push(삽입)
◦
스택의 최상위에 새로운 자료를 삽입한다.
•
pop(추출)
◦
가장 최상위에 위치한 자료를 추출한 후에 스택에서 제거한다.
•
peek
◦
가장 최상위에 위치한 자료를 추출한다.
◦
pop 메소드와는 달리 스택에서 제거하지는 않는다.
•
clear
◦
스택에 존재하는 모든 자료들을 삭제한다.
예시
Stack
결과