JAVA학습 2주차 (2021.01.21)
학습할 것
- 프리미티브 타입 종류와 값의 범위 그리고 기본 값
- 프리미티브 타입과 레퍼런스 타입
- 리터럴
- 변수 선언 및 초기화하는 방법
- 변수의 스코프와 라이프타임
- 타입 변환, 캐스팅 그리고 타입 프로모션
- 1차 및 2차 배열 선언하기
- 타입 추론, var
프리미티브 타입 종류와 값의 범위 그리고 기본 값
일단 프리미티브가 무엇인가?
바로 해석될 수 있는 자료형 이다.
ㄴ 결론 자바의 자료형 종류
종류 | 값의 범위 | 기본값 | 메모리 크기 |
boolean | 1 or 2 | false | 1 |
char | \u0000 to \uFFFF | \u0000 //null이 포함된유니코드 | 2 |
byte | –128 to 127 | 0 | 1 |
short | -2^15 ~ (2^15 - 1) | 0 | 2 |
int | -2^31 ~ (2^31 - 1) | 0 | 4 |
long | -2^63 ~ (2^63 - 1) | 0L | 8 |
float | (3.4 X 10^-38) ~ (3.4 X 10^38) | 0.0f | 4 |
double | (1.7 X 10^-308) ~ (1.7 X 10^308) | 0.0d | 8 |
자료형 타입과 참조타입
자료형 타입은 위와같이 있고
참조형 타입은
클래스타입
인터페이스 타입
배열 타입
열거 타입 이있다.
실제값이 아닌 해당값을 접근하여 주소값이 메모리상에 저장된다는 차이점이있다,
++정수값
10진수 : 26 | 16진수 : 0x1a |
8진수 : 032 | 2진수 : 0b11010 |
자바에서는 정수는 4byte로 표현함 그이상을 표현하고 싶으면 26L == 8byte로 표현한다는 뜻 |
리터럴
소스 코드의 고정된 값을 대표하는 용어
변수 | 리터럴 | 상수 |
변하는 값 변수 | 데이터가 저장된 메모리 공간을 가리키는 이름을 가지고 있지 않습니다. | 저장된 데이터를 변경할 수 없다 |
자바에서 리터럴은 타입에 따라구분됨 | 상수는 선언과 동시에 반드시 초기화해야 합니다 | |
|
자바에서는 final 키워드를 사용 | |
int var = 30; // 30이 바로 리터럴임. final int AGES = 100; // 100이 바로 리터럴임.
|
final int AGES = 30; |
++BigDecimal
- 소수점을 저장할 수 있는 가장 크기가 큰 타입인 double은 소수점의 정밀도에 있어 한계가 있어 값이 유실될 수 있다.
- double은 2진수로 저장후 10진수로바꾸고
- Big은 10진수여서 더블은 실제값과 다를 수 있음
- jsonobject.tistory.com/466
변수 선언 및 초기화
타입 변수명
ex)
int a; // 선언
a = 20; // 초기화
or
int a = 20;
변수의 스코프scope와 라이프타임
변수의 영역scope이란
ㄴ변수가 접근하거나 접근할 수 있는 유효 범위/영역
== { }
라이프 타임
변수가 메모리에 살아있는 기간
타입 변환, 캐스팅 그리고 타입 프로모션
타입 변환
ㄴ하나의 타입에서 다른 타입으로 변환하는 것
bool을 제외한 나머지에서 가능
1. 묵시적 타입 변환
ㄴ자동으로 데이터가 손실되지 않는 방향으로 큰거에서 작은 것으로 자료형 변환
ex)double num1 = 10; -> int num1 = 10;
2. 명시적 타입 변환
ㄴ사용자가 강제적으로 형을 변환 시키는것
문법
ㄴ(변환할타입) 변환할데이터
ex)
int num1 = 1, num2 = 4;
① double result1 = num1 / num2;
② double result2 = (double) num1 / num2;
result
0.0
0.25
1번은 연산을 수행하고 얻은 값의 타입이 int 이다.
결과값 == 피연산자
2번은 형을 변화해 double로 값을 구함
1차 및 2차 배열 선언하기
배열
ㄴ같은 타입의 수를 연속적으로 선언하는것
문법
타입[] 배열이름 = new 타입[배열길이];
타입 추론, var
개발자가 변수의 자료형을 적지 않아도 컴파일러가 알아서 이 변수의 타입을 대입된 값으로 추론하는것
++
casting
변수의 타입를 명시적으로 바꿔주는것
int a = 1.1 // 오류
int a = (int) 1.1 // 1
String f = Integer.toString(1) // 1이라는 정수를 문자열로 변경하는것