Object 클래스
Object 클래스란?
Object 클래스는 java.lang 패키지에 속해 있으며, 모든 클래스의 조상이라고 할 수 있다.
•
컴파일 할 때, 모조건 상속으로 넣어준다.
Object클래스의 메서드
•
public boolean equals(Object obj) → 객체 자신과 객체 obj가 같은 객체인지 검사한다. (같다면 true 리턴)
•
public String toString() → 객체의 정보를 문자열로 표현하여 반환한다.
•
protected Object clone() → 객체 자신의 복사본을 생성하여 반환한다.
•
public int hashCode() → 객체에 대한 해쉬 코드를 반환한다.
•
protected void finalize() → 가비지 콜렉터에 의해 호출된다.
•
public final Class getClass() → 객체의 클래스 정보를 반환한다.
객체의 주소가 동일 한지 검사해 true / false를 반환한다
toString()
Object 상위 클래스의 메서드 이기 때문에 원하는 클래스 생성후 toString 메서드 사용시 오버라이딩으로 재정의해야 개발자가 원하는 형식으로 문자열 표현가능하다.
•
System.out.println(s) 과 같이 객체를 print하면 s.toString 메소드가 실행된다.
why? PrintStream 클래스의 출력 관련 메소드(print, println 등)를 통해 객체를 출력하도록 명령하면 자바 컴파일러가 내부적으로 toString() 메소드를 호출한다 → 따라서 재정의 하지 않으면 Object에 정의된대로 @기준 클래스명과 해시코드값이 출력된다.
String 클래스
char배열로 생성되는 불변 객체 값.
자바 외의 언어에서는 문자열을 char형의 배열자체로로 다루지만
자바는 문자열을 위한 string클래스와 메서드를 제공한다.
String 메서드
•
charAt(int index) : 특정 인덱스의 문자리턴
•
equals(Object anObject) : 두 문자열을 비교
•
indexOf(String str) : 문자열 내에서 주어진 문자열의 위치 리턴
•
length() : 총 문자의 수를 리턴
•
trim() : 앞뒤 공백을 제거한 새로운 문자열 리턴
•
valueOf(int i) : 기본 타입값 문자열로 리턴
valueOf(double d)
equals() in String 클래스
Object클래스에서 String 클래스가 equals()를 오버라이드 하여 인자로 전달된 String의 문자열을 비교한다.
•
객체가 같으면 == 로 단순비교
•
객체가 다르면 타입이 String일경우 문자하나하나 비교에 문자열을 비교한다.
Stack
class Stack {
private int top;
private int stackSize;
private char stackArr[];
// 스택이 비어있는 상태인지 확인
// 스택 포인터가 -1인 경우 데이터가 없는 상태이므로 true 아닌 경우 false를 return
public boolean isEmpty() {
return (top == -1);
}
// 스택이 가득찬 상태인지 확인
// 스택 포인터가 스택의 마지막 인덱스와 동일한 경우 true 아닌 경우 false를 return
public boolean isFull() {
return (top == this.stackSize - 1);
}
// 스택에 데이터를 추가
public void push(char item) {
if (isFull()) {
System.out.println("Stack is full!");
} else {
stackArr[++top] = item; // 다음 스택 포인터가 가리키는 인덱스에 데이터 추가
System.out.println("Inserted Item : " + item);
}
}
// 스택의 최상위(마지막) 데이터 추출 후 삭제
public char pop() {
if (isEmpty()) {
System.out.println("Deleting fail! Stack is empty!");
return 0;
} else {
System.out.println("Deleted Item : " + stackArr[top]);
return stackArr[top--];
}
}
// 스택의 최상위(마지막) 데이터 추출
public char peek() {
if (isEmpty()) {
System.out.println("Peeking fail! Stack is empty!");
return 0;
} else {
System.out.println("Peeked Item : " + stackArr[top]);
return stackArr[top];
}
}
// 스택 초기화
public void clear() {
if (isEmpty()) {
System.out.println("Stack is already empty!");
} else {
top = -1; // 스택 포인터 초기화
stackArr = new char[this.stackSize]; // 새로운 스택 배열 생성
System.out.println("Stack is clear!");
}
}
// 스택을 생성하는 생성자
public Stack(int stackSize) {
top = -1; // 스택 포인터 초기화
this.stackSize = stackSize; // 스택 사이즈 설정
stackArr = new char[this.stackSize]; // 스택 배열 생성
}
// 스택에 저장된 모든 데이터를 출력
public void printStack() {
if (isEmpty()) {
System.out.println("Stack is empty!");
} else {
System.out.print("Stack elements : ");
for (int i = 0; i <= top; i++) {
System.out.print(stackArr[i] + " ");
}
System.out.println();
}
}
}
public class StackTest {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("스택 사이즈를 입력하시오.");
int stackSize = sc.nextInt() ;
Stack stack = new Stack(stackSize);
stack.push('A');
stack.printStack();
stack.push('B');
stack.printStack();
stack.push('C');
stack.printStack();
stack.pop();
stack.printStack();
stack.pop();
stack.printStack();
stack.peek();
stack.printStack();
stack.clear();
stack.printStack();
}
}
Java
복사