-
프리미티브 타입 종류와 값의 범위 그리고 기본 값
-
프리미티브 타입과 레퍼런스 타입
자바의 데이터 타입은 크게 두가지로 나누어진다
1. Primitive 타입 (기본 타입)
2. Reference타입 (참조형 타입)
* Primitive type (기본) : 8개
메모리 크기 |
기본값 |
비고 |
값의범위 | |
boolean |
1 |
false |
논리타입 |
true, false |
char |
2 |
'\u0000' |
문자타입 |
0 ~ 65,535 |
byte |
4 |
0 |
정수타입 |
-128 ~ 127 |
short |
2 |
0 |
-32768 ~ 32767 |
|
int |
4 |
0 |
-2(31승) ~ 2(31승)-1 |
|
long |
8 |
0L |
-2(63승) ~ 2(63승)-1 |
|
float |
4 |
0.0F |
실수타입 |
(3.4 X 10-38) ~ (3.4 X 1038) 의 근사값 |
double |
8 |
0.0 |
(1.7 X 10-308) ~ (1.7 X 10308) 의 근사값 |
* Reference타입 (참조형) : 주소값을 저장하는 타입
- 배열에 대한 레퍼런스
- 클래스에 대한 레퍼런스
- 인터페이스에 대한 레퍼런스
-
리터럴
: 프로그램에서 직접적으로 표현되는 상수 값.
-
변수 선언 및 초기화하는 방법
변수선언 방법
: 데이터타입 변수
ex) int(데이터타입) a(변수)
초기화 방법 (변수 선언 = 타입에 맞는 값)
: int a = 3;
: String a = "Hi im string";
: char a = 'a';
-
변수의 스코프와 라이프타임
변수의 스코프란?: 프로그램 상에서 사용가능한 범위: 변수가 선언된 블럭이 그 변수가 사용가능한 범위
* 전역변수(Global 변수): 클래스 영역에서 선언을 한 변수: 클래스 안 어디서든 사용 가능한 변수
* 지역변수(Local 변수): 클래스 안 메소드에서 선언한 변수
: 클래스 안에서만 값이 존재함.
-
타입 변환, 캐스팅 그리고 타입 프로모션
* 자동타입변환
: 작은 데이터 타입에서 큰 데이터 타입으로 변환하면 데이터의 손실이 없어서 자동 타입 변환이 일어남
ex)
long var;
int n = 35622;
byte b = 24;
var = n; //다른 타입임에도 불구하고 타입이 자동으로 변환 . 값 손실 없이35622가 들어간다.
var = b; //다른 타입임에도 불구하고 타입이 자동으로 변환 . 값 손실 없이35622가 들어간다.
* 강제타입변환
: 개발자가 명시적으로 타입변환을 지정
: 데이터 손실이 발생할 수도 있음
ex)
double d = 3.4; (실수)
int n =(int)d; // n = 3이됨 (정수) => 값의 손실 발생
* 캐스팅이란?
: 개발자가 프로그램 코드로 행하는 강제 타입 변환.
: 업 캐스팅과 다운 캐스팅이 있다.
* 업캐스팅: 서브 클래스의 객체가 슈퍼클래스의 타입으로 변환되는것
* 다운캐스팅: 업캐스팅 된 것을 다시 원래대로 되돌리는 것: 개발자가 명시적으로 타입을 지정해야한다.
-
1차 및 2차 배열 선언하기
* 10 개의 정수로 구성된 배열을 선언하는 경우 (배열의 선언과 생성을 동시에)
int[] a = new int[10];
int a[] = new int[10];
* 선언과 동시에 초기화
int[] a = {2,5,6,8}; //int 값 4개가 들어간 배열 생성
* 2차원 배열일 경우
ex)
int arr[][] = new int[2][3]; // 밑에와 같은 공간 생성
ex)
char arr[][] ={{'a',''b'},{'c','d'},{'e',''f}}; //밑에와 같은 공간 생성
a | b |
c | d |
e | f |
-
타입 추론, var
자바 10 부터 타입 추론을 지원하는 'var' 키워드가 추가 되었다
지역변수이면서 선언과 동시에 초기화를 해주어야한다.
타입추론이란 초기화된 값을 추정해 타입을 스스로 추론하는것
ex) java 9이하 String d = "hi im string";java 10 var d = "guess what? who am i" ;
> We don't provide the data type of message. Instead, we mark the message as a var, and the compiler infers the type of message from the type of the initializer present on the right-hand side.
* "컴파일러는 오른쪽에 초기화 값으로 제공되는 것을 통해 타입을 유추한다."
github.com/whiteship/live-study/issues/2
참조
책: 명품자바프로그래밍
programmers.co.kr/learn/courses/5/lessons/231
gbsb.tistory.com/6
https://velog.io/@bk_log/Java-%ED%83%80%EC%9E%85-%EC%B6%94%EB%A1%A0
'개발공부 > JAVA' 카테고리의 다른 글
[JAVA] 금액표기할 때 콤마찍기 (0) | 2020.11.27 |
---|---|
자바스터디 3주차 (feat.백기선님) (0) | 2020.11.23 |
자바의 특징 (0) | 2020.11.09 |
자바스터디 1일차 (feat.백기선님) (0) | 2020.11.09 |
[자료구조] 스택 / STACK 알아보기 (0) | 2020.03.31 |