스터디할래 / 자바 스터디 과제 #2 자바 데이터 타입, 변수 그리고 배열

Jake Seo·2021년 1월 12일
0

스터디할래자바

목록 보기
2/3

스터디할래 / 자바 스터디 과제 #2 자바 데이터 타입, 변수 그리고 배열

Prologue

스터디 할래 프로젝트

과제 키워드

  • 프리미티브 타입 종류와 값의 범위 그리고 기본 값
  • 프리미티브 타입과 레퍼런스 타입
  • 리터럴
  • 변수 선언 및 초기화하는 방법
  • 변수의 스코프와 라이프타임
  • 타입 변환, 캐스팅 그리고 타입 프로모션
  • 1차 및 2차 배열 선언하기
  • 타입 추론, var

프리미티브 타입 종류와 값의 범위 그리고 기본 값

참거짓, 문자, 숫자, 소수점의 형태가 있음

boolean

true 혹은 false 1byte (가장 작은 크기) (2^8)

char

유니코드 문자 1글자의 크기인 2byte (2^16)

byte

1byte (2^8)

short

2byte (2^16)

int

4byte (2^32) = 2^10 * 2^10 * 2^10 * 2 = 1024 * 1024 * 1024 * 2 = 약 2 * 10^9 = 21억

참고로 int의 양수의 최대 값에서 +1을 하면 음수의 최솟값이 나온다.
2147483647 + 1 = -2147483648

long

8byte 2^64 약 900경

float

4byte 실수를 부동소수점(floating-point)으로 저장 1.4*(10^-45) ~ 3.4*(10^38) (- 취해 음수도 가능)

double

8byte 4.9*(10^-324) ~ 1.8*(10^308)

프리미티브 타입과 레퍼런스 타입

프리미티브 타입의 특징

프리미티브 타입은 실제 값을 저장함

레퍼런스 타입의 특징

값이 저장되어 있는 메모리 주소(4byte)를 저장함

리터럴

상수의 또 다른 이름, 변수나 상수에서 값 그 자체를 의미하는 것.
실무에서 많이 쓰는 '하드코딩' 이라는 말은 상황에 따라 바뀌는 변수로 만든 것이 아니라 리터럴로 표현했다는 것을 의미한다.

int a = 100 // 100이 리터럴
final int A = 200 // 200이 리터럴

변수 선언 및 초기화 방법

int a; // 변수 선언
int b = 0; // 선언 및 초기화

변수의 스코프와 라이프타임

일반적으로 블록 스코프{}를 따른다.
단, static으로 선언되면 프로그램이 끝날 때까지 메모리에 상주한다.

메모리영역

추가로 변수들은 메모리 영역 중 Stack 영역에 저장된다.
단, Object의 경우는 내용은 Heap에 저장되며, 주소 값을 가진 참조는 Stack 영역에 저장된다.

참조 : https://yaboong.github.io/java/2018/05/26/java-memory-management/

타입 변환과 캐스팅

타입 캐스팅은 두가지 종류가 있다.

  1. 자신의 표현 범위를 모두 포함한 데이터 타입으로 변환 (타입 프로모션)
  2. 자신의 표현 범위를 모두 포함하지 못한 데이터 타입으로 변환 (타입 캐스팅)

여기서 표현 범위란, 정수 실수 등을 포함하는 개념이기 때문에 단순히 바이트 크기가 아니다.

1차 및 2차 배열 선언하기

  • 1차원 배열
    • Stack 영역에 참조를 두고, Heap 영역에 배열 데이터를 보관 (오브젝트와 같다.)
  • 2차원 배열
    • Stack 영역에 참조를 두고, Stack 영역이 참조하는 Heap 영역에도 다른 Heap을 가리키는 주소값을 참조하는 값이 들어있음. 그리고 실제 값은 또 Heap의 다른 위치에 저장됨.

타입 추론, var

실질적으로 var 갖다쓰라고 나왔다기보다는 Map이나 List 쓸 때 문법 깔끔하게 쓰라고 나온듯 함.

profile
풀스택 웹개발자로 일하고 있는 Jake Seo입니다. 주로 Jake Seo라는 닉네임을 많이 씁니다. 프론트엔드: Javascript, React 백엔드: Spring Framework에 관심이 있습니다.

0개의 댓글