Java/스터디

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

필리힐리 2021. 8. 4. 21:38

자바 데이터 타입

 

- 기본형 (8개)

 stack 영역에 실제값을 저장

문자형 (char) : 'A', '가' ...

논리형 (boolean) : true, false

정수형 (byte, short, int, long) : 1, 10, 200, 3000, 60000 ...

실수형 (float, double) : 1.2, 30.21 ...

 

- 참조형 (기본형을 제외한 나머지)

 heap 영역에 메모리 주소를 저장

배열, 인터페이스 , 클래스(String 포함) 등등

 

- 타입 크기 (byte)

byte(1) ==  boolean(2) > short(2) == char(2) < int(4) == float(4) < long(8) == double(8)

 

리터럴

순수한 그 값 자체를 의미

int number = 2;

2가 리터럴이다.

 

변수 선언 및 초기화

- 변수 선언

데이터 공간 생성을 의미한다.

데이터 타입 변수명; (int number;)

 

- 변수 초기화

생성되어 있는 공간에 리터럴(값)을 넣는 행위를 의미한다.

변수명 = 리터럴; (number = 2;)

 

- 선언과 초기화를 동시에도 가능

데이터 타입 변수명 = 리터럴; (int number = 2;)

 

- 변수의 종류

클래스 영역에 선언되는 class 변수, instance 변수

공통적인 건 class 변수 (static), 개별적인 건 instance 변수로 선언

 

메소드 영역에 선언되는 local 변수

 

 

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

- 변수의 스코프

변수에 접근할 수 있는 유효 범위

{ 중괄호로 시작해서 }; 중괄호로 끝난다.

 

- 라이프 타임

class 변수는 클래스가 메모리에 올라갈 때 함께 가기 때문에 모든 영역에서 공유가 가능하고 프로그램이 종료될 때까지 유지된다.

instance 변수는 객체가 생성이 되면 메모리 stack 영역에 올라가고 기능을 다하고 gc에 의해 정리가 될 때 함께 종료된다. 

local 변수는 메소드 실행이 될 때 생성이 되고 메소드가 종료가 되면 함께 종료된다.

 

타입 변환, 캐스팅 그리고 타입 프로모션 

- 타입 변환

자바에서 타입 변환은 두가지로 나눌 수 있다

 

1. 묵시적 형변환 (Type promotion)

데이터 크기가 작은 걸 더 큰 데이터 타입에 대입을 하면 JAVA가 자동으로 큰 데이터 타입으로 형변환을 해준다.

 

2. 명시적 형변환 (Type casting)

개발자가 강제로 형변환을 시켜주는 것으로 데이터 손실이 있을 수 있다.

double d = 3.14;

int number = (int) d;

number == 3

 

1차 및 2차 배열 선언하기

- 배열이란

같은 타입의 여러 변수를 하나로 묶어 사용하는 것

 

# 선언

데이터타입[] 배열이름;

int[] numbers;

# 초기화

배열이름 = new 데이터타입[배열크기];

numbers = new int[5]; new를 통해 데이터 공간 생성 후 numbers에 그 주소 값 저장

# 선언과 동시에 초기화

int[] numbers = new int[5];

 

- 2차원 배열이란

1차원 배열들의 배열(묶음)

 

# 선언

int[][] numbers;

# 초기화

배열이름 = new int[][] {{123}, {456}};

배열이름 = {{123}, {456}};

#선언과 동시에 초기화

int[][] numbers = new int[][] {{123}, {456}};

int[][] numbers = {{123}, {456}};

 

타입 추론, var

타입을 일일히 적어주지 않더라도 컴파일러가 추론해서 알아낼 수 있는 걸 말한다.

이름인 var도 그렇고 자바스크립트에서 타입이 정해져 있지 않은 것과 비슷한 느낌을 받았다.

타입을 var로 적어주면 되는데 초기화 값이 있는 지역변수만 가능하다.

 

* 밑 블로그에서 참고해 공부했음

https://velog.io/@dion/%EB%B0%B1%EA%B8%B0%EC%84%A0%EB%8B%98-%EC%98%A8%EB%9D%BC%EC%9D%B8-%EC%8A%A4%ED%84%B0%EB%94%94-2%EC%A3%BC%EC%B0%A8-%EC%9E%90%EB%B0%94-%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%83%80%EC%9E%85-%EB%B3%80%EC%88%98-%EA%B7%B8%EB%A6%AC%EA%B3%A0-%EB%B0%B0%EC%97%B4

 

백기선님 온라인 스터디 2주차 - 자바 데이터 타입, 변수 그리고 배열

2주차!

velog.io

 

https://catch-me-java.tistory.com/19

 

[Java-11]타입추론 var

Java var type-inference 자바에서도 타입추론을 지원한다는걸 오늘 처음 알았다. 그도 그럴만도 한게, 평소 jdk8만 사용을 하던지라, 타입추론이 가능한지 몰랐다. 결론은 자바 10 부터 type - inference(타

catch-me-java.tistory.com

 

'Java > 스터디' 카테고리의 다른 글

2주차 피드백 참고  (0) 2021.08.15
바이트코드  (0) 2021.08.15
1주차 피드백  (0) 2021.08.04
JDK vs JRE (1주차)  (0) 2021.08.01
JIT 컴파일 (1주차)  (0) 2021.08.01