월루를 꿈꾸는 대학생

ch9 java api 본문

Programing/Java

ch9 java api

하즈시 2021. 5. 9. 10:44
728x90

 

java.lang 패키지 

- 기본이 되는 클래스들을 포함 

- import가 없어도 사용가능 

 

1.1 object 클래스 

 

- 모든 클래스들 중 최고 조상! 

 

메소드설명

protected Object clone() 해당 객체의 복제본을 생성하여 반환함.
boolean equals(Object obj) 해당 객체와 전달받은 객체가 같은지 여부를 반환함.
protected void finalize() 해당 객체를 더는 아무도 참조하지 않아 가비지 컬렉터가 객체의 리소스를 정리하기 위해 호출함.
Class<T> getClass() 해당 객체의 클래스 타입을 반환함.
int hashCode() 해당 객체의 해시 코드값을 반환함.
void notify() 해당 객체의 대기(wait)하고 있는 하나의 스레드를 다시 실행할 때 호출함.
void notifyAll() 해당 객체의 대기(wait)하고 있는 모든 스레드를 다시 실행할 때 호출함.
String toString() 해당 객체의 정보를 문자열로 반환함.
void wait() 해당 객체의 다른 스레드가 notify()나 notifyAll() 메소드를 실행할 때까지 현재 스레드를 일시적으로 대기(wait)시킬 때 호출함.
void wait(long timeout)

해당 객체의 다른 스레드가 notify()나 notifyAll() 메소드를 실행하거나 전달받은 시간이 지날 때까지 현재 스레드를 일시적으로 대기(wait)시킬 때 호출함.

void wait(long timeout, int nanos) 해당 객체의 다른 스레드가 notify()나 notifyAll() 메소드를 실행하거나 전달받은 시간이 지나거나 다른 스레드가 현재 스레드를 인터럽트(interrupt) 할 때까지 현재 스레드를 일시적으로 대기(wait)시킬 때 호출함.

출처 -velog.io/@foeverna/Java%EC%9E%90%EB%B0%94-%EA%B8%B0%EB%B3%B8-%ED%81%B4%EB%9E%98%EC%8A%A4-Object-%ED%81%B4%EB%9E%98%EC%8A%A4 

 

 

equals(Object obj)

- 객체의 참조변수를 받아서 그결과를 boolean 값으로 알려줌 

- 두 객체의 같고 다름을 참조변수의 값으로 비교하기에 같은 참조를 한다면 true 

- 서로 다른 두 객체를 비교하면 항상 false 그리고 null을 넣어도 항상 false 

 

hashCode()

- 해쉬함수를 구현 

- 다량의 데이털르 저장하고 검색하는데 유용 

- 객체의 주소값을 가지고 해쉬를 돌리기 때문에 서로 다른 두 객체의 해쉬값을 절대 같을 수 없다 

 

 

toString()

- 인스턴스에 대한 정보를 문자열로 정의! 

- 미리 각 클래스마다 오버라이딩 된 게 많아서 주의가 필요 

 

clone()

- 자신을 복제하여 새로운 인스턴스를 반환 ! 

//- 단순히 인스턴스변수의 값만을 복사함 즉 원본에게도 영향을 미칠 수가 있음.. 2차원 배열시 

 

공변 반환타입

- 오버라이딩 시 반환타입을 조상메서드에서 자손 클래스로 변경을 허용하는 것 

- 빈번한 형변환이 줄어드는 이점이 있음 

 

 

얕은 복사 vs 깊은 복사 

 

- clone() 은 객체에 저장된 값을 그대로 복제만 한다 ... 참조하고 있는 객체를 복제하는 것은 아님 즉 그냥 배열이면 ok 다만 객체배열인 경우에는 해당 복사본과 원본이 같은 원소를 참조하기에 복사본에서 변경하면 원본에도 영향을 받아버림 --> 얕은 복사 

 

- 복사를 참조객체까지 하여 원본과 똑같은 형태로 복사하여 구분하는 것을 깊은 복사! 

 

 

getClase()

- Class 객체를 반환하는 메서드 

- 속한 클래스의 모든 정보를 담고 잇으면 클래스당 오직 1개만 존재 

 

 

1,2 String 클래스

 

- 변경이 불가능한 클래스 

-> 한 번 생성된 String 인스턴스는 읽을 수만 있고 변경할 수 없다 .. + 연산자로 추가시 기존 인스턴스가 아닌 새로운 인스턴스를 반환 

 

- 문자열 비교

-> String 클래스는 new 연산자에 의해 항상 새로운 인스턴스가 탄생한다... 다만 문자열 리터럴로 생성하는 경우 같은 문자열이라면 이미 만들어진 주소를 참조

 

-문자열 리터럴 

-> 같은 내용의 문자열 리터럴은 한 번만 저장됨 

-> 이는 intern() 메서드도 동일 

-> 이런 리터럴이 jvm 내에 저장된 장소를 상수 저장소라고 한다 

 

빈 문자열 

- 길이가 0인 배열이 있듯 길이가 0인 문자열도 존재 

- String s = "" ;  == new char[] 과 같음 

 

String 메서드 정리

bamdule.tistory.com/19

 

[JAVA] String 메소드 정리

Java의 문자열 관련 클래스인 String 메소드 정리 글입니다. 참고 : CharSequence는 인터페이스이며, String 클래스는 CharSequence를 구현한 구현체입니다. char charAt(int index) 문자열의 Index번째 문자를..

