자바의 데이터 타입에는 2가지 원시 타입과 참조 타입으로 나눌 수 있다.
정수, 실수, 문자, 논리 리터럴 등의 실제 데이터 값을 저장하는 타입이다.
종류는 8가지 byte, short, int, long, float, double, char, boolean가 존재한다.
정수형
byte, short, int, long 가 있으며 순서대로 1, 2, 4, 8바이트의 크기를 가진다.
실수형
float, double 이 있으며 4, 8바이트의 크기를 가진다.
float 형식에 접미사 f를 뒤에 붙여 주지 않으면 double형으로 인식
double형 데이터가 float보다 더욱 정밀한 데이터 표현이 가능하다.
데이터 범위
-float 1.40239846E-45f ~ 3.40282347E+38f
-double 4.94065645841246544E-324 ~ 1.79769313486231570E+308
문자형
논리형
참(true), 거짓(false)의 값을 갖는 변수타입을 논리형 변수 타입이라 한다.
객체의 번지를 참조(주소를 저장) 하는 타입으로 메모리 번지 값을 통해 객체를 참조한다.
스택영역
힙영역
힙 영역에 있는 데이터는 함수 내부에서 파라미터로 copied value를 받아서 변경하더라도 함수호출이 종료된 시점에 변경내역이 반영되는 것을 볼 수 있다.
프로그램에서 직접 표현한 값, 소스 코드의 고정된 값을 대표하는 용어
종류로는 정수, 실수, 문자, 논리, 문자열 리터럴이 있다.
정수 리터럴
10진수, 8진스, 16진수, 2진수 리터럴
int a = 15;
int b = 015;
int c = 0x15;
int d = 0b0101;
정수 리터럴은 int형으로 컴파일, long 타입 리터럴은 숫자 뒤에 L 또는 l을 붙여 표시
실수 리터럴
소수점 형태나 지수 형태로 표현한 값을 의미한다.
double f = 0.1234;
double g = 1234E-4;
숫자 뒤에 f나 d를 명시적으로 붙이기도 한다.(double은 생략 가능)
문자 리터럴
단일 인용부호 (")로 문자를 표현한다.
char a ="정"
char b ="seok"
char c = \uae00; (유니코드 값)
문자열 리터럴
문자열은 기본타입이 아니며, 더블 쿼터("")로 표현한다.
String lter = "Jeong";
lter + 26 = "lter26"
논리 타입 리터럴 외 리터럴
boolean 타입 변수에 치환하거나 조건문에 이용된다.
boolean a = true;
boolean b = 10 > 0;(여기선 b값이 true)
boolean c = 0;
Null 리터럴은 래퍼런스에 대입해서 사용한다.
int a = null; // 에러
String str = null;
str = "JAVA";
기본 타입에는 사용이 불가능하고 String 같은 경우에 사용이 가능하다.
자바에서 변수를 사용하려면 변수를 선언하여야 한다. 그 이유로는 값을 저장하는 공간을 확보 해야한다
미리 자원을 확보하는 동시에 사용한다는 의미를 가지고 있기 때문에 변수를 선언하지 않는다면 프로그램은 값을 담아둘 공간이 없어 값을 사용할 수 없다.
변수를 선언하는 방법으론 변수 타입과 변수명을 함께 작성한다.
string name;
int a;
변수 타입과 변수 값이 맞지 않으면 담을 수 없고 반대로 값은 변수 타입에 맞지 않으면 저장될 수 없다.
변수를 사용하기 위해서는 초기와가 필요하다.
변수는 변수 선언 후 값을 할당해 주어야만 사용할 수 잇다. 예외로 초기화를 하지 않고도 사용할 수 있지만 기본적으로 변수는 선언과 초기화가 이루어져야 사용할 수 있다.
// 변수 선언
String message1;
// 변수 초기화
message1 = "Hello World";
// 변수 선언 및 초기화
String message2 = "Hello World";
초기화에는 각각 초기화 하는 방법과 선언과 동시에 초기화하는 방법이 있다.
변수의 스코프란?
변수를 사용할 수 있는 영역이고 스코프는 변수가 선언되는 영역에 따라 접근하는 방법이 다르다
지역 변수
전역 변수
클래스 변수
라이프 타임이란?
이러한 변수가 유효한 시간을 말하는데, 프로그램이 구동되는 동안 변수가 값을 담고 있을 수 있는 주기를 말한다.
변수에 따른 스코프와 라이프 사이클
타입 변환의 종류
형 변환(casting) 이란?
변수 또는 상수의 타입을 다른 타입으로 변환하는 것
형 변환 방법
(타입)피연산자
ex)
double a = 1.0
int score = (int)a;
정수형을 실수형으로 변환
실수형을 정수형으로 변환
경우의 따라 편의상의 이유로 형 변환을 생략할 수 있다.
자동 형 변환의 규칙
동일 타입의 값을 여러개 취급할 수 있는 기능
인덱스라고 불리는 []로 감싼 0 부터 시작하는 정수를 사용하여 배열의 길이나 순서를 나타낼 수 있다.
배열도 결국은 타입에 따라 default value로 채워진다.
1차원 배열 = int arr[i]
2차원 배열 = int arr[i][j]
3차원 배열 = int arr[i][j][k]
타입 추론
변수의 타입을 명시적으로 적어주지 않고도 컴파일러가 알아서 이 변수의 타입을 대입된 리터럴로 추론하는 것
Var
래퍼런스
https://codehouse.tistory.com/3
https://yaboong.github.io/java/2018/05/26/java-memory-management/
https://mine-it-record.tistory.com/100
https://7942yongdae.tistory.com/22
https://catch-me-java.tistory.com/19