JAVA/Do it! 자바 프로그래밍 입문

[Do it 자바 프로그래밍 입문] 02 변수와 자료형

yun.data 2023. 3. 22. 17:09

 

1. 컴퓨터는 데이터를 어떻게 표현할까?

1-1. 컴퓨터에서 수를 표현하는 방법

  • 비트(bit):  또는 1로 표현할 수 있는 최소 단위
  • 바이트(byte): 8비트 = 1바이트

 

1-2. 숫자 진수

  • 10진수: 0부터 9까지
  • 2진수: 0과 1, 앞에 0B
  • 8진수: 0부터 7까지, 앞에 0
  • 16진수: 0부터 9 / A부터 F까지, 앞에 0X

 

1-3. 부호 있는 수를 표현하는 방법

  • 부호 비트(Most Significant Bit; MSB)
    • 맨 앞에 붙임
    • 0이면 양수, 1이면 음수
    • ex) 8비트로 숫자 5표현: 00000101
  • 양수 음수 변환법 - 2의 보수
    • 10진수의 경우 더해서 10(십)이 되는 수
    • 2진수의 경우 더해서 2, 10(일영)이 되는 수

 

 


2. 변수란?

  • 변수: 변하는 수

 

2-1. 변수 선언하고 값 대입하기

  • 필요한 것: 자료형, 변수 이름
  • [1분 복습] 나이를 뜻하는 age로 변수 이름을 바꾸고 나이 대입
public class E1 {
	public static void main(String[] args) {
		int age;
		age = 23;
		System.out.println(age);
	}
}

 

 

2-2. 변수 초기화하기

  • 초기화: 변수에 처음 값을 대입하는 것
  • 선언과 동시에 초기화, 선언 이후에 초기화 둘 다 가능
  • [1분 복습] int형 변수 year에 값 2018을 대입
int year = 2018;

 

 

2-3. 변수 이름 정하기

  • 제약 사항
    • 변수 이름은 영문자(대/소문자)나 숫자를 사용할 수 있음
    • 특수 문자 중에서는 $과 _만 사용할 수 있음
    • 변수 이름은 숫자로 시작할 수 없음
    • 자바에서 이미 사용 중인 예약어는 사용할 수 없음
  • 예약어(reserved word): 프로그래밍 언어에서 특별한 의미로 미리 약속되어 있는 단어

 

 


3. 변수가 저장되는 공간의 특성, 자료형

3-1. 변수와 메모리

  • 변수 선언: 변수 이름으로 어떤 위치에 있는 메모리를 얼마만큼의 크기로 사용하겠다는 뜻

 

3-2. 기본 자료형의 종류

  • 정수형
    • byte: 1바이트
    • short: 2바이트
    • int: 4바이트
    • long: 8바이트
  • 문자형
    • char: 2바이트
  • 실수형
    • float: 4바이트
    • double: 8바이트
  • 논리형
    • boolean: 1바이트

 

 

3-3. 정수 자료형

  • 수의 유효 범위

 

  • byte형(1바이트 = 8비트)
    • 바이트 단위의 정보를 저장하거나 통신할 때 사용
  • short형(2바이트)
  • int형(4바이트)
    • 정수를 표현할 때 가장 많이 사용하는 자료형
    • 컴퓨터 연산을 할 때 4바이트 단위의 처리가 가장 효율적이기 때문
  • long형
    • 자바에서 정수를 표현하는 가장 큰 단위의 자료형
    • 자바는 모든 정수 값을 기본 int형으로 처리하기 때문에 범위 내부에 있는 값을 사용하지 않는 경우 끝에 식별자 L 또누 l 사용

 

 

