[Java] 자바 변수와 자료형

peace w·2023년 10월 1일
0

Java

목록 보기
1/6

📌 변수(variable)

  • 데이터를 저장할 수 있는 메모리 공간을 말한다.
  • 변수의 이름을 정한다는 것은 이 메모리 공간에 이름을 붙여주는 것이다.
  • 값이 변할 수 있다.
  • 하나의 값만 저장한다.

변수의 이름을 짓는 법

  1. 이름은 숫자로 시작할 수 없다.
  2. 이름은 공백을 포함할 수 없다.
  3. 예약어 Reserved Words는 사용할 수 없다.

변수의 초기화

  • 변수에 처음으로 값을 저장하는 것
int a = 0; // 변수 a를 선언 후, 0으로 초기화
int b = 5; // 변수 b를 선언 후, 5로 초기화
  • 변수는 클래스 변수, 인스턴스 변수, 지역변수 가 있다. 지역 변수는 자동으로 초기화 되지 않으므로 읽기 전에 꼭 초기화 해야한다.

📌 자료형

자바에서 데이터 타입은 크게 두 가지로 나눌 수 있다.

- Primitive type(원시 타입)

  • byte, short, int, long, double, float, char, boolean 크게 8가지가 있다.
  • stack(스택)에 변수가 가지는 실제 값을 저장한다.
  • 기본 값이 있기 때문에 null 값을 가질 수 없다. (null 을 넣고 싶다면 Wrapper 클래스를 활용해야 한다)

- Reference Type(참조 타입)

  • Primitive type을 제외한 나머지 타입들이 전부 Reference Type이다.

  • 메모리 공간에 객체가 있는 주소를 저장한다. (주소를 참조해서 값을 가져오기 때문에 참조 타입)

  • 실제 값은 heap(힙)에 저장하고, 그 주소값을 갖는 변수를 stack(스택)에 저장한다.

  • 빈 값을 의미하는 null 이 존재한다. (아무런 값을 참조하지 않는다는 게 빈 값을 가지고 있다는 뜻이 아니기 때문에 NullPointerException 의 원인이 될 수 있다.)

    ※ NullPointerException : 실제 값이 아닌 null을 가지고 있는 객체/변수를 호출할 때 발생하는 예외


Primitive type 자료형들을 표로 나타내면 다음과 같다.

자료형키워드기본값크기표현 가능 범위유효 자릿수
정수형byte01바이트-128 ~ 127
정수형short02바이트-215 ~ (215 - 1)
정수형int04바이트-231 ~ (231 - 1)
정수형long0L8바이트-263 ~ (263 - 1)
실수형float0.0F4바이트(3.4 X 10-38) ~ (3.4 X 1038)소수 부분 6자리까지
실수형double0.08바이트(1.7 X 10-308) ~ (1.7 X 10308)소수 부분 15자리까지
문자형char'\u0000'2바이트유니코드 문자
논리형booleanfalse1바이트true, false

1. 숫자형

  • 정수 자료형
    byte, short, int, long

    • int, long을 자주 쓴다.
    • long 에 값을 대입할 때는 숫자 값이 int 자료형의 최대값을 넘길 경우에 값 뒤에 L을 써 주어야한다. 접미사 L을 적지 않으면 컴파일 에러가 발생한다. 접미사는 소문자로 적어도 된다.
      예) int 최대값 231 - 1 = 2147483647
    	long l = 987654321987654321L;
  • 실수 자료형
    double, float

    • 소수점 어디까지 표현할지에 따라서 맞게 써야한다. (정밀도가 다르다)
    • 일반적으로 double을 쓴다.
    • float에도 long처럼 접미사 F를 쓴다.
    	float F = 3.1415926535821F;

2. 문자형

  • char
    문자 한 개만 표현 가능하다.

    • 아래 처럼 문자를 넣을 때에는 ''으로 감싸주어야한다. ""를 사용하면 에러가 난다. (큰따옴표는 문자열에 사용한다)
    • 문자, 아스키코드, 유니코드로 값을 넣을 수 있다.
    • 아스키코드는 총 128개의 문자를, 유니코드는 65,536 개의 문자를 표현할 수 있다.
    	char c1 = 'a'; // 문자로 표현
    	char c2 = 97; // 아스키 코드로 표현
    	char c3 = '/u0061' // 유니코드로 표현

3. 논리형

  • boolean
    참과 거짓을 나타낸다.

Reference type

java.lang.Object 를 상속받으면 reference type 이 된다.

종류는 아래와 같다.
Array(배열 타입), Enumeration(열거 타입), Class(클래스 타입), Interface(인터페이스 타입)

주소값만 저장하는 공간이라 크기는 4바이트로 동일하다.

키워드기본값크기예시유효 자릿수
Array(배열 타입)null4바이트int[] arr = new int[5];
Enumeration(열거 타입)null4바이트
Class(클래스 타입)null4바이트String name = new String("java");
Interface(인터페이스 타입)null4바이트

참고

자바의 정석-변수란? 변수의 선언과 저장
[Java] 13.Java의 자료형 (Primitive type & Reference type)
자바의 데이터 타입(Primitive type, Reference type)

profile
더 성장하자.

0개의 댓글