자료형

InSeok·2022년 5월 9일
0

자바

목록 보기
3/9

참조 : Do it Java 완전정복
http://www.yes24.com/Product/Goods/103389317

변수와 자료형

  • 데이터를 저장하려면 메모리에 값을 저장할 공간을 생성하고 이름을 부여해야한다.
  • 변수 - 메모리 공간에 부여하는 이름
  • 자료형(data type) - 메모리 공간은 목적에 따라 크기와 특징이 다름
    • 자료형에 따라 저장할 수 잇는 값의 종류와 특징이 결정된다.

자료형 선언하기

  • 변수를 사용하기 전에 반드시 자료형을 선언해야한다.(스크립트언어는 자료형 선언 않고도 변수사용가능)
  • 자료형 선언 방법 : 자료형 변수명; ex) int a;
  • 자료형은 반드시 한 번만 선언해야 한다.
    • 변수의 자료형 선언시, 메모리에는 선언된 자료형의 데이터만 저장할 수 있는 공간이 만들어지는데, 메모리에서 한 번 만들어진 공간은 사라질 수는 있어도 데이터를 저장하는 기능은 변경할수 없기 때문이다.

변수 사용하기

변수 선언과 함께 값 대입하기

  • 자료형 변수명 = 값; ex) int a = 3;

변수 선언과 값 대입 분리하기

  • 자료형 변수명; ex) int a; 변수명 = 값; ex) a = 3;

이름 짓기

  • 변수는 대입된 값 변경 가능, 상수(항상 똑같은 값)는 변경 불가

이름 지을때 필수 사항

  1. 변수,상수 메서드 이름 지을 때 반드시 지켜야 하는 공통 사항
    1. 특수 문자는 밑줄(_)과 달러($)표기만 사용가능
    2. 첫 번째 글자로 숫자 사용 불가
    3. 예약어 사용 불가 ex) int , public, static

변수명 지을 때 권장 사항

  1. 영문 소문자로 시작
  2. 영문 단어를 2개이상 결합시, 새로운 단어 첫 글자 대문자로 (낙타표기법)
    1. ex) myWork, maxValue, bestPosition

상수명 지을 때 권장 사항

  • 모두 대문자로 표기
  • 단어 여러개 결합시, 밑줄()을 사용 ex) final int MY_DATA;

메서드 권장사항 → 변수명과 동일

변수의 생존기간

  • 변수는 개발자가 직접 생성하지만, 메모리에서 변수를 삭제하는 작업은 JVM이 알아서 한다.
  • 생성된 변수는 자신이 선언된 열린 중괄호{의 쌍인 닫힌 중괄호}를 만나면 메모리에서 삭제됨
  • 변수의 생성시점은 값을대입한 시점이 아니라 선언한 시점이다.

자료형의 종류

  • 자바 메모리 구조( 3가지 영역)
    클래스 영역
    정적 영역스택 영역(변수)힙 영역(객체)
    상수 영역
    메서드 영역

기본 자료형과 참조자료형 차이

자료형의 이름 규칙

  • 기본자료형 8개의 이름은 모두 소문자로 시작
  • 참조자료형은 모두 대문자로 시작

실제 데이터값의 저장 위치

  • 기본 자료형은 스택 메모리에 생성된 공간에 실제 변숫값을 저장하는 반면,
  • 참조자료형은 실제 데이터값은 힙 메모리에 저장하고, 스택메모리의 변수 공간에는 실제 변숫값이 저장된 힙 메모리의 위칫값을 저장한다.
  • 자바는 힙 메모리에 직접 접근 불가, 반드시 위칫값을 저장하고 있는 참조변수가 필요

기본 자료형의 메모리 크기와 저장할 수 있는 값의 범위

자료형자료의 크기
부울대수boolean1byte
정수byte1byte
정수short2byte
정수int4byte
정수long8byte
실수float4byte
실수double8byte
문자(정수)char2byte
  • 대입 연산자(=)를 중심으로 양쪽의 자료형이 똑같아야 한다.

정수 자료형 -byte, short, int, long

  • 리터럴(literal) : 코드에 직접 작성한 값
  • 크기가 작은 자료형을 큰자료형에 대입하면 컴파일러 가 자동 타입변환(type casting)을 수행
  • byte와 short 범위 내 정숫값 - byte/short 자료형으로 인식
    • 범위 외 정숫값 int 자료형으로 인식
  • 크기 상관없이 int,long에 정수 리터럴 입력시 int 자료형으로 인식.
    • 정수 리털링뒤에 L(또는 l)을 붙여 표기하면 long 자료형으로 인식

실수 자료형 - float, double

  • float의 정밀도는 소주점 7자리, double의 정밀도는 소수점 15자리정도
  • 실수 리터럴을 double 자료형으로 인식, 단 F(or f)를 실수 리터럴 뒤에 붙이면 float 자료형으로 인식

문자 자료형

  • char는 문자를 저장하는 자료형, 작은따옴표(’’)안에 표기.
  • 메모리는 2진수 값만 저장할 수 있기 때문에 원래 문자를 기록할수 없다.
    • 모든 문자를 특정 정숫값으로 바꿔저장. (유니코드)
  • char에 문자에 해당하는 정숫값과 더불어 유니코드 값을 직접 입력가능

기본 자료형 간의 타입 변환

  • boolean을 제외한 기본 자료형 7개는 자료형을 서로 변환 가능 → 타입변환
  • 자료형 간의 타입 변환 방법
    • 자료형 A 변수명 = (자료형 A) 값 ex) int value1 = (int)5.3; → 5로변경
    • long 변수명 = 값 + L;
    • long 변수명 = 값 + l;
    • float 변수명 = 값 + F;
    • float 변수명 = 값 + f;

자동타입 변환과 수동 타입 변환

  • 업캐스팅 : 크기(범위)가 작은 자료형을 큰 자료형에 대입
    • 컴파일러가 자동으로 타입 변환 실행(자동 타입 변환)
  • 다운캐스팅 : 큰 자료형을 작은 자료형에 대입하는 행위
    • 데이토 손실 발생할수 있어, 개발자가 직접 명시적으로 타입 변환 수행해야함
    • 자료형 크기(저장하는 값의 범위) : byte < short/char< int < long < float < double
    • 모든 정수 리터럴 값은 int자료형으로 인식됨, but byte short의 저장 범위내 값은 자동변환
    • 정수형 자료형을 작은 범위의 자료형으로 캐스팅할때는 범위의 반대쪽 끝에서부터 다시 시작하는 서큘러 구조 보임. → byte 자료형으로 다운캐스팅시 -128로 변환 ex) byte a = (byte)128; // -128 btye b =(byte) 129 // -127

기본 자료형 간의 연산

  • boolean을 제외한 나머지 기본 자료형은 서로 연산 가능
  • 모든 연산은 같은 자료형끼리만 가능하며 연산 결과 역시 같은 자료형이 나온다.
  • 단, int보다 작은 자료형간의 연산 결과는 int가 나온다.
profile
백엔드 개발자

0개의 댓글