본문 바로가기
Java/Java Basics

02. 자바(Java) 변수와 타입

by ITmin 2022. 1. 1.

제 1 절 변수

변수

  • 변수 : 하나의 값을 저장할 수 있는 메모리 공간
  • 변수의 선언
    • 타입 변수 이름 ; → int age; double value;
  • 변수 이름을 위한 명명 규칙(naming convention)작성 규칙 예  
    작성 규칙
    첫 번째 글자는 문자나 ‘$’,’_’여야 함 숫자로 시작x (팔수) 가능: price, $coin, _company 불가능: 1v, @speed, $#value
    영어 대소문자가 구분됨 (필수) firstname와 firstName은 다른변수
    첫문자는 영어 소문자로 시작하되, 다른 단어가 붙을 경우 첫자를 대문자로 한다 (관계) firstName, carBodyColor
    문자 수(길이)의 제한 없음  
    자바 예약어는 사용할 수 없음 (필수) 책참조
  • 변수값 저장
  • int score; //변수 선언
    score = 90; // 값저장
    
    int score = 90; // 초기값은 변수를 선언함과 동시에 줄 수 있음

 

  • int score; //변수 선언 score = 90; // 값저장 int score = 90; // 초기값은 변수를 선언함과 동시에 줄 수 있음
  • 변수값 읽기
    • 변수는 초기화가 되어야 읽을 수 있고, 초기화되지 않은 변수는 읽을 수 없다.
    • 변수 value 가 선언되었지만, 초기화가 되지 않았기 때문에 산술 연산식 value + 10 에서 사용할 수 없다. 이런 경우 컴파일 에러가 발생한다.
    // * 잘못된 코딩 예
    int value; // 변수 value 선언 (초기화 안됨)
    int result = value + 20; // 변수 value 값을 읽고 10을 더한 결과값을 변수 result에 저장
    
    // * 제대로된 코딩 예
    int value = 30;  // 변수 value가 30으로 초기화 됨
    int result = value + 20  // 변수 value 값 읽고 10 더한 결과값(40)을 변수 result에 저장
    

 

리터럴

  • 리터럴 : 소스 코드 내에서 직접 입력된 값
    • 정수 리터럴
      • 소수점이 없는 정수 리터럴은 10 진수로 간주  -> 0.75 -100
      • 0으로 시작되는 리터럴은 8진수로 간주 -> 02 -04
      • 0x 또는 0X로 시작하고 0~9 숫자나 A,B,C,D,E,F 또는 a,b,c,d,e,f로 구성된 리터럴은 16진수로 간주 -> 0x5 0xA 0xB3 0xAC08
      • 정수 리터럴을 저장할 수 있는 타입은 byte, char, short, int, long 과 같이 5개가 있다.
    • 실수 리터럴
      • 소수점이 있는 리터럴은 10진수 실수로 간주 -> 0.25 -3.14
      • 대문자 E 또는 소문자 e가 있는 리터럴은 10진수 지수와 가수로 간주
      • 5E7 → 5 x 10⁷, 0.12E-5 → 0.12 x 10^(-5)
      • 실수 리터럴을 저장할 수 있는 타입은 float, double
    • 문자 리터럴
      • 작은 따옴표(’)로 묶은 텍스트는 하나의 문자 리터럴로 간주 -> ‘A’ ‘한' ‘\\t’ ‘\\n’
      • 역슬래쉬(\)가 붙은 문자 리터럴은 이스케이프(escape) 문자라고도 함
      • 문자 리터럴을 저장할 수 있는 타입은 char 하나 뿐
    • 문자열 리터럴
      • 큰따옴표(”)로 묶은 텍스트는 문자열 리터럴로 간주. 큰따옴표에는 텍스트가 없어도 문자열 리터럴로 간주. 문자열 리터럴 내부에서 이스케이프 문자 사용 가능 -> “대힌민국”
      • 문자열 리터럴을 저장할 수 있는 타입 String 하나 뿐
    • 논리 리터럴
      • true와 false는 논리 리터럴로 간주
      • 논리 리터럴을 저장할 수 있는 타입은 boolean 하나 뿐
  • 종류 : 정수 리터럴, 실수 리터럴, 문자 리터럴, 문자열 리터럴, 논리 리터럴

 

