Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Tags more
Archives
Today
Total
관리 메뉴

ultra_dev

이것이 자바다 CH12.모듈 본문

이것이 자바다

이것이 자바다 CH12.모듈

ultra_dev 2023. 1. 27. 01:33

📌 Object의 equals() 메소드는 원래 객체의 번지를 비교하는 == 과 동일한 결과를 리턴한다.

우리가 아는 값만 비교하는 equals()는 String에서 재정의한 equals()이다.

 

equals()는 재정의가 가능하며 이럴 경우 hascode()도 보통 같이 재정의한다. 

hashcode()는 객체를 식별하는 정수인데 equals()를 값만 보는 걸로 재정의해도 hashcode()가 그대로면 

서로 다른 객체로 인식하게 되니 hashcode()도 재정의를 같이 해준다.

 

📌 롬복 라이브러리

Getter, Setter, hasCode(),euqals(),toString() 메소드를 자동 생성해줌

ex) @Data가 붙게 되면

Getter, Setter, hasCode(),euqals(),toString() 메소드가 자동 생성

-> @RequiredArgsConstructor,@Getter,@Setter,@EqualsAndHasCode,@Tostring 어노테이션들이 합쳐진 것과 동일한 효과를 낸다 

 

이외에도

@NoArgsConstructor -> 기본(매개변수가 없는) 생성자 포함

@AllArgsConstructor -> 모든 필드를 초기화시키는 생성자 포함

@RequiredArgsConstructor -> 기본적으로 매개변수가 없는 생성자 포함. 만약 final 또는 @NonNull이 붙은 필드가 있으면 이 필드만 초기화시키는 생성자 포함

@Getter -> Getter 메소드 포함

@Setter -> Setter 메소드 포함

@EqualsAndHashCode -> equals()와 hashcode() 메소드 포함

@ToString -> toString() 메소드 포함

 

📌 final과 @NonNull의 차이점

초기화된 final 필드는 변경할 수 없지만(Setter가 만들어지지 않음), @NonNull은 null이 아닌 다른 값으로 Setter를 통해 변경 가능

 

📌System 클래스 -> 운영체제 일부 기능 이용하기 위해 사용 (자바 프로그램은 운영체제상에서 바로 실행되는 것이 아니라 JVM위에서 실행 돼서 운영체제 모든 기능을 자바 코드로 직접 접근하기 어려움)

 

☑️exit() 메소드는 매개값이 필요한데 이 값을 종료 상태값이라고 함. 종료 상태값으로 어떤 값을 주더라도 프로세스는 종료되는데, 정상 종료는 0 // 비정상 종료는 1 또는 -1이 관례임

 

 

📌StringBuilder 

:효율적인 문자열 조작 기능 필요시 사용

 

String은 내부 문자열을 수정할 수 없다. 내부 문자열을 변경하는 것처럼 보여도 수정한 문자열을 가진 새로운 String객체를 생성하는 것임. 따라서 비효율적이다. 

 

그래서 잦은 문자열 변경 작업이 필요하다면 String보단 StringBuilder를 사용하는 것이 좋다.

 

StringBuilder는 내부 버퍼(데이터 저장 메모리)에 문자열을 저장해두고 그 안에서 추가, 수정, 삭제 작업을 하도록 설계되어 있다.

 

append(기본값|문자열) : 문자열을 끝에 추가insert(위치, 기본값|문자열) : 문자열을 지정 위치에 추가delete(시작 위치, 끝 위치) : 문자열 일부를 삭제replace(시작 위치, 끝 위치, 문자열) : 문자열 일부를 대체toString() : 완성된 문자열을 리턴 (얘는 String타입으로 리턴 나머지 위에는 StringBuilder타입으로 리턴)

 

toString()을 제외한 다른 메소드는 StringBuilder를 다시 리턴하기 때문에 연이어서 다른 메소드를 호출 할 수 있는 

메소드 체이닝 패턴을 사용할 수 있다.

 

ex)

String data = new StringBuilder()
	 	.append("DEF")
   	 	.insert(0, "ABC")
   		 .delete(3,4)
   		 .toString();

 

 

📌StringTokenizer 

:구분자로 연결된 문자열을 분리할 때 사용

 

문자열이 구분자로 연결돼 있을 경우 

1. String의 split() 메소드 이용

2. StringTokenizer 클래스 이용

 

보통

split은 정규 표현식으로 구분하고 ( 여러 구분자 구분 가능)

String data = "홍길동&이수홍,박연수,김자바-최명호";
String[] names = data.split("&|,|-");

 

StringTokenizer는 문자로 구분(한개의 구분자만 구분 가능)

첫번째 매개값으로 전체 문자열 주고 , 두번째 매개값으로 구분자

String data = "홍길동/이수홍/박연수";
StringTokenizer st = new StringTokenizer(data, "/");

 

countTokens() : 분리할 수 있는 문자열의 총 수hasMoreTokens() : 남아 있는 문자열 있는지 여부nextToken() : 문자열을 하나씩 가져옴 

-> nextToken()은 더이상 가져올 문자열 없으면 예외 발생 시키니까 그 전에 hasMoreTokens()로 확인작업 해주는게 좋음

 

📌 포장클래스 

 

: 기본타입(byte,char, short, int, long, float, double, boolean)의 값을 갖는 객체 생성

-> 포장 객체 

 

char타입과 int타입이 각각 Character, Integer인 것만 제외하고는 기본 타입의 첫 문자를 대문자로 바꾼 이름을 가지고 있음

 

☑️ 포장 객체는 포장하고 있는 기본 타입의 값을 변경할 수 없고, 단지 객체로 생성하는데 목적이 있음 

 

☑️ 박싱과 언박싱

 

:기본타입의 값을 포장 객체로 만드는 과정을 박싱, 포장 객체에서 기본 타입의 값을 얻어내는 과정을 언박싱 이라고 한다.

박싱은 포장 클래스 변수에 기본 타입 값이 대입될 때 발생

언박싱은 기본 타입 변수에 포장 객체가 대입될 때 발생

 

☑️포장 객체는 ==,!= 사용할 수 없다. 내부의 값을 비교하는게 아니라 포장 객체의 번지를 비교하기 때문! 

예외로 가능한 타입으로는 boolean,char,byte,short,int 타입이 있다. 

 

대신 equals()메소드로 내부 값 비교할 수 있다. 포장 클래스의 equals() 메소드는 내부의 값을 비교하도록 재정의 되어 있기 때문이다.

 

 

📌 수학 클래스

 

절대값 : Math.abs();

올림값 : Math.ceil();

버림값 : Math.floor();

최대값 : Math.max(,);

최소값 : Math.min(,);

랜덤값 : Math.random();

반올림값 : Math.round();

 

☑️랜덤값

 

1.( Math.radndom() * n) + start

 

2.java.util.Random 클래스 이용 

Random() : 현재 시간을 이용해서 종자값을 자동 설정

Random(long seed) : 주어진 종자값을 사용

 

종자값 : 나수 만드는 알고리즘에 사용되는 값으로 종자값이 같으면 같은 난수를 얻는다.

 

 

Comments