[JAVA-7] 유틸리티 클래스

ParkJunHa·2023년 10월 22일

Object 클래스

모든 클래스의 최상위 클래스

  • java.lang 패키지에 위치한다.
  • 명시적으로 구현하지 않으면 컴파일 시 자동으로 상속받는다.
  • Object 클래스의 멤버는 모든 클래스에서 사용 가능하다.

![[Object.excalidraw | center]]

public class helloWorld extends Object{
	public static void main(String [] args){
		System.out.println("Hello World!");
	}
}
명시적으로 오브젝트를 상속받는 클래스 예제이다.
메서드설명
protected Object clone()객체 자신을 복사한 후에 복사한다
boolean equals(Object obj)다른 객체와 실제 값을 비교한다
protected void finalize()객체 자신에 대해 더이상 참조할 경우가 없을때 가비지 콜랙터에 의해 호출
Class\<?> getClass()객체 자신의 클래스 명을 얻는다.
int hash Code()객체 자신의 해쉬코드를 얻는다.
String toString()객체 자신의 정보를 반환한다
void wait()다른 스레드가 notify()나 notifyAll()을 호출할때까지 현재 실행하는 스레드를 대기상태에 머물게 한다

equals

import com.chapter8.MyStudent;  
public class Main{  
    public static void main(String [] args){  
        MyStudent s = new MyStudent("lee", 2);  
        MyStudent s2 = new MyStudent("lee", 2);  
        if (s == s2){  
            System.out.println("SAME");  
        }else{  
            System.out.println("DIFF");  
        }  
  
        if (s.equals(s2)){  
            System.out.println("EQ");  
        }else{  
            System.out.println("NEQ");  
        }  
    }  
}
DIFF
NEQ

6행 : 두 참조형 데이터를 == 로 비교하면 메모리의 위치값이 비교된다.
12행 : Object 메소드에서 == 로 비교한다.

equals overrided

package com.chapter8;  
  
public class MyStudent extends Object{  
    private String name;  
    private int grade;  
  
    public MyStudent(String name, int grade){  
        this.name = name;  
        this.grade = grade;  
    }  
  
    public String getName(){  
        return name;  
    }  
    public int getGrade(){  
        return grade;  
    }  
    public boolean equals(Object o){  
        boolean result = false;  
        if(o instanceof MyStudent){  
            MyStudent s = (MyStudent)o;  
            if(name.equals(s.name) && (grade == s.grade)){  
                result = true;  
            }  
        }  
        return result;  
    }  
}

![[object_override.excalidraw|center|300]]

DIFF
EQ

toString

인스턴스 속성 정보를 문자열로 출력시 사용

// MyStudent Excute class
System.out.println(s.toString());
com.chapter8.MyStudent@7a81197d

toString overrided

// MyStudent class
public String toString(){  
    return "name :"+name + "\ngrade : "+grade;  
}
name :lee
grade : 2

Wrapper 클래스

각 기본 [[2. 자바의 기본 문법#데이터형 (Data Type)|데이터형]]별로 기본데이터에 관계된 기능을 미리 만들어 제공하는 클래스
형식은 기본데이터 형의 각 첫번째 알파벳을 대문자화 한것.

System.out.println("INT 최댓값" + integer.MAX_VALUE);
String s = "123";
System.out.println(Intger.parseInt(s) + 2);

이런식으로 각 데이터 형을 다른 데이터형으로 바꾸거나, 대소 비교를 하거나 하는등 사용할 수 있다.

Math 클래스

수학 관련 메서드 제공

속성설명
static double E지수 e
static double PI원주율
메서드설명
static double abs(double a)a의 double형 절대값
static int abs(int a)a의 int형 절대값
static double ceil(double a)a보다 큰 정수 중 가장 작은 정수를 double로 반환

이 외에도 여러가지 메서드를 제공
- static double floor(double a)
- static double log10(double a)
- static double log(double a)
- static double max(double a, double b)
- static double min(double a, double b)
- static double pow(dowble a, double b)
- static double random()
- static long round(double a)
- static double sqrt(double a)

Math.floor(4.5);
//와 같이 사용

String 클래스

자바 String 타입 문자열은 한 번 메모리에 생성되면 변경할 수 없다.
기존 문자열을 수정하면, 기존 문자열은 유지되고, 수정된 새로운 문자열이 메모리에따로 생성된다.(깊은 복사)
![[string_class.excalidraw|center]]
변수 초기화시 메모리 상태

String city1 = "서울시";
String city2 = "서울시";

new를 이용한 경우

String city1 = new String("서울시");
String city2 = new String("서울시");

[!question] #java/question
만약에 그럼 문자열이 무수히 많아진다 라고 하면 그 무수히 많은 문자열이 그대로 유지되는것인가? 그러면 메모리상에 큰 부담이 가는것 아닌가?

메서드설명
char charAt(int index)인자로 전달된 index의 문자 반환
int compareTo(String aString)인자로 전달된 문자열로 알파벳 철자 순서 비교
String concat(CharSequence s)인자로 전달된 문자열로 문자열을 결합
boolean contains(CharSequence s)인자로 전달된 문자열을 포함한는가?
boolean endsWith(String suffix)인자로 전달된 문자열로 문자열의 마지막 부분이 같은가?
static String format(String format, Object ... args)지정한 형식으로 문자열 변환 후 반환

등등..

StringBuffer 클래스

동적 문자열 처리 가능
기존 문자열에 수정을 하면 기존 문자열이 변경 (얕은 복사)

![[string_buffer.excalidraw|center|1000]]

StringTokenizer 클래스

java.util 패키지안에 정의되어있다.
문자열을 구분자로 분리하는데 사용한다.

import java.util.StringTokenizer;
public class TokenTest{
	public static void main(String [] args){
		String date = "2023/10/19";
		String Tokenizer st = new StringTokenizer(date, '/');
		while(st.hasMoreTokens()){
			System.out.println(st.nextToken());
		}
	}
}
2023
10
19

Calendar 클래스

java.util 안에 있음

<<설명은 생략함>>

SimpleDateFormat

날짜와 시간에 관련된 정보를 원하는 대로 출력해주는 클래스

<<설명은 생략함>>

참조형 배열

element 가 사용자가 직접 생성한 인스턴스가 저장되는 배열

<<설명은 생략함>>

profile
PS린이

0개의 댓글