bamdule.tistory.com

 

join() 과 StringJoiner

 

join() 

- 여러 문자열 사이에 구분자를 넣어 결함

split()

- 구분자로 문자열을 자름 

 

 

기본형 값을 String으로 변환 

- 숫자로 이루어진 문자열을 숫자로 

 

ex_  int i = 100;

      String str2 = String.valueOf(i);  -> 문자열 100으로 변환

 

String 을 기본형 값으로 변환 

- valueOf()

-> int i2= Interger.valueOf("100"); -> 문자열을 숫자 100으로 변환

 

-paseInt()

-> int i = Integer.parseInt("100");

 

 

1.3 StringBuffer 클래스 ,,, StringBuilder 클래스 

- String 클래스는 인스턴스를 생성시 변경 불가능하지만 StringBuffer는 변경이 가능 ! 내부적으로 문자 편집을 위한 [buffer]가존재 

 

StringBuffer 의 생성자 

- 인스턴스 생성할 때 적절한 길이 char[] 배열이 생성되고 이를 편집하기 위한 공간으로 활용

- 기본 16 + (추가되는 문자열 길이)

- 불멸이 아니기에 보통 인스턴스랑 같은 취급을 하면 됨 

 

메소드설명

StringBuffer append(boolean b)

StringBuffer append(char c)

StringBuffer append(char[] str)

StringBuffer append(CharSequence s)

StringBuffer append(double d)

StringBuffer append(float f)

StringBuffer append(int i)

StringBuffer append(long lng)

StringBuffer append(Object obj)

StringBuffer append(String str)

StringBuffer append(StringBuffer sb)

인수로 전달된 값을 문자열로 변환한 후, 해당 문자열의 마지막에 추가함.

int capacity()

현재 버퍼 크기를 반환함.

StringBuffer delete(int start, int end)

전달된 인덱스에 해당하는 부분 문자열을 해당 문자열에서 제거함.

StringBuffer deleteCharAt(int index) 전달된 인덱스에 해당하는 문자를 해당 문자열에서 제거함.

StringBuffer insert(int offset, boolean b)

StringBuffer insert(int offset, char c)

StringBuffer insert(int offset, char[] str)

StringBuffer insert(int offset, CharSequence s)

StringBuffer insert(int offset, double d)

StringBuffer insert(int offset, float f)

StringBuffer insert(int offset, int i)

StringBuffer insert(int offset, long lng)

StringBuffer insert(int offset, Object obj)

StringBuffer insert(int offset, String str)

인수로 전달된 값을 문자열로 변환한 후, 해당 문자열의 지정된 인덱스 위치에 추가함.

StringBuffer reverse() 해당 문자열의 인덱스를 역순으로 재배열함.

 

www.tcpschool.com/java/java_api_stringBuffer

 

 

1.4 Math 클래스 

 

- 기본적으로 수학 계싼에 유용한 메서드로 구성 


Math 메소드 종류

메소드 종류 내용
Math.abs(data) data의 절댓값을 반환 한다.
Math.random() 0.0이상 1.0미만의 임의의 수를 double형태로 반환
Math.max(data1,dat2) 두 값 중 가장 큰 값을 반환
Math.min(data1,data2) 두 값 중 가장 큰 값을 반환
Math.floor(data) data의 소수 첫번째 자리에서 내림 = 소수점 아래 수 버림
Math.ceil(data) data의 소수 첫번째 자리에서 올림
Math.round(data) data의 소수 첫번째 자리에서 반올림
Math.pow(data1,data2) data1의 data2제곱승 값을 반환함
Math.sqrt(data) data에 루트 씌운 값을 반환함

steadystudy-coding.tistory.com/30

 

 

1.5 wrapper 클래스 

 

- 기본형을 객체로 다뤄야하는 경우에 사용하는 클래스 ! 

- 객체생성 시에 생성자의 인자로 주어진 각 자료형에 알맞은 값을 내부적으로 저장 

 

기본 타입래퍼 클래스

byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean

www.tcpschool.com/java/java_api_wrapper

 

 

Number 클래스

 

https://micropilot.tistory.com/3055

 

 

오토박싱 & 언박싱 

 

int i = 5;

Integer iobj = new Integer(7);

 

int sum = i + iobj -> i + iobj.intValue();

-> 이게 언박싱 

 

2.2 java.util.Random 클래스 

 

double ran = Math.random()

 

double ran = new Random().nextDouble();

 

위의 두 방법으로 시행 

 

1-6 사이 정수의 랜덤한 수를 얻는 법

-> int num = (int) (Math.random() * 6 ) =1;

-> int num = new Random().nextInt(6)+1;

 

 

https://hunit.tistory.com/167

 

 

 

2.5 java.util.StringTokenizer 클래스 

 

- 긴문자열을 지정된 구분자를 기준으로 토큰이라는 여러 개의 문자열로 잘라서 사용 

 

 

https://jhnyang.tistory.com/398

split()이랑 비슷한 역할을 하는 듯

 

 

 

 

728x90

'Programing > Java' 카테고리의 다른 글

JVM은 무엇이며 자바 코드는 어떻게 실행하는 것인가  (0) 2022.09.13
CH10 날짜와 시간 & 형식화  (0) 2021.05.16
ch 8 알고리즘  (0) 2021.04.18
CH8 예외처리  (0) 2021.04.18
ch7-2 객체  (0) 2021.04.11