Java
[JAVA] 기본 문법
코코형아
2024. 1. 17. 08:45
1. 자바 기본 문법
- Variable(변수) : 자료를 저장하기 위한 메모리 공간으로 타입에 따라 크기가 달라짐
- 데이터 타입에 따른 데이터의 종류
- 기본형 : 미리 정해진 크기의 데이터 표현, 변수 자체에 값 저장
- byte의 bit 수는 8인데, 왜 -2^7~2^7-1 의 값을 가지는가?
- int형의 크기는 -20억 ~ 20억 쯤 된다.
- 참조형 : 크기가 미리 정해질 수 없는 데이터의 표현, 변수에는 실제 값을 참조할 수 있는 주소만 저장
- 배열 타입
- 열거 타입
- 클래스
- 인터페이스
- String : 유일하게 new를 사용하지 않고 생성가능한 객체
- String은 참조형이지만 기본형처럼 사용하게 지원해준다.
- 기본형 : 미리 정해진 크기의 데이터 표현, 변수 자체에 값 저장
- 실수의 연산은 정확하지 않다.
- 유효 자릿수를 이용한 반올림 처리
- 실수에서 정확한 연산을 하려면 어떻게 해야 하나?
- 정수형으로 바꿔서 계산
- BigDecimal을 이용하여 계산
- 형 변환(Type Casting) : 변수의 형을 다른 형으로 변환하는 것
- primitive는 primitive끼리, reference는 reference끼리 형 변환 가능
- 기본형과 참조형의 형 변환을 위해서 Wrapper 클래스 사용
- Wrapper클래스는 총 8개가 존재한다.(기본형을 감싸주는 역할을 하므로)
- 명시적 형 변환
int i = 100;
byte b = (byte)i;
-
- 묵시적 형 변환
byte b = 10;
int i = b;
- 값의 크기, 타입의 크기가 아닌 타입의 표현 범위가 커지는 방향으로 할당할 경우는 묵시적 형변환 발생
- byte(8bit) → short(16) → int(32) → long(64) → float(32) → double(64)
- char(16) → int(32)
💡 실수형의 값 저장 체계가 정수형보다 크기 때문에 float(32)이 long(64)보다 큼
- 주의사항
- 명시적 형변환은 값 손실이 발생할 수 있으므로 프로그래머 책임하에 형 변환 진행
- 묵시적 형변환은 자료의 손실 걱정이 없으므로 형변환 연산 생략
- 산술 이항 연사자는 연산 전에 피 연산자의 타입을 일치시킨다.
- 피연산자의 크기가 4byte(int) 미만이면 int로 변경한 후 연산 진행
- 두 개의 피연산자 중 큰 타입으로 형 변환 후 연산 진행
- 오류가 나는 코드 예시
byte b1 = 10;
byte b2 = 20;
byte b3 = b1 + b2;
int i1 = 10;
long l1 = 20;
int i2 = i1 + l1;
float f1 = 10.0;
float f2 = f1 + 20.0; /* 20.0이 double이므로 오류 발생*/
byte b3 = b1 + b2 //오류 발생
위 코드는 왜 오류가 날까?
Java에서는 byte나 short같은 int형보다 작은 정수형 타입끼리의 연산은 연산 수행 시 자동으로 int형 타입으로 형 변환된다.
(정수형 연산 시 발생하는 오버플로우(overflow)나 언더플로우(underflow)를 방지하기 위한 것)
그렇기 때문에 오류가 나지 않게 하려면 명시적으로 형 변환 해줘야한다!
byte3 = (byte) b1 + b2; //정상 실행