관리 메뉴

커리까지

자료형(data type) 본문

자바

자료형(data type)

목표는 커리 2021. 6. 5. 11:20
728x90
SMALL

정수

  • 기본 자료형
    • 크기가 정해져있고 new로 사용하지 않음
    • new로 선언한 자료형은 크기가 정해지지 않음
  • n-1로 표현가능
  • 바이트는 음악, 동영상, 실행 파일을 처리할 때
  • 쇼트는 자바에서는 많이 쓰지 않음
    • c/c++ 언어와 호환할 때
  • int
    • 4바이트 단위의 자료형
    • 모든 숫자는 int로 저장됨
    • num변수를 선언하면 메모리는 num이라는 공간을 만들고 이제 부터 num으로 선언된거는 여기로 들어가라
    • 10을 선언하면 num안에 10이 들어감
    • 10이 다른 곳에서 이미 잡혀있는데 그게 num으로 들어감
    • 그래서 100을 쓰던 100000을 쓰던 4바이트로 잡힌다.
  • long
    • 8바이트의 자료형
    • int가 표현할 것의 범위를 넘어가기 때문에 long로 선언
    • 숫자 자체가 항상 4byte로 잡힘
      • 123456789123456789로 하면 오류
    • 123456789123456789L or 123456789123456789l
      • 이런 식으로 long로 잡하라 하고 알려줌
      • 대문자로 쓰는게 더 좋음
byte bnum = -128;
  • byte는 이렇게 앞에 자료형을 명시
  • +128을 하면 오류 발생
    • 표현 할 수 있는 값을 넘어섬
int num = 12346678;
long lnum = 123456789L;
  • long는 저런 식으로 위에도 L을 표시해줘야 함
long lnum2 = 123456;
  • 작은 수가 큰 공간에 들어가는 건 상관없음

실수

  • 1.2나 3.14 등으로 표현 된다.
  • 부동소수점 방식으로 표현한다.
  • 1.0 x 10-1 = 가수 x 지수부
  • 정규화
    • .2를 표현한다면 0.4 x 2-1
    • 를 1.m x 2-n로 표현하도록 바꾼다.
double dnum = 3.14;
float fnum = 3.14;
  • float는 오류가 발생함
  • 3.14는 어디가에 저장이 되어있음.
  • 모든 실수는 기본적으로 double에 저장되어 있음(8바이트)
  • float는 4바이트인데 3.14로 넣으려니 너무 크다.
float fnum = 3.14f;
  • 이렇게 f를 넣어줌
  • 식별자를 써준다.
  • 지수부분이 아무리 작은 n승을 표현한다해도 0을 표현할 수는 없음
    • 그래서 약간의 오류가 발생함

문자

  • 어떤 특정한 숫자로 표현하자 라고 약속함
  • 그 약속 한 것들을 문자 세트라고 함
  • 아스키는 8bit로 되어있음
  • 각 나라마다 맞는 문자세트가 나옴
    • 그러다보니 호환이 안 되는 문제 발생
    • 그래서 나온게 우니코드
    • utf-8, utf-16
  • 자바에서는 utf-16 인코딩 사용
    • 모든 문자를 2바이트로 표시
'A' "A"
문자(2byte) 문자열
char ch1 =  'A';
System.out.println(ch1);
System.out.println((int)ch1);
>
A
65
  • char라고 명시했기에 문자열이 나오고 int로 형변환을 해줘서 해당 문자에 맞는 숫자가 출력됨
char ch2 = 66;
System.out.println(ch2);
System.out.println((char) ch2);
>
B
B
  • char이라고 명시했기에 숫자를 입력하면 숫자에 해당되는 문자를 출력함
int ch3 = 67;
System.out.println(ch3);
System.out.println((char)ch3);
>
67
C
  • 처음에는 int라고 명시했기에 숫자가 출력되지만 문자로 형변환을 실행해서 아스키에 해당되는 문자를 출력함
char ch = -66
char ch = 25412
  • 음수나 너무 큰값을 표현 불가
char ch = '한';
char ch5 = '\uD55C';
  • 한을 유니코드로 표현하면 저렇게 됨

논리형

  • 참, 거짓을 말하니 1바이트를 사용

자료형 없이 선언(자바 10 이상부터)

  • 지역변수에서는 자료형 선언 없이 사용 가능

  • 어떤 자료형인지 파악 가능한 경우, 추론 가능한 경우

  • 지역변수

    • 블럭안에서 사용하는 변수
    • 함수의 매개변수로 쓰이는 것
    • 만약에 문자로 컴파일하고 뒤에서 숫자로 다시 덮어쓰려면 안 됨
var str = "test";
str = "hello";
  • 이렇게는 가능
var str = "test";
str = 3;
  • 이거는 자료형이 다르기 때문에 자바에서는 불가능
728x90
LIST

'자바' 카테고리의 다른 글

자바의 연산자들-1  (0) 2021.06.11
상수와 리터럴, 변수의 형 변환  (0) 2021.06.09
변수에 대해서  (0) 2021.06.05
컴퓨터에서 자료 표현하기  (0) 2021.06.04
public, static, void, private 용어  (0) 2021.05.29
Comments