3-4. 문자 자료형

  • 문자 세트: 문자의 코드값을 모아둔 것
  • 문자 인코딩: 문자를 정해진 코드 값으로 변환하는 것
  • 문다 디코딩: 코드 값을 다시 문자로 변환하는 것

 

  • 유니코드(unicode): 각 언어의 표준 인코딩을 정의해 놓은 것
  • 아스키(ASCII)코드: 영문자, 숫자, 특수 문자 등을 나타내는 문자 세트
    • 문자를 변수에 대입하면 문자 그대로 저장되는 것이 아니라 그 문자에 해당되는 정수 값(아스키 코드 값)이 저장됨

 

  • 문자와 문자열
    • 문자 사용시 작은따옴표 사용
    • 문자열사용시 큰따옴표 사용
    • 문자열 끝에는 항상 널 문자('\0')가 있음
    • 자바에서 문자열을 다룰 때는 String 클래스를 사용함
    • 'A'와 "A"
      • 'A': 정수 65로 정해져 있는 문자
      • "A": "A\0"로 저장되어 있는 문자열
  • 문자형 변수에 음수는 저장 불가능

 

 

3-5. 실수 자료형

  • 부동 소수점 방식: 가수 부분과 지수 부분을 나누어 실수를 나타내는 방식
    • 지수로 표현되는 값이 0을 나타낼 수 없기 때문에 오차가 발생할 수 있음
    • 오차를 감수하고라도 더 넓은 범위의 실수를 표현하기 위해 사용함

 

  • float형 - 32비트(4바이트): 부호 1비트, 지수부 8비트, 가수부 23비트
  • double형 - 64비트(8바이트): 부호 1비트, 지수부 11비트, 가수부 52비트
  • 자바에서 실수는 double형을 기본으로 사용하기 때문에 float형 사용시에는 숫자 끝에 식별자 F 또는 f 사용

 

 

3-6. 논리 자료형

  • 어떤 변수의 참, 거짓을 나타내는 데 사용함
  • booelan - 1바이트: true, false

 

 

3-7. 자료형 없이 변수 선언하기

  • 자바 10부터 생긴 문법
  • 지역 변수 자료형 추론(local varriable type inference)
    • var를 사용하면 컴파일러가 변수에 대입되는 자료를 보고 추측함
  • 유의사항
    • 한번 선언한 자료형 변수를 다른 자료형으로 사용할 수 없음
    • 지역 변수만 사용 가능

 

 


4. 상수와 리터럴

4-1. 상수 선언

  • 상수: 변하지 않는 값
  • final 예약어 사용
  • 대입값 변경 시도하면 오류 발생

 

 

4-2. 상수를 사용하면 편리한 이유

  • 반복적으로 사용하고 변하지 않아야 하는 값에 보통 사용
  • 숫자 수정시 상수값만 수정하면 됨

 

 

4-3. 리터럴

  • 리터럴(literal)
    • 프로그램에서 사용하는 모든 숫자, 문자, 논리값
    • 변수나 상수 값으로 대입할 수 있음
    • 프로그램이 시작할 때 시스템에 같이 로딩되어 특정 메모리 공간인 상수 풀(constant pool)에 놓임
    • 대입: 숫자 값이 어딘가 메모리에 쓰여 있고 변수 메모리에 복사 되는 것
  • 모든 정수 리터럴은 int로 처리, long형 사용시 식별자 L 또는 l 필요
  • 모든 실수 리터럴은 double로 처리, float형 사용시 F 또는 f 필요

 

 


5. 형 변환

5-1. 형 변환이란?

  • 형 변환(type conversion): 연산 수행시 하나의 자료형으로 통일하는 것
  • 묵시적 형 변환(자동 형 변환)
    • 바이트 크기가 작은 자료형에서 큰 자료형으로의 변환은 자동으로 이루어짐
    • 덜 정밀한 자료형에서 더 정밀한 자료형으로 형 변환은 자동으로 이루어짐
    • 반대의 경우(묵시적 형 변환) 자료 손실 발생할 수 있음

 

 

5-2. 묵시적 형 변환

  • 덜 정밀한 자료형에서 더 정밀한 자료형으로 대입하는 경우
  • 연산 중에 자동 변환되는 경우

 

 

5-3. 명시적 형 변환

  • 명시적 형 변환(강제 형 변환)
  • 비트가 큰 자료형에서 작은 자료형으로 대입하는 경우