변수의 사용 범위

  • 🔔 변수는 선언된 블록 내에서만 사용이 가능

 

제 2 절 데이터 타입

기본(primitive) 타입

  • 정수 타입
    • byte 타입 : 1byte 부호있는(signed) 정수값 저장 (-128~127)
    • char 타입 : 2byte 부호없는(unsigned) 정수값 저장
    • 한 문자를 유니코드로 저장 하나의 문자 리터럴은 작은 따옴표(’)로 감싸기
    • short 타입 : 2byte 부호있는(signed) 정수값 저장 (-32,768~32767)
    • C언어와 타입 호환을 위해 사용되며 비교적 자바에서는 잘 사용되지 않는 타입
    • 🔔 int 타입 : 4byte 부호있는(signed) 정수값 저장(-2^(31)~2^(31)-1)
    • long 타입 : 8byte 부호있는(signed) 정수값 저장 (-2^(63)~2^(63)-1)
  • 실수 타입
    • float 타입 : 부호(1bit)+지수(8bit)+가수(23bit) = 32bit = 4byte
    • double 타입 : 부호(1bit)+지수(11it)+가수(52bit) = 64bit = 8byte
    • 실수 리터럴의 기본 타입은 double이다.
      • float 리터럴은 끝은 F(대문자) 또는 f(소문자)를 붙인다.
    • 정수 리터럴에 10의 지수를 나타내는 E 또는 e가 포함되어 있을 경우
      • 실수 타입에 저장해야 한다.
  • 부동 소수점(floating-point) 방식으로 저장 동일한 메모리 크기를 가지는 int와 long 보다 더 큰 수를 저장할 수 있음
  • 논리 타입
    • boolean
      • 1byte 크기를 가지며 논리값 true 또는 false를 저장
      • 두가지 상태값을 저장할 필요성이 있을 경우 사용
      • 조건문, 제어문의 실행 흐름을 변경할 때 주로 이용

 

제 3 절 타입 변환

  • 타입 변환
    • 데이터 타입을 다른 타입으로 변환하는 것 (byte ↔ int, int ↔ double)
    • 종류 : 자동(묵시적) 타입 변환 : Promotion
    • 강제(명시적) 타입 변환 : Casting
  • 자동 타입 변환
    • 프로그램 실행 도중에 작은 타입은 큰 타입으로 자동 타입 변환됨
    • byte(1) < short(2) < int(4) < long(8) < float(4) < double(8)
  • 강제 타입 변환
    • 큰 타입을 작은 타입 단위로 쪼개고 끝 한부분만 작은 타입으로 강제적 변환
    • (캐스팅: Casting)
    • 강제 타입 변환전에 값이 보존될 것이지(손실이 되지 않는지) 검사
    • 강제 타입 변환시 정밀도 손실을 피한다.
  • 연산식에서 자동 타입 변환
    • 연산은 같은 타입의 피연산자(operand)간에만 수행 (서로 다른 타입의 피연산자는 같은 타입으로 변환됨)
    • 자바는 정수 연산일 경우 int 타입을 기본으로 한다. 피산연자를 4byte 단위로 저장하기 때문이다. 그보다 작은 타입(byte, char, short) 결과도 int 타입이다.
    • long 타입 피연산자 있으면 결과도 long 타입. 실수 리터럴이나 double타입있으면 결과도 double 타입으로 산출돤다.
    • float 타입은 두 피연산자 모두 float일 경우만 결과가 float 타입이다. float 타입 + 정수는 결과가 float 타입으로 산출된다.

댓글