///////
Search

Object클래스,String,Stack

작성 날짜
2022/09/30 07:24
작성자
황시은

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
복사