자바의 타입들!

cutiepazzipozzi·2023년 3월 8일
3

지식스택

목록 보기
5/35
post-thumbnail

그냥 내가 아무렇지 않게 구현을 하면서 썼던 것들인데 뭔가 기초적인 개념을 숙지하지 않으면 안될 거 같아 적어보는 타입들!

자바의 데이터 타입에는 크게 기본형, 참조형으로 나뉘는데 아마 int와 integer의 차이를 설명하면서 한번 언급했던 것 같다.

이 데이터 타입이 왜 필요해?

변수의 용도를 선언해줘야 하니까!

기본 타입 (Primitive)

우리가 아는 8가지의 친구들
(int, long, byte, char, short, boolean, float, double) 만이 기본 타입에 해당된다.

기본 타입은 주어진 타입에 따라 메모리 크기가 자동적으로 할당되기 때문에 바로 사용할 수 있다!

참조 타입 (Reference)

참조 타입은 기본 타입과는 달리, 메모리 주소를 계산할 수 있는 참조값이 주어지기 때문에 new 명령어를 이용해 직접 변수에 대한 메모리를 생성해주어야 한다.
(실제 메모리 주소를 계산하는 것은 JVM이 담당한다고 한다)

  • 배열

    같은 데이터 타입의 변수들을 연속된 메모리에 저장해 그룹으로 묶은 타입

    - 위의 설명처럼 int[] num = new int[n] 이렇게 new 명령어를 사용해 선언해준다.

  • 클래스

    변수와 메서드를 하나의 그룹으로 묶어준 타입

    - 사용자 정의 타입
    (직접 변수의 자료형과 메서드를 만들기 때문)

    - (구체적) 클래스 멤버 => 1.필드 2.메서드 3.멤버 클래스 4.멤버 인터페이스

    - 메서드 시그니처 = 메서드 이름 / 매개변수 리스트 로 구성

    public void funcA(int a, int b) {}
    public void funcA(int a, int b, int c) {}

    위의 예시처럼 같은 메서드명으로 오버로딩된 함수를 구별 하기 위해 사용!

  • 인터페이스

    클래스 타입에서 공통으로 사용되는 상수와 메서드를 따로 분리해서 추상화

    - 이때 메서드는 내용이 X 선언만 O
    = 그래서 추후 구현(implement)을 해줘야 함
    - 인터페이스도 참조 타입이기 때문에 new를 통해 변수 메모리를 생성해 주어야 하나 추상 메서드만 갖기 때문에 class를 통한 실제 구현으로 메모리를 생성해 주어야 함
    (두 특징이 거의 똑같은 말,,)

 interface Student {
 	int getAge();
 }
 
 class Student1 implements Student {
 	int age;
    String name;
    
    Student(int age, String name) {
    	this.age = age;
        this.name = name;
    }
    
    pubilc void getStudent() {
    	return age;
    }
 }
 
 
 //실제 사용시
 Student amy;
 amy = new Student1(8, "amy");
  • 열거

    우리가 흔히 아는 enum이라 불리는 그 친구!
    정해진 어떤 상수 값(in heap)만 갖는 타입!

    따라서 상수 값을 참조만 하면 되므로 new 연산자 사용X !!

enum Rainbow {
	Red, Yellow, Green, Blue, Navy, Violet
}

참조

https://dudri63.github.io/2019/02/13/java3/

profile
노션에서 자라는 중 (●'◡'●)

1개의 댓글

comment-user-thumbnail
2023년 3월 8일

잘 읽고 갑니다😍😀

답글 달기