Live-Study

[2주차] 자바 데이터 타입, 변수 그리고 배열

youn12 2020. 11. 20. 18:01
✏️ 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