본문 바로가기

개발공부/JAVA

자바스터디 2일차 (feat.백기선님)

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

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

자바의 데이터 타입은 크게 두가지로 나누어진다

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

 

2주차 과제: 자바 데이터 타입, 변수 그리고 배열 · Issue #2 · whiteship/live-study

목표 자바의 프리미티브 타입, 변수 그리고 배열을 사용하는 방법을 익힙니다. 학습할 것 프리미티브 타입 종류와 값의 범위 그리고 기본 값 프리미티브 타입과 레퍼런스 타입 리터럴 변수 선언

github.com


참조

책: 명품자바프로그래밍
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