본문 바로가기

전공 테트리스/자바 프로그래밍

[자바] 2. 자료형

 

 

자동 타입 변환

byte + byte = int (자동 타입 변환)

int + int = int

정수 연산 정수 = 정수

자동 타입인지 강제 타입 변환인지 궁금하면 (타입)을 지워봤을 때도 같은 값이 나오면 자동 타입 변환이고 다른 결과가 나온다면 강제 타입 변환이다.

증감연산자 - 전위 연산자 / 후위 연산자

 

 

1. 변수와 자료형

  • 변수(Variable)
    • 하나의 값을 저장하기 위한 메모리 공간
    • 변수명 = 할당 받은 메모리 주소 대신 부르는 이름
    • 정수, 실수 등 다양한 타입의 값을 저장 가능
    • 사용 전 선언 필수
  • 자료형(타입)
    • 저장할 수 있는 값의 형태를 지정
    • 자바 프로그램 내의 모든 변수/상수는 자료형 선언 후 사용 가능
  • 변수 선언 및 값 저장
    • 변수 초기화 = 변수에 최초로 값이 저장될 때
    • 초기값 = 변수 초기화 될 때의 값
  • 변수/상수/ 메서드 이름 선정 (필수사항)
    • 영어 대소문자만 사용(한글도 가능은 하나, 오류 가능성)
    • 특수문자 : **‘_’, ‘$’**만 사용 가능
    • 숫자 사용 가능 → 첫 글자는 x
    • 자바 키워드 사용 불가
  • 변수/ 메서드 이름 선정 (권장사항)
    • 변수 이름 소문자로 시작
    • 두개 이상의 단어가 결합된 경우 새 단어는 대문자로 시작
    • 변수 이름을 정할 때는 의미있는 이름으로
  • 예약어(키워드)
    • 자바 언어에서 의미를 가지고 사용되는 단어
    • 변수 이름으로 사용할 경우 컴파일 에러 발생
  • 변수 사용 범위
    • 로컬변수
      • 변수가 선언된 중괄호 안에서만 사용 가능 {}
  • [참고] 모니터로 출력하기
    • println();
      • 괄호 안 출력 + 행 바꾸기
      • system.out.println(변수);
        • (시스템이 갖고 있는 출력장치로 괄호 안 내용 출력 후 행 바꾸기)
    • print();
      • 괄호 안 출력
    • printf(“형식문자열”, 변수1..);
      • 문자열 형식대로 내용 출력
  • [실습] 변수
  • [확인문제]

 

 

2. 기본 자료형

  • 자바 자료형
  • 기본 자료형
    • 정수 타입 데이터 형식
      • 숫자 뒤에 l 또는 L 붙여 Long 타입 표시 (생략 가능)
    • 실수 타입 데이터 형식
      • double 타입을 기본 실수 타입으로 취급
      • 숫자 뒤에 f 또는 F 붙여 float 타입 표시 (강제 타입 변환)
    • 문자 타입
      • 작은 따옴표 사용
      • 유니코드 값 그대로 입력 가능 → (’\u + 16진수 코드’)
      • 정수 데이터 또한 직접 할당 가능
    • 논리 타입
      • True, False 값 저장
  • [실습] 정수 타입
    • byte는 127까지만 저장 가능. 128부터는 int 값
  • [실습] 실수 타입
  • [실습] 문자 타입
  • [실습] 논리 타입

 

 

3. 기본 자료형 간의 타입 변환

  • 타입 변환
    • 데이터 타입을 다른 데이터 타입으로 변환하는 것
      • 숫자를 저장하는 7개(bool 제외) 기본 자료형 사이에 타입 변환 가능
      • 자동타입변환 및 수동타입변환
      • 자료형의 크기(값의 범위) 순서
        • byte < short/char < int < long < float < double
  • 자동 타입 변환 (promotion)
    • 자동 타입 변환
      • 값의 허용 범위가 작은 타입 → 큰 타입으로 저장될 경우
      • 컴파일러가 자동으로 타입변환 수행 (즉, 타입변환 생략 가능)
    • 정수 연산에서의 자동 타입 변환
      • byte, char, short 타입 변수는 int 타입으로 자동 변환
    • 실수 연산에서의 타입 변환
      • 정수 + 연산 + 정수 = 정수

  • // 방법 1
    int x = 1; 
    int y = 2;
    double result = (double) x / y;
    System.out.println(result);
    
    // 방법 2
    int x = 1; 
    int y = 2;
    double result = x / (double) y;
    System.out.println(result);
    
    // 방법 3
    int x = 1; 
    int y = 2;
    double result = (double) x / (double) y;
    System.out.println(result);
    
    // 0.5
    
  • int x = 1; int y = 2; double result = x / y; System.out.println(result); // 0.0
  • 강제 타입 변환 (casting)
    • 큰 허용 범위 타입 —> 작은 허용 범위 타입으로 강제로 저장
    • 캐스팅 연산자 괄호 () 사용
      • 괄호 안에 변환 타입을 명시
    • 값 손실 발생 가능
      • 예 ) int → byte 의 경우, int는 4바이트 즉 32비트인데 byte는 1byte로 8비트이므로 하위 8비트만 저장되고 나머지는 손실된다.
  • [실습] 강제 타입 변환
  • [실습] 연산식에서의 타입 변환
    • byte + 연산 + byte = int
    • short, char 모두 마찬가지. (오버플로우 방지하기 위해)
  • [확인문제]

 

 

4. 연산자

  • 연산자의 종류
    • 피연산자 수에 따라 단항, 이항, 삼항 연산자로 구분
      • 단항 연산자 : 부호, 증감 연산자
      • 이항 연산자 : 산술, 비교, 논리 연산자
      • 삼항 연산자 : 조건 연산자 a > b ? a+1 : b + 1
  • 자바 연산자의 종류
  • 증감 연산자
    • 전위 증감 연산자
    • 후위 증감 연산자
  • 산술 연산자
  • 대입 연산자
  • 비교 연산자
  • 논리 연산
    • 쇼트서킷 (Short circuit)
      • 연산 수행 시 결과가 이미 확정된 경우, 나머지 연산 과정을 수행하지 않는 것
      • 예) (5 > 3) || (3 < 2) 앞 논리 연산에서 true가 나와, 뒷 연산은 하지 x
  • 삼항 연산자
  • [실습] 단항 연산자 - 증감 연산자
  • 연산의 방향과 우선순위
    • 복합적으로 구성된 연산식의 연산
      • 우선순위에 따라 수행
        • 단항 → 이항 → 삼항
        • 산술 → 비교 → 논리 → 대입
      • 우선순위가 같을 경우, 왼—> 오 방향으로 수행
        • 예외 : 대입 연산자
  • 자바 연산자 우선순위