멋사 Backend 4일차 🦁

신재원·2023년 4월 20일

🐱‍🐉 Java

📍 자바 메모리 구조

JVM에는 + 가비지 컬렉션 등.. 메모리 구조를 가지고있습니다.
자바 메모리 구조 = JVM 라고 생각하면 편할것입니다.

Static

  • JVM이 실행될때 생성되기 때문에, Class의 메소드 (힙 영역) 직접 호출이 불가능합니다. (인스턴스 생성 후 가능)
  • !! ✔ 무분별한 Static 사용은 지양합니다.

✔ 불가능한 케이스

public class PrintHello() {
    void print() {
        System.out.println("Hello");
    }
    
public static void main(String[] args) {
        print(); // 호출이 불가능
    }
 }

✔ 가능한 케이스

public class PrintHello() {
    void print() {
        System.out.println("Hello");
    }

    public static void main(String[] args) {
        PrintHello hello = new PrintHello(); // 인스턴스 생성
        hello.print(); // 호출 가능
    }
}

Heap

  • 생성된 객체(인스턴스)가 저장되는 공간입니다.
    (new 연산자를 사용할때 생성된다)
  • 참조형 타입 (Reference type)이 저장되는 공간입니다.

Stack

  • 메서드가 호출될 시 할당되는 영역입니다.
  • Heap공간에 객체 값을 올리고, 해당 객체의 참조값이 할당된다는 뜻입니다.
  • 기본형 타입 (Primitive type)이 저장되는 공간입니다.

📍 데이터 타입 (Type)

자바에서 데이터 타입은 크게 두가지가 있습니다.

  1. 기본형 타입 (Primitive type)
  • 자바에서는 총 8가지의 기본형 타입을 제공하지만, 많이 사용하는 기본형 타입을 소개하겠습니다. (필요에따라 찾아본다)
    • int, char, boolean, long, double 등이 있습니다.
  • 실제 값을 저장하는 공간임으로, Stack(스택) 메모리에 저장됩니다.
  • 기본값이 있기때문에, Null이 존재하지 않습니다. Null을 넣고 싶다면 래퍼 클래스를 사용합니다.
    • 래퍼 클래스 예시
      int -> Integer
      char -> Character
      등.....
  • int ▶ 4byte = 32bit
    (메X플스토리 메소가 21억이였던 이유)
  1. 참조형 타입 (Reference type)
  • 기본형 타입을 제외한 타입들이 모두 참조형 타입 입니다.
  • 기본형 타입과 다르게 Null 이 존재합니다.
  • 주소값을 저장하는 공간으로 Heap(힙) 메모리에 저장됩니다.
    ✔ 4가지의 참조형 타입을 소개하겠습니다.
  1. Enum : Enum (열거) 타입
  2. Interface : 인터페이스
  1. Array : Array (배열) 타입
    • int [] arr = new int [10];
    • String [] arr = new String [10];


4. Class : Class (클래스) 타입
- String inputString = "Shin"
- Student jaewon = new Student()
✔ Student 클래스를 new 연산자를 통해 인스턴스화 한것이다.
✔ Heap(힙) 영역에 저장된 클래스를 꺼내서 사용하는 것이다.
번외 : 몬스터볼에 있는 꼬북이(힙) ▶ new (몬스터볼에서 꺼내기) ▶
메서드 사용 (꼬북이 물대포 발사)

👌 출력 포맷팅(Format)

System.out.printf()를 사용하여 특정 형식의 문자열로 출력할수있습니다.

System.out.printf("%d-%02d-%02d", 2023, 4, 5); 
System.out.printf("%s", "신재원");
System.out.printf("%.2f", 1.8151231) // 소수점 2번째 자리에서 반올림
System.out.printf("%s", 1+1); // 예외가 발생하지않음
System.out.printf("%d", "신재원"); // 예외가 발생

▶ 출력 : 2023-04-05
▶ 출력 : 신재원
▶ 출력 : 2
▶ 출력 : 1.82
포맷(format) 형식은 필요에따라 찾아보면 될것같습니다.

대표적으로
%s (String 형식으로 출력), %d (정수 형식으로 출력), %n (줄바꿈),
%f (float 형식으로 출력) 가 있습니다.

🐱‍👓 변수 (Variable)

  • 변수란 값을 저장할수있는 메모리 공간을 말합니다.
    (쉽게말해 욕조 라고 생각하면 될것같습니다.)
  • 변수란 선언과 초기화를 꼭 해줘야됩니다.
    ✔ 변수를 선언만 할경우 오류가 발생합니다
    ✔ 변수 선언시 네이밍 규칙에 따라 의미있게 작성해야합니다.
    (2일차 명명법 참고)
public class Main {
    public static void main(String[] args) {
        int number; // 변수를 선언
        number = 30; // 변수를 초기화(저장)
        
        int userAge = 20; // 선언과 동시에 초기화
    }
}
  • 이렇게 저장된 값은 변경될수 있습니다.

0개의 댓글