Java_자료형

song·2023년 10월 6일

Java

목록 보기
4/36

자료형

  • 컴퓨터가 이해할 수 있는 값의 형태를 '자료형'이라고 한다.
  • 자바에서 자료형은 두 종류로 구분됨
  • ★인스턴스를 생성하게 되면 heap 영역에 값이 저장되고, heap 영역 안에는 String Pool이라는 영역이 또 있다.
    • 기본형의 경우 String pool에 값이 저장되고, 만약 같은 값을 여러 변수들이 저장하면 같은 주소값을 공유할 뿐 새로 값을 생성하지 않는다.
      • 그래서 ==로 비교가 가능. (==은 주소값을 비교하는 것임. )
    • (new를 이용해서 만든)참조형의 경우 그냥 heap 영역에 저장된다.
      String 클래스 equals() 메서드는 모든 객체의 부모 클래스인 Object(최상위클래스)에 정의되어 있는 메서드다.
      Object의 equals()를 Sring 클래스가 오버라이드해서 주소값이 아닌 인자로 전달된 String의 문자열을 비교한다.
      • 그래서 ==로 비교가 안됨. 같은 값을 여러 변수들이 저장해도 다른 주소로 저장이 되기 때문. 그래서 equals()를 써야함.
  • ★자료 비교
    • equals() : 값 비교
    • == : 주소값 비교

기본형

  • primitive type
  • 자료형 확인
    • 기본형은 타입 확인이 안되고 참조형만 확인 가능하다.
    • javascript의 typeof처럼 '해당 값의 변수형은 뭐다' 이런건 없다.
    • 해당 값의 변수형이 A인지 확인하는 것만 있다.
      ex) 데이터 instanceof 자료형
      System.out.println(a instanceof String); -> true / false의 값으로 출력됨.

논리형

  • boolean (8bit = 1byte)
    기본값은 false이다.

문자형

  • char : ★문자 하나를 의미함
    16bit = 2bytes
    기본값은 '/u0000;
    값쓸 때는 따옴표 쓰기.

정수형

  • 정수형의 기본은 int
  • byte (8bit = 1byte), -128 ~ 127, 기본값 : 0
  • short (16bit = 2byte), -32,768 ~ 32,767, 기본값 : 0
  • int(32bit = 4byte), 약 +-21억, 기본값 : 0
  • long (64bit = 8byte), 범위가 무척 넓다. , 기본값 : 0L

실수형

  • 실수형의 기본은 double
  • float(32bit = 4byte), 기본값 : 0.0f
  • ★double(64bit = 9byge) : , 기본값 : 0.0

참조형

  • reference type
  • 주소값을 참조하는 자료.
  • ★기본 자료형을 제외한 모든 자료형을 참조형이라고 한다.
  • 클래스의 이름으로 변수타입을 쓸 수도 있다.
    클래스이름 변수명 = new 생성자(); 생성자 : 클래스이름
    ex) Tmp t = new Tmp();
  • String(문자열) 이 대표적인 예.
    ex) String str = new String();
    값쓸 때는 쌍따옴표 쓰기.
  • ★자료형 확인
    자료형 확인 시 Wrapper 클래스 타입으로 된 변수들을 Class클래스의 getClass()와 getName()을 이용해서 해야 함.
    String s = "ABC";
    Integer i = 1;
    Character c = 'a';
    Double d = 100d;
    System.out.println(s.getClass().getName());
    System.out.println(i.getClass().getName());
    System.out.println(c.getClass().getName());
    System.out.println(d.getClass().getName());
    ▲Wrapper 클래스
    int i = 1;
    char c = 'A';
    System.out.println(Integer.valueOf(c).getClass().getName());
    System.out.println(Character.valueOf(c).getClass().getName());

기타

  • ★변수를 생성하고 자료를 담을 때 같은 자료형이어도 자료의 크기 (int, long)에 따라 에러가 날 수 있다.
  • 자료의 형이 큰것을 자료의 형이 작은 변수에다가 넣을 수 없다.
    ex) int로 만든 변수로는 long을 담을 수 없다.
    ex) long으로 만든 변수에는 int를 담을 수 있다.
    이유 : long이 int보다 크니까.
profile
계속 나아가기

0개의 댓글