내배캠 강의를 수강하면서 몰랐던 부분에 대해 정리하여 내 지식으로 만들려고 한다.
1. 래퍼 클래스 변수
래퍼 클래스(Wrapper Class)라는 말 그대로 기본형 변수를 클래스로 한번 랩핑(감싸는) 변수”라고 생각하시면 된다.
기본 타입의 래퍼 클래스
기본타입 | 래퍼 클래스 |
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
2.박싱과 언박싱
기본 타입에서 래퍼 클래스 변수로 변수를 감싸는 것을 “박싱”이라고 부르며 래퍼 클래스 변수를 기본 타입 변수로 가져오는 것을 “언박싱”이라고 부릅니다.
//박싱
int number = 21;
Integer num = new Integer(number);
// 언박싱
int n = num.intValue();
3. 자동 형변환
작은 타입 > 큰 타입 형변환 시(자동 형변환)
- 더 큰 표현범위를 가진 타입으로 변환되는것이라 값의 손실이 없다.
- 값의 손실없이 변환이 가능하기 때문에 컴파일러가 자동으로 형변환이 가능하다.
큰 타입 > 작은 타입 형변환 시(강제 형변환 = 캐스팅)
- 더 작은 표현범위를 가진 타입으로 변환된는것이라 값의 손실이 생긴다.
- 값의 손실이 생기기 때문에 자동으로 형변환을 해주지 않고 개발자가 선택하여 형변환을 해야 한다.
4. float
float은 int와 같은 저장공간을 가지고 있지만 long보다 더 넓은 범위를 표현 가능하다.
그 이유는 float은 부동이라는 의미를 가지고 있으며 소수점이 움직인다는 의미의 부동 소숫점 방식으로 숫자를 저장한다.
- 고정 소숫점 방식: 정수를 표현하는 비트와 소수를 표현하는 비트수를 미리정하고 해당 비트만을 활용하여 실수를 저장하는 방식
- 부동 소숫점 방식: 가수와 지수를 구분해서 저장하고 이 값들을 곱한 값을 저장하는 방식
또한 float은 long보다 더 넓은 범위를 표현하기 때문에 자동 형변환이 불가능하다.
4. Scanner 사용할 시 주의할 점
Java 프로그램에서는 기본적으로 Scanner.in 객체의 next() 명령을 사용해서 입력받는다.
주의할 점은 next() 함수와 nextline()를 같이 사용할 때 발생한다.
next() 함수를 통해 값을 입력받고 다음 변수에 입력을 받을 때 nextline() 함수를 사용하면 스킵된다.
코드 예시
// Use scanner
Scanner sc = new Scanner(System.in);
// Get input
System.out.print("입력1");
String input1 = sc.next();
System.out.print("입력2");
String input2 = sc.nextLine();
System.out.println("\n\n");
System.out.println("input1 = " + input1);
System.out.println("input2 = " + input2);
출력 결과
입력1 안녕하세요
입력2
input1 = 안녕하세요
input2 =
Process finished with exit code 0
이렇듯 바로 넘어가진다. 해결방법은 next() 함수를 사용한 다음 줄에 입력받지 않은 nextLine() 함수를 사용해서 줄 바꿈을 없애버리면 된다.
Scanner sc = new Scanner(System.in);
// Get input
System.out.print("입력1");
String input1 = sc.next();
sc.nextLine();
System.out.print("입력2");
String input2 = sc.nextLine();
System.out.println("\n\n");
System.out.println("input1 = " + input1);
System.out.println("input2 = " + input2);
입력1 안녕하세요
입력2 출력됐습니다
input1 = 안녕하세요
input2 = 출력됐습니다
Process finished with exit code 0
'배운내용 정리' 카테고리의 다른 글
객체지향(1) (1) | 2023.10.16 |
---|---|
Java 문법 Array, collection (0) | 2023.10.13 |
JVM (1) | 2023.10.13 |
JSON 이해하기 및 Fetch 프로젝트에 적용하기 (0) | 2023.10.10 |
스파르타 플릭스 JQuery 적용하기 (0) | 2023.10.05 |