[java] 자바 기본 API

14667 단어 JavaJava

> java.lang package

기본 패키지라서 별도의 import 없이 사용 가능하다.

  • 재정의 가능한 메소드

    • protected Object clone() throws CloneNotSupportedException()
      객체의 참조(주소)값만 복사하는 얕은 복사가 아닌 참조대상값(메모리)을 복사하는 깊은 복사

    • public boolean equals(Object obj)
      객체가 동일한지 확인하여 결과 반환

    • protected void finalize() throws Throwable
      가비지 컬렉션이 수행될 때 자동으로 호출

    • public final Class getClass()
      객체의 실행 클래스 반환

    • public int hashCode()
      객체의 해시 코드 값 반환
      메모리의 안정성을 위해 프로그램이 메모리에 직접 접근하는 것을 막고, new 연산자를 이용해 메모리를 할당할 때 메모리에 접근할 수 있는 코드인 해시코드를 생성한다.

    • public String toString()
      객체를 대표하는 문자열로 반환

  • 재정의 불가능한 메소드
    동기화와 관련된 스레드 제어 메소드 들이다.

    • public final void notify()
    • public final void notifyAll()
    • public final void wait()
    • public final void wait(long timeout)
    • public final void wait(long timeout, int nanos)

> String()

  • charAt(int index) : char index 위치에 있는 문자 반환
  • compareTo(String str) : int str보다 사전 순으로 앞이면 음수, 같으면 0, 뒤면 정수 값을 반환
  • concat(String str) : String 기존 문자열에 str을 이어 새로운 String을 반환
  • equals(String str) : boolean str과 같은 문자열이면(대소문자 구분) True, 아니면 False
  • equalsIgnoreCase(String str) : boolean str과 같은 문자열(대소문자 무시) True, 아니면 False
  • length() : int 문자 길이를 반환
  • replace(char oldChar, char newChar) : String 문자열의 oldChar를 모두 newChar로 변경
  • substring(int offset, int endIndex) : String offset 위치에서부터 endIndex-1까지에 걸친 문자열을 반환
  • toLowerCase() String : 모든 대문자를 소문자로 변환
  • toUpperCase() String : 모든 소문자를 대문자로 변환

> StringBuffer()

문자열 변경 시 새로운 객체를 생성하지 않고, 버퍼에 담겨있는 문자열 바로 수정, 동기화 지원

> StringBuilder()

StringBuffer()와 기본적인 동작 같으나 동기화(Thread safe) 지원안함

> Math()

  • static int abs(int num) : 절대 값을 반환
  • static double acos(double num) : arc cosine을 반환
  • static double asin(double num) : arc sine을 반환
  • static double atan(double num) : arc tangent를 반환
  • static double cos(double num) : cosine을 반환
  • static double sin(double num) : sine을 반환
  • static double tan(double tan) : tangent를 반환
  • static double ceil(double num) : 올림 값(ceiling)을 반환
  • static double floor(double num) : 내림 값을 반환
  • static double exp(double power) : 지정된 power만큼 e의 제곱 된 값을 반환
  • static double pow(double num, double power) : num을 power 만큼 제곱한 값을 반환
  • static double random() : 0.0(포함)과 1.0(미포함) 사이의 난수를 반환
  • static double sqrt(double num) : 양수만 가능한 num의 제곱근을 반환

> Wrapper()

자바의 기본형 데이터타입을 클래스화하기 위해 사용하는 클래스로 기본형 데이터 타입을 클래스화하면 Object 클래스의 자식 클래스가 되어 데이터형에 상관없이 Object 클래스를 이용하여 처리할 수 있다.

public class WrapperEx {
     public void printWrapper(Object obj) {
         System.out.println("데이터 : " + obj);
         System.out.println("데이터 클래스 : " + obj.getClass());
}
public static void main(String[] args) {
     int i = 123;
     double d = 3.14;
     WrapperEx wp = new WrapperEx();
     wp.printWrapper(i);
     //데이터 : 123
     //데이터 클래스 : class java.lang.Integer
     wp.printWrapper(d);
     //데이터 : 3.14
     //데이터 클래스 : class java.lang.Double
}

박싱(Boxing)

기본형 데이터 타입을 객체화 시키는 작업

int i = 10;
Integer iValue1 = new Integer(i);
Integer iValue2 = new Integer(123);

double d = 1.123;
Double dValue1 = new Double(d);
Double dValue2 = new Double(5.323);

언박싱(Unboxing)

객체에 저장되어 있는 데이터를 기본형 데이터로 꺼내는 작업

Integer iValue = new Integer(4578);
int i = iValue.intValue();

Double dValue = new Double(44.241);
double d = dValue.doubleValue();

자동 박싱(Auto Boxing), 자동 언박싱(Auto Unboxing)

자바 JDK1.5 이상부터는 기본 타입과 Wrapper클래스 타입 간의 변환이 자동으로 이루어진다

int i = 10;
Integer iValue = i;

Double dValue = new Double(3.14);
double d = dValue;

그 외 유용한 클래스

> Objects()

Object 클래스와 유사한 이름을 가진 클래스로 객체 비교, 해시코드 생성, null 여부, 객체 문자열 리턴 등의 연산을 수행할 수 있다.

  • int compare(T a, T b, Comparator c) : 두 객체 a와 b를 Comparator를 사용해 비교
  • int hashCode(Object o) : 객체의 해시코드 생성
  • Boolean isNull(Ojbect obj) : 널인지 확인
  • Boolean nonNull(Ojbect obj) : 널이 아닌지 확인
  • String toString(Object o) : 객체의 toString()값 리턴

> Random()

난수 발생 방법 ⇒ Math.random(), Random 클래스 이렇게 두가지가 있다.

Math.random()은 정적 메소드로 객체를 생성하지 않고 편하게 사용할 수있지만 double 형의 난수만 발생시킬 수 있다.

Random 클래스는 객체를 생성해야하는 불편함이 있지만 int, long, float, double, boolean 형의 난수를 발생시킬 수 있다.

public void testRandom() {
     Random r = new Random();
     System.out.println("nextInt() : "+ r.nextInt()); // -2^31 ~ 2^31-1 사이의 난수
     System.out.println("nextInt(100) : "+ r.nextInt(100)); // 0~100 사이의 난수
     System.out.println("nextBoolean() : "+ r.nextBoolean()); // true 또는 false
     System.out.println("nextDouble() : "+ r.nextDouble()); // double형 표현범위의 난수
     System.out.println("nextFloat() : "+ r.nextFloat()); // float형 표현범위의 난수
}

좋은 웹페이지 즐겨찾기