본문 바로가기

전체 글146

JVM이 사용하는 메모리 영역 JVM이 사용하는 메모리 영역 JVM의 메모리 모델(Runtime Data Area) → Thread Method Area 메서드의 바이트 코드(기계어 코드)가 할당되는 공간 static-zone과 none-static-zone으로 나누어 진다. static 멤버들은 static-zone에 할당된다. Heap Area Generation 객체가 생성되는 메모리 공간(new 연산자) GC(Garbage Collector)에 의해서 메모리가 수집된다. Garbage Collection(가비지 컬렉션)이란? 💡 프로그램을 개발 하다 보면 유효하지 않은 메모리인 가바지(Garbage)가 발생하게 된다. Java나 Kotlin을 이용해 개발을 하다 보면 개발자가 메모리를 직접 해제해주는 일이 없다. 그 이유는 J.. 2024. 1. 28.
Static static 메인(시작) 클래스는 왜 객체 생성(new) 없이 실행이 될까? 메인 클래스가 동작 되는 방식을 이해해야한다. JVM이 실행할 클래스를 찾는다 static 키워드가 붙어있는 멤버들을 정해진 메모리(static-zone) 위치에 한 번 자동으로 로딩 한다. (Method Area에 static-zone과 none-static-zone으로 구성되어있다.) static 멤버들은 클래스를 사용하는 시점에서 딱 한번 메모리에 로딩된다는 점이 중요하다. 여기서는 main() 메서드가 static이기 때문에 메모리에 자동으로 로딩한다. JVM이 static-zone 에서 main() 메서드를 호출한다. 호출된 메서드를 Call Stack Frame Area(Stack Area)에 push(기계어 코드를 .. 2024. 1. 28.
배열과 클래스의 관계 배열과 클래스의 관계 동일한 구조와 이질적인 구조 배열은 동일한 데이터(한가지 타입)로 이루어져 있고 클래스는 이질적인 데이터(다른 타입)로 구성되어 있다. public class StudentTest { public static void main(String[] args) { // Q. 정수 6개를 저장할 배열을 생성하세요. int[] arr = new int[6]; arr[0]=10; arr[1]=30; arr[2]=67; arr[3]=98; arr[4]=55; arr[5]=32; for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]); } // Q. 잘 설계된 학생(Student) 객체를 설계하고 데이터를 저장 한 후 출력하세요. Stu.. 2024. 1. 28.
정보 은닉 정보 은닉 정보 은닉 : 다른 객체에게 자신의 정보를 숨기고 자신의 동작, 기능, 연산을 통해 접근을 하는 것으로 클래스 외부에서 특정 정보에 접근을 막는다는 의미 setter, getter 메서드 this는 자기 자신이 가지고 있는 정보를 가리킬 때 사용 private String name; private int age; private String phone; public PersonVO(){ } public String getName() { // getter 메서드로 값을 얻어오고 get + 멤버 변수의 첫 영문을 대문자로 만들기 return name; } public void setName(String name) { // this.name 반환 this.name = name; // setter 메서.. 2024. 1. 28.
패키지(Pakage) 패키지 패키지란 무엇인가? 서로 기능이 비슷한 클래스들끼리 모아서 관리를 쉽게 하기 위해서 사용(폴더 개념) 패키지 외부에서 클래스의 접근을 할 수 없도록 하기 위해서 사용(보안 측면) 자바에서 제공해주는 API도 패키지의 형태로 배포된다. 클래스를 접근하는 이름, 방법 클래스를 접근하려면 만들어진 위치와 접근제어를 알아야한다. import를 사용하여 접근하는 방법 ex) Scanner scan = new Scanner(System.in); → import java.util.*;를 선언하여 Scanner 사용 2024. 1. 28.
모델(Model) Model 모델 DTO, VO 클래스는 왜 필요할까? 데이터를 하나로 묶어야 될 경우(바구니가 필요, 데이터를 하나로 수집하는 역할) // 자동차 데이터를 이동하기 위한 바구니가 필요하다.(DTO, VO) // 클래스로 CarDTO, CarVO 모델을 설계? CarDTO car = new CarDTO(); // 객체 생성 car.carSn=carSn; // car에 정보 주입 car.carName=carName; car.carPrice=carPrice; car.carOwner=carOwner; car.carYear=carYear; car.carType=carType; carInfoPrint(car); // CallByRefference : 번지를 메서드로 보내기 } // Q. [매개변수로 자동차의 정보를.. 2024. 1. 28.
클래스(Class) 클래스 클래스 : 객체를 설계(모델링)하는 도구 Class란? 새로운 자료형을 만들고 설계하고 모델링하는 도구 새로운 자료형을 만드는 도구 객체지향 측면에서의 클래스 : 현실세계에 있는 객체를 객체지향 프로그램에서 사용하기 위해 객체의 상태정보(멤버변수)와 행위정보(멤버메서드)를 뽑아서 설계하는 도구 객체 생성 과정의 이해 모델링 된 객체를 사용하기 위해서는 메모리에 객체를 생성해야 한다.(인스턴스 생성) Person p(인스턴수 변수) = new(생성 연산자) Person();(생성자 메서드) 같은 디렉토리에서는 Person 앞에 패키지 명을 명시 안해도 되지만 다른 디렉토리의 클래스를 사용하기 위해서는 디렉토리 경로를 명시해줘야 한다. (fc.java.part3.Person p) public stat.. 2024. 1. 28.
메서드(Method) 메서드 메서드 : 객체가 가지고 있는 동작 기능 💡 1. 반복적인 동일작업을 메서드를 만들어 사용 2. 객체지향 프로그램은 객체가 가지고 있는 메서드를 통해서 데이터를 서로 주고 받으며 상호작용을 한다. 3. 메서드는 정의를 하고 호출을 하여 사용 4. 메서드는 클래스 내에서 독립적으로 만들어야 한다.(하나의 단위작업을 처리) 메서드의 정의와 호출 접근제한자 리턴타입 메소드명(인수1, 인수2){ 수행코드; return 반환값; } 아무 결과도 반환하지 않으면 자료형에 void 씀 메서드를 종료하고 메서드의 결과를 반환하는 return → 실 인수와 가 인수의 개수와 타입이 일치해야 호출이 된다. → static이 붙은 메서드에서 호출을 한 메서드는 static이어야 한다. 메서드는 변수다 메서드의 결과 .. 2024. 1. 28.