[JAVA] 자바 정복기 - java.lang 패키지

개발log·2024년 4월 6일

NEW 자바 정복기

목록 보기
20/27
post-thumbnail

자바 API

  • Application Programming Interface)
  • 프로그램 개발에 자주 사용되는 자바에서 제공하는 클래스 및 인터페이스 모음
  • 자바 라이브러리라고도 함
  • API 도큐먼트를 통해 사용방법을 확인할 수 있음

    https://docs.oracle.com/en/java/javase/


API 도큐먼트에서 클래스 페이지 읽는 방법

  • 최상단 SUMMARY: NESTED | FIELD | CONSTR | METHOD
    • SUMMARY: 클래스 내 선언된 멤버 어떤 것들 있는지 알려줌
    • NESTED: 중첩 클래스 혹은 인터페이스 여부
  • 그림에서 1번 클래스의 선언부
    • final 혹은 abastract 키워드 있는지 확인
    • extends 뒤 언급된 부모 클래스 확인
    • implements 키워드 뒤의 인터페이스 확인
  • 클래스에 선언된 필드 목록
    • SUMMARY: NESTED | FIELD | CONSTR | METHOD 에서 원하는 목록 클릭

IDE별 API 도큐먼트 보는법

Eclipse

해당 클래스를 선택 → Ctrl 클릭 → Open Declaration 클릭 → JavaDoc 주석 확인

IntelliJ

해당 클래스를 선택 → 마우스 올리기


Object 클래스

  • 모든 클래스는 Object 클래스의 자식이거나 자손 클래스

객체 비교 (equals())

  • equals() 메소드의 매개 타입은 Object로, 모든 객체가 매개값으로 대입될 수 있음
  • Object 클래스의 equals() 메소드는 비교 연산자인 ==와 동일 결과 리턴
public boolean equals(Object obj) {...}

  • equals() 메소드 재정의하는 경우
    • 두 객체가 필드값이 같은 등 객체인지 비교하기 위해
    • 두 객체의 필드가 모두 같으면 true를, 그렇지 않으면 false 리턴
    • equals() 메소드는 매개값이 기준 객체와 동일 타입 객체인지 먼저 확인 필요

객체 해시코드 (hashCode())

  • 객체를 식별하는 하나의 정수값
  • Object 클래스의 객체 해시코드 메소드는 개체 메모리 번지 이용하여 만듦(객체마다 다른 값)
  • hashCode를 재정의하는 경우: 두 객체가 동등한지 비교할 때 필요]

객체 문자 정보 (toString())

  • Object 클래스의 toString() 메소드는 객체의 문자 정보 리턴
    기본적으로 '클래스이름@16진수해시코드'로 구성된 문자 정보
  • toString() 메소드를 재정의하는 경우: 유익한 정보 리턴하기 위해

System 클래스

프로그램 종료 (exit())

  • exit() 메소드 호출하여 JVM 강제 종료
  • exit() 메소드가 지정하는 int 매개값을 종료 상태값이라 함

현재 시각 읽기(currentTimeMills(), nanoTime())

  • currentTimeMills(): 1/10^3 단위 long 값 리턴
  • nanoTime(): 1/10^9 단위 long 값 리턴

Class 클래스

  • 자바는 클래스와 인터페이스의 메타 데이터를 Class 클래스로 관리
    메타 데이터: 타입 이름 및 파일 경로 정보, 필드 정보, 생성자 정보, 메소드 정보

Class 객체 얻기(getClass(), forName())

  • 클래스로부터 얻는 방법 - 객체 없이 클래스 이름만 가지고 Class 객체 얻음
1. Class clazz = 클래스이름.class
2. Class clazz = Class.forName("패키지...클래스이름")
  • 객체로부터 얻는 방법 - 클래스로부터 이미 객체가 생성되어 있을 경우
Class clazz = 참조변수.getClass();
  • ex) String 클래스
1. Class clazz = String.class;
2. Class clazz = Class.forName("java.lang.String");
String str = "김자바";
3. Class clazz = str.getClass();

클래스 경로 활용하여 리소스 절대 경로 얻기

  • Class 객체는 파일 경로 정보 가지고 있어 이 경로 활용해 다른 리소스 파일의 경로 얻을 수 있음

String 클래스

  • 직접 String 객체를 생성
//배열 전체를 String 객체로 생성
String str = new String(byte[] bytes);
//지정한 문자셋으로 디코딩
String str = new String(byte[] bytes, String charseName);

//배열의 offset 인덱스 위치부터 length만큼 String 객체로 생성
String str = new String(byte[] bytes, int offset, int length);
//지정한 문자셋으로 디코딩
String str = new String(bytep[] bytes, int offset, int length, String charseName)
  • 문자 추출 (charAt())
    매개값으로 주어진 인덱스의 문자를 리턴
String subject = "자바 프로그래밍";
char charValue = subject.charAt(3); // '프' 리턴


문자열 비교 (equals())

== 연산자 사용할 경우 원하지 않는 결과 나올 수 있음

String strVar1 = new String("신민철");
String strVar2 = "신민철";
String strVar3 = "신민철";

strVar1 == strVar2 //false
strVar2 == strVar3 //true
strVar1.equals(strVar2) //true
strVar2.equals(strVar3) //true

바이트 배열로 변환 (getBytes())

byte[] bytes = "문자열".getBytes();
byte[] bytes = "문자열".getBytes(Charest charset);
  • getBytes() 메소드는 시스템의 기본 문자셋으로 인코딩된 바이트 배열 리턴
  • getBytes(Charset charset) 메소드는 특정 문자셋으로 인토딩된 바이트 배열 리턴
try {
	byte[] byte1 = "문자열".getBytes("EUC-KR");
    byte[] byte2 = "문자열".getBytes("UTF-8");
}catch (Excetion e) {
}
  • 바이트 배열을 다시 문자열로 디코딩할 때에는 어떤 문자셋으로 인코딩되었는가에 따라 다름
    시스템 기본 문자셋과 다른 문자셋으로 인코딩되었을 경우
String str = new String(byte[] bytes, String charsetName);

문자열 대치(replace())

첫 번째 매개값인 문자열을 찾아 두 번재 매개값인 문자열로 대치한 새로운 문자열 생성 및 리턴

String oldStr = "자바 프로그래밍";
String newStr = oldStr.replace("자바", "JAVA");

위 경우 newStr 변수는 "JAVA 프로그래밍" 문자열 참조

profile
나의 개발 저장소

0개의 댓글