떵호
seongho'Dev
떵호
전체 방문자
오늘
어제
  • 분류 전체보기 (116)
    • 회고 (2)
    • Algorithm (74)
      • 프로그래머스 (65)
      • 백준(BOJ) (2)
      • Note (7)
    • 기술독서 (25)
      • Clean Code (11)
      • 자바의 정석 (8)
      • 대규모 시스템 설계 기초 (6)
    • Computer Science (1)
      • Operating System (1)
    • Typescript (1)
    • JAVA (0)
    • Spring (6)
      • JPA (6)
    • AWS (2)
    • Git (2)
    • Etc (2)

블로그 메뉴

  • github

티스토리

태그

  • 코딩테스트 준비
  • 알고리즘
  • 완전탐색
  • 구현
  • 프로그래머스
  • 자바의 정석
  • 클린코드
  • 카카오 코테
  • Clean Code
  • JPA
hELLO · Designed By 정상우.
떵호

seongho'Dev

기술독서/자바의 정석

[자바의 정석] 2장 변수

2022. 2. 8. 22:26
728x90

변수

변수란?

프로그래밍에서의 변수는 값을 저장할 수 있는 메모리상의 공간을 의미한다.

"변수란, 단 하나의 값을 저장할 수 있는 메모리 공간"

변수의 선언과 초기화

int age; // age 라는 이름의 변수 선언
  • 변수타입은 변수에 저장될 값이 어떤 '타입'인지를 저장하는 것
  • 변수이름은 메모리 공간에 이름을 붙여주는 것

📌 변수의 초기화
메모리는 여러 프로그램이 공유하는 자원이므로 전에 다른 프로그램에 의해 저장된 '알 수 없는 값(쓰레기 값)'이 남아있을 수 있기 때문에 반드시 초기화를 해주어야 한다.

"변수의 초기화란, 변수를 사용하기 전에 처음으로 값을 저장하는 것"

예시

class Variable {
  publci static void main(String[] args) {
    int year = 0;
    int age = 14;

    System.out.println(year); // 0
    System.out.println(age); // 14

    year = age + 2000;
    age = age + 1;

    System.out.println(year); // 2014
    System.out.println(age); // 15
  }
}

변수의 명명규칙

프로그래밍에서 사용하느 모든 이름을 식별자(identifier)라고 하며, 식별자는 같은 영역 내에서 서로 구분될 수 있어야 한다.

식별자를 만드는 규칙

  • 대소문자가 구분되며 길이에 제한이 없다.
    • True와 true는 다름
  • 예약어를 사용해서는 안 된다.
    • true는 예약어라서 사용할 수 없지만 True는 가능
  • 숫자로 시작해서는 안 된다.
  • 특수문자는 '_', '$'만 허용

자바 프로그래머들에게 권장되는 규칙

  • 클래스 이름의 첫 글자는 항상 대문자로 한다.
  • 여러 단어로 이루어진 이름은 단어의 첫 글자를 대문자로 한다.
  • 상수의 이름은 모두 대문자로 한다. 여러 단어는 '_'로 구분한다.

변수의 타입

자료형은 크게 기본형과 참조형 두 가지로 나눌 수 있다.
기본형 변수는 실제 값을 저장하고 참조형 변수는 어떤 값이 저장되어 있는 메모리 주소를 값으로 갖는다.

기본형(primitive type)

기본형에는 크게 논리형, 문자형, 정수형, 실수형 4가지로 구분된다.

기본형의 크기와 범위
자료형|저장 가능한 값의 범위|크기 | 접미사
--|--|--|--
boolan|false, true|8bit / 1byte | none
char|'\u0000' ~ '\ufff' (0 ~ 216-1)|16bit / 2byte | none
byte|-128 ~ 127 (-27 ~ 27-1)|8bit / 1byte | none
short|-32,768 ~ 32,767(-215 ~ 215-1)|16bit / 2byte | none
int|-2,147,483,648 ~ 2,147,483,647(-231 ~ 231-1)|32bit / 4byte | none
long|-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 (-263 ~ 263-1)|64bit / 8byte | L
flot|1.4E-45 ~ 3.4E38(1.4 * 10-45 ~ 3.4 * 1038)|32bit / 4byte | f, F
double|4.9E-324 ~ 1.8E308(4.9 * 10-324 ~ 1.8 * 10308)|64bit / 8byte | d, D

int 와 double은 접미사 생략 가능하다.

상수와 리터럴(constant & literal)

상수

  • 변수와 마찬가지로 값을 저장할 수 있는 공간이지만, 한 번 저장하면 값을 변경할 수 없다.
  • 변수 타입 앞에 final을 붙인다.
  • 선언과 동시에 초기화를 해주어야 한다.

리터럴

  • 변수에 넣는 값을 의미한다.
    int year = 2000; // 변수
    final MAX_VALUE = 500; // 상수
    // 2000, 500은 리터럴

형변환

형변환(castring)이란?

변수 또는 상수의 타입을 다른 타입으로 변환하는 것을 형변환이라고 한다.

형변환 방법

(타입) 피연산자

여기에 사용되는 괄호는 캐스트 연산자 또는 형변환 연산자라고 한다.

double d = 85.4;
int score = (int)d; // 85가 저장됨

정수형과 실수형 간의 형변환

정수형을 실수형으로 변환

  • 실수의 정밀도 차이에 의한 오차가 발생할 수 있다.

실수형을 정수형으로 변환

  • 실수형의 소수점이하 값을 버린다.

자동 형변환

서로 다은 타입간의 대입이나 연산을 할 때, 캐스팅하는 것이 원칙이지만 편의상 캐스팅을 생략할 수 있다.

float f = 1234; // f = (floag) 1234와 같음
int i = 3;
double d = 1.0 + i; // double d = 1.0 + (double) i; 에서 캐스팅이 생략됨

표현범위가 좁은 타입에서 넓은 타입으로 캐스팅하는 경우에는 값 손실이 없으므로 표현 범위가 더 넓은 쪽으로 형변환된다.

📍 요약

  1. boolean을 제외한 나머지 7개의 기본형은 서로 형변환이 가능하다.
  2. 기본형과 참조형은 서로 형변환할 수 없다.
  3. 서로 다른 타입의 변수간의 연산은 형변환을 하는 것이 원칙이지만, 값의 범위가 작은 타입에서 큰 타입으로의 형변환은 생략할 수 없다.
728x90
저작자표시

'기술독서 > 자바의 정석' 카테고리의 다른 글

[자바의 정석] 6장 - 객체지향 프로그래밍 Ⅰ  (0) 2022.02.14
[자바의 정석] 5장 배열  (0) 2022.02.09
[자바의 정석] 4장 조건문과 반복문  (0) 2022.02.09
[자바의 정석] 3장 연산자 (Operator)  (0) 2022.02.09
[자바의 정석] 1장 자바를 시작하기 전에  (0) 2022.02.08
    '기술독서/자바의 정석' 카테고리의 다른 글
    • [자바의 정석] 5장 배열
    • [자바의 정석] 4장 조건문과 반복문
    • [자바의 정석] 3장 연산자 (Operator)
    • [자바의 정석] 1장 자바를 시작하기 전에
    떵호
    떵호

    티스토리툴바