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

inhalin·2021년 3월 8일
0

Whiteship Live Study

목록 보기
3/6
post-thumbnail

목표

자바의 프리미티브 타입, 변수 그리고 배열을 사용하는 방법 익히기

학습할 것

🟢 completed 🟡 in progress ⚪ not done

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

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

자바에는 8가지의 기본형이 있다.

|유형|자료형|값|기본값|메모리크리|
|---|---|---|---|---|
|논리형| boolean | true 또는 false | false | 1 bit |
|문자형| char | 유니코드 문자 | \u0000 (0) | 16 bit 유니코드 문자 |
|정수형| byte | -128~127 | 0 | 8 bit |
| | short | -32768~32767 | 0 | 16 bit |
| | int | -2^31~2^31-1 | 0 | 32 bit |
| | long | 2^63~2^63-1 | 0 | 32bit |
|실수형| float | -3.40E+38 ~ +3.40E+38 | 0.0 | 32 bit |
| | double | -1.79E+308 ~ +1.79E+308 | 0.0 | 32bit |


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

기본자료형(primitive data type)은 메모리 값을 직접 갖는다.

레퍼런스 타입은 객체에 대한 레퍼런스를 가지며 메모리 어딘가에 저장된 이런 객체들에 접근할 수 있는 수단을 제공한다. 메모리 위치는 개발자와 무관하다. 모든 레퍼런스 타입은 java.lang.Object 유형의 하위 클래스이다.


리터럴

기본자료형에 저장된 값을 리터럴이라고 한다. 리터럴은 고정값의 소스코드 표현이다. 즉, 리터럴은 계산하지 않고도 코드에 직접 표현된다.

boolean을 제외한 모든 프리미티브 타입은 문자, 집진수, 16진수, 8진수, 유니코드 리터럴 형식와 문자 이스케이프 시퀀스까지도 수용할 수 있다. 적절한 경우 리터럴 값은 자동으로 캐스트되거나 변환된다.


변수 선언 및 초기화하는 방법

변수 선언의 형식은 Data Type 변수명;과 같다.
변수를 초기화 하는 방법은 변수명=값;으로 한다.
Data Type 변수명=값;과 같이 변수를 선언하며 초기화 할 수도 있다.


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

자바에는 4가지 변수 유형이 있다. 이러한 변수는 프리미티브 타입, 클래스 타입, 또는 배열 타입 중 하나일 수 있다. 모든 변수는 그 변수가 접근할 수 있는 변수의 범위(scope)에 따라 구분된다.

  1. 인스턴스 변수 (instance variables)

정적 키워드 없이 선언된 클래스 내의 변수이다. state 변수라고도 불리며, 비-정적 필드는 그 값이 각 클래스에 대해 고유하기 때문에 인스턴스 변수로도 알려져 있다.

  1. 정적 변수 (static variales)

정적 수식어로 선언된 모든 필드로, 클래스 변수로도 알려져 있다. 클래스가 얼마나 인스턴스와 되었는지에 관계없이 이 변수의 복사본이 정확히 하나 존재한다는 뜻이다.

  1. 지역 변수 (local variables)

지역변수는 메소드 실행 중에 임식변수가 존재하기 때문에 내부 메소드에서 사용된다. 지역변수를 선언하는 구문은 필두를 선언하는 구문과 유사하다. 지역변수는 선언되는 메소드에만 표시되며 나머지 클래스에서는 접근할 수 없다.

  1. 메소드 인수 (method arguments)

인수는 메소드가 호출될 때 메소드에 전달되는 변수이다. 인수가 선언된 메소드 안에서만 접근이 가능하고 메소드가 선언된 시점에 값이 할당된다.


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

변수 또는 상수의 타입을 다른 타입으로 변환하는 것을 타입변환이라고 하며, 오브젝트는 슈퍼클래스 또는 하위클래스의 유형으로 변환될 수 있다. 컴파일러는 컴파일 시에, JVM은 런타임에 변환을 확인한다.

타입 변환 방법은 다음과 같다:

(타입)피연산자


1차 및 2차 배열 선언하기

배열이란 같은 타입의 여러 변수를 하나의 묶으롬으로 두르는 것을 말한다.

배열을 선언하는 방법은 원하는 타입의 변수를 선한하고 변수 또는 타입에 배열임을 의마하는 대괄호를 붙여준다.

타입[] 변수이름;

타입 변수이름[];

2차원 배열을 선언하는 방법은 1차원 배열과 같고, 대괄호를 하나 더 붙여준다.

타입[][] 변수이름;

타입 변수이름[][];

타입[] 변수이름[];

타입 추론, var

객체를 생성할 때 참조변수와 생성자에 대입된 타입이 일치해야 한다 두 타입이 상속관계이 있어도 마찬가지이다. 단, 두 generic 클래스의 타입이 상속관계에 있고 대입된 타입이 같은 것은 괜찮다. JDK 1.7부터는 추정이 가능한 경우 타입을 생략할 수 있게 되었다.


참고자료

  • 남궁성. Java의 정석 3판. 도우출판, 2016.
  • https://howtodoinjava.com/java/basics/data-types-in-java/
  • https://www.oreilly.com/library/view/java-8-pocket/9781491901083/
profile
일단 시작해봅니다.

0개의 댓글