[Java] 변수 & 데이터타입

Minuuu·2022년 12월 24일
1

Java

목록 보기
4/18

변수란?

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

변수의 초기화

  • 변수를 선언한 이후부터는 변수를 사용할 수 있으나 그 전엔 반드시 변수를 "초기화"해야한다
  • 메모리는 여러 프로그램이 공유하는 자원, 다른 프로그램에 의해 쓰레기값이 남아있을 수 있기 때문

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

변수 초기화 방법

int a;
int b;
int x = 0;
int y = 0;

변수의 명명 규칙

  1. 대소문자가 구분되며 길이에 제한이 없다.
  2. 예약어를 사용해서는 안된다(true x, True o)
  3. 숫자로 시작해서는 안된다(7up X)
  4. 특수문자는 '_'와 '$'만 허용

자바 프로그래머 권장 규칙

  1. 클래스 이름의 첫글자는 항상 대문자
  2. 여러 단어로 이루어진 이름은 단어의 첫글자를 대문자로(camelCase)
  3. 상수의 이름은 모두 대문자로 한다. 여러단어로 이루어진 경우 '_'로 구분(MAX_NUMBER)

변수의 타입

- 기본형(Primitive Type)

  • 기본형 변수는 실제 값을 저장
  • boolean데이터타입은 true, false 두개의 값만 가지기에 1bit아닌가? 할 수 있지만 cpu가 1바이트보다 작은 데이터를 처리할 수 없기 때문에 1byte의 크기를 가진다

- 참조형(Reference Type)

  • 참조형 변수는 어떤 값이 저장되어 있는 주소를 값으로 갖는다
  • 참조형 변수를 선언할 땐 변수의 타입으로 클래스의 이름을 사용하므로
    클래스의 이름이 참조변수의 타입이 된다
Date today = new Date(); // Date객체를 생성해서 그 주소를 today에 저장

상수와 리터럴

상수

변수와 마찬가지로 값을 저장할 수 있는 공간이지만 값을 저장하면 다른값으로 변경할 수 없다

final int MAX_SPEED = 10; // 상수 MAX_SPEED를 선언 & 초기화

리터럴

프로그래밍에서는 상수를 불변값으로 정의했기 때문에 이를 구분하기위한 이름이다
의미는 기존에 알고 있던 상수와 동일
int year = 2014; // year : 변수 , 2014 : 리터럴
final int MAX_VALUE = 100; // MAX_VALUE : 상수, 100 : 리터럴

  • 정수와 실수형에 여러 타입이 존재하므로 리터럴에 접미사를 붙여서 타입을 구분한다
  • 정수형의 경우 Long타입에 접미사 'l' or 'L'을 붙인다
  • 실수형의 경우 Float에 접미사 'f', Double에 접미사 'd'를 붙인다

타입의 불일치

  • 리터럴의 타입은 저장될 변수의 타입과 일치하는 것이 보통이지만,
    타입이 불일치해도 저장범위가 넓은 타입에 좁은 타입의 값을 저장하는 것은 허용된다
int i = 'A'; // OK. 문자'A'의 유니코드인 65가 변수 i에 저장된다.
long i = 123; // OK. int보다 long타입이 더 범위가 넓다
double d = 3.14f; // OK. float보다 double타입이 더 범위가 넓다

형변환

형변환이란, 변수 또는 상수의 타입을 다른 타입으로 변환하는 것

형변환 방법

(타입)피연산자
double d = 85.4;
int score = (int)d; // 85

자동형변환

  • 서로 다른 타입간의 대입이나 연산을 할 때 컴파일러가 생략된 형변환으로 자동 추가한다
float f = 1234; // 형변환의 생략 float f = (float)1234; 와 같음
char ch = (char)1000; // 명시적 형변환 에러 발생 x

자동형변환의 규칙

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


글 정리를 통해 배운 점

  • 알던 내용들이 많았지만 까먹을 수 있는 부분을 복습할 수 있는 시간이 되었다
  • 특히 데이터타입 크기에대한 복습과 리터럴 접미사를 명시 이유를 알게되었다
  • 그리고 연산을 할 때 자동형변환이 일어나는 일이 잦은데 이 때 정확히 어떤 규칙이 있는지 알게 되었다
  • 기초적이지만 매우 중요한 부분이기에 좋은 시간이였다 :)
profile
꾸준히 한걸음씩 나아가려고 하는 학부생입니다 😄

1개의 댓글

comment-user-thumbnail
2022년 12월 24일

정말 정성이 많이들어간 글이네요 배우고가요

답글 달기