✏️ Info.
- 자바 데이터 타입, 변수 배열 공부
📋 List.
1. 프리미티브 타입(Primitive Type) 종류와 값의 범위 그리고 기본 값
2. 프리미티브 타입(Primitive Type)과 레퍼런스 타입(Reference Type)
3. Class
4. 리터럴(literal)
5. 변수 선언 및 초기화하는 방법
6. 변수의 스코프와 라이프타임
7. 타입 변환, 캐스팅 그리고 타입 프로모션
8. 1차 및 2차 배열 선언하기
9. 타입 추론, var
✔️ Content.
1. 프리미티브 타입(Primitive Type) 종류와 값의 범위 그리고 기본 값
- 총 8가지형의 타입이 존재 한다.
- 기본 값이 존재 하기에 Null 값이 존재 하지 않는다.
- 실제 값을 저장하는 공간으로 Stack 메모리에 저장 된다.
타입 | 메모리 크기 | 기본 값 | 데이터 범위 | |
논리형 | boolean | 1 byte | false | true, false |
정수형 | byte | 1 byte | 0 | -128 ~ 127 |
short | 2 byte | 0 | -32,768 ~ 32,767 | |
int | 4 byte | 0 | -2,147,483,648 ~ 2,147,483,647 | |
long | 8 byte | 0L | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 | |
실수형 | float | 4 byte | 0.0F | (3.4 X 10-38) ~ (3.4 X 1038) 의 근사값 |
double | 8 byte | 0.0 | (1.7 X 10-308) ~ (1.7 X 10308) 의 근사값 | |
문자형 | char | 2 byte | '\u0000' | 0 ~ 65,535 |
2. 프리미티브 타입(Primitive Type)과 레퍼런스 타입(Reference Type)
Primitive Type (기본형) | Reference Type (참조형) | |
타입 | boolean byte short int long float double char |
Class Interface Array Enum |
저장 | 값의 저장이며, Stack에 저장 된다. | 참조 하는 주소의 저장이며, Heap에 저장 된다. |
기본 값 | 존재, Null 값을 가질 수 없다. | 미 존재, Null 값을 가질 수 있다. |
- Primitive Type
- 1. 에서 다룬 내용으로 참조
- Reference Type
- 값이 저장되어 있는 곳의 주소값을 저장한다. heap 영역에 저장
- 기본적으로 java.lang.Object를 상속 받으면 참조형이다.
- Class, Interface, Array, Enum
3. Class
- Class Type
- 객체의 주소값을 가지고 있다.
- String Class
- 참조형에 속하지만 기본형 처럼 사용되고 있는 클래스, 불변(Immutable)하는 객체이다.
- 값을 변경하는 다양한 메소드를 가지고있지만 실제로는 String Class 객체를 새로 만들어 내는 것이다.
- Wrapper Class
- 주로 Primitive Type(기본형)을 객체로 표현해야할 경우 사용한다.
- 기본형에 대응 되는 참조형이다.
- java.lang 에 포함되어 있다.
- Primitive Type -> Wrapper Class 과정을 Boxing(박싱) 이라 한다.
- Wrapper Class -> Primitive Type 과정을 UnBoxing(언박싱) 이리 한다.
Primitive Type | Wrapper Class |
boolean | Boolean |
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
4. 리터럴(literal)
int a = 10;
- 변하지 않는 데이터 값이다
- 위의 코드에서 a 는 변수(constant), 10 이 리터럴(literal) 이다.
- 즉시값(immediate value)라고도 불린다.
5. 변수 선언 및 초기화하는 방법
public class TestClass {
public static void main(String[] args) throws Exception{
int a, b, c;
int x = 10;
ClassA classA = new ClassA();
int[] arrayA;
int[] arrayB = new int[10];
}
}
class ClassA{
}
6. 변수의 스코프와 라이프타임
public class scope_and_lifetime {
int num1, num2; //Instance Variables
static int result; //Class Variable
int add(int a, int b){ //Local Variables
num1 = a;
num2 = b;
return a+b;
}
public static void main(String args[]){
scope_and_lifetime ob = new scope_and_lifetime();
result = ob.add(10, 20);
System.out.println("Sum = " + result);
}
}
Instance Variables | Class Variables | Local Variables | ||
정의 | 클래스 내부에서 선언 되었지만 메서드 및 블록 외부에서 선언된 변수 | 클래스 내부, 모든 블록 외부에서 선언되고 static으로 선언된 변수 | 인스턴스또는 클래스 변수가 아닌 모든 변수 | |
Scope | static 메서드를 제외하고 클래스 전체 | 클래스 내부 | 선언된 블록 내부 | |
LifeTime | 클래스 객체가 메모리에 남을때 까지 | 프로그램 종료할 때 까지 | 선언된 블록을 벗어날 때 까지 |
7. 타입 변환, 캐스팅 그리고 타입 프로모션
- 타입 변환에 앞서, 타입 크기 순서를 알아야하는데 나열하면 다음과 같다.
- byte(1) < short (2) < int (4) < long (8) < float (4) < double(8)
- float의 표현범위가 long보다 더 크기 때문에 큰 타입으로 되어있다.
타입 변환에는 두 가지의 타입 변환이 있다.
- 묵시적 변환 (자동 변환, 타입 프로모션)
- 큰 타입 = 작은 타입
- 위의 순서에서 왼쪽에서 오른쪽으로 타입의 변환을 하고자 할 때 이루어진다.
int a = 10;
long along = a;
double adouble = along;
- 명시적 변환 (강제 변환, 캐스팅)
- 주로 작은 타입 = 큰타입 에서 이루어진다.
- 값의 손실이 일어날 수 있으므로 주의가 필요하다.
int a = 10;
byte abyte = (byte)a;
8. 1차 및 2차 배열 선언하기
int[] aArray = new int[10];
int[] aArray = {1,2,3,4,5,6,7,8,9,10}
int[][] bArray = new int[2][3];
int[][] bArray = {{1,1,1},{2,2,2}};
9. 타입 추론, var
타입추론이란 - 코드 작성 당시 타입이 정해지지 않았지만, 컴파일러가 타입을 유추하는 것이다.
- Java 10 부터 var라는 타입이 추가 되었다.
- 지역 변수이면서 선언과 동시에 초기화가 필수적으로 요구된다.
// java 9 이하
String str = "message";
// java 10 이상
var message = "message";
❗️ Refer.
프리미티브 타입 종류와 값의 범위 그리고 기본 값
- https://gbsb.tistory.com/6
프리미티브 타입과 레퍼런스 타입
- https://jdm.kr/blog/213
리터럴
- https://mommoo.tistory.com/14
변수 선언 및 초기화하는 방법
변수의 스코프와 라이프타임
- https://www.learningjournal.guru/article/programming-in-java/scope-and-lifetime-of-a-variable/
타입 변환, 캐스팅 그리고 타입 프로모션
- https://kephilab.tistory.com/27
1차 및 2차 배열 선언하기
타입 추론, var
- https://velog.io/@bk_log/Java-%ED%83%80%EC%9E%85-%EC%B6%94%EB%A1%A0
'Live-Study' 카테고리의 다른 글
[6주차] 상속 (0) | 2021.02.19 |
---|---|
[5주차] 클래스 (0) | 2021.01.04 |
[4주차] 제어문 (0) | 2020.12.31 |
[3주차] 연산자 (0) | 2020.11.23 |
[1주차] JVM은 무엇이며 자바 코드는 어떻게 실행하는 것인가 (0) | 2020.11.20 |