공부방 34

상속 - 백기선 자바라이브스터디

문제제기 예를들어 상속이라는 개념을 모르는 상태에서 강아지와 고양이 클래스를 만들어 보겠습니다. 강아지 고양이 공통적인게 눈에 띕니다. 이름, 종류 의 필드도 같고 소리를 낸다는 것과 먹는다는 것은 공통적인 행위 입니다. 그렇다면 이 부분은 이제 상속의 개념을 적용할 수가 있습니다 또한 name과 종류는 Animal의 부모 클래스가 가지고 있으니 생성자를 통해 이름과 종류를 받아서 저장하고 bark()는 Dog와 Cat마다 소리내는 방식이 다르니 @Override 시키면 될 거 같습니다. 아래는 이러한 요구사항을 가지고 만들어낸 결과 입니다. Animal.java Dog.java Cat.java 보다싶이 Animal이라는 클래스의 공통 필드와 메서드를 적용받기위해 extends라는 키워드를 사용하였고 s..

공부방/JAVA 2023.08.19

클래스와 이진트리 구현 - 백기선 자바라이브스터디

클래스와 객체 클래스는 인스턴스 생성을 위한 청사진 또는 템플릿 역할을 합니다. 인스턴스가 보유하게 될 구조와 동작을 정의합니다. 인스턴스가 생성되면 해당 클래스에 정의된 데이터와 동작으로 초기화 됩니다. 클래스와 인스턴스 간의 이러한 관계는 코드 재사용성을 가능하게 하고 캡슐화, 상속, 다형성의 원칙을 촉진합니다. 클래스 정의하는 방법 클래스의 구조 멤버변수(member variable) : 멤버변수는 해당 클래스 객체의 속성이며, 두가지 형식이 있습니다 클래스 변수: 클래스의 모든 인스턴스간에 공유되는 static 변수 입니다. 그렇기 때문에 heap영역이 아닌 data의 static영역에 할당되고 gc의 관리를 받지 않습니다. 인스턴스 변수: 각 인스턴스가 고유한 값 집합을 유지할 수 있도록 합니다..

공부방/JAVA 2023.08.12

제어문 - 백기선 자바라이브스터디

조건문 if문 간단한 의사 결정 문입니다. 명령문 또는 명령문 블록의 실행 여부를 결정하는 데 사용됩니다. 주어진 조건이 참이면 명령문 블록이 실행되고 그렇지 않으면 명령문 블록을 건너 뜁니다. 조건을 실행하는 동안 조건이 참이면 해당 명령문이 실행되고 나머지 코드는 건너 뜁니다. 어떤 조건도 참이 아니면 마지막 else 문이 실행됩니다. if(condition) { // If condition is true then this block of statements will be executed } else if(condition) { // If condition is true then this block of statements will be executed } else { // If none of con..

공부방/JAVA 2023.08.06

LinkedList,Stack,Queue 구현 및 테스트 - 백기선 자바라이브스터디

LinkedList란 링크드리스트는 불연속적으로 존재하는 데이터를 서로 연결(link)한 형태로 구성되어 있습니다 위의 그림에서 알 수 있듯이 링크드 리스트의 각 요소(node)들은 자신과 연결된 다음 요소에 대한 참조(주소값)와 데이터로 구성되어 있습니다 class Node { Node next; // 다음 요소의 주소를 저장 Object obj; // 데이터를 저장 } 삭제 링크드 리스트의 삭제는 배열보다 간단합니다. 삭제하고자 하는 요소의 이전 요소가 삭제하고자 하는 요소의 다음 요소를 참조하도록 변경하기만 하면 됩니다. 단지 하나의 참조만 변경하면 삭제가 이루어지는 것입니다. 배열은 삭제를 하면 다른 요소들이 앞으로 땡겨져야 하기 때문에 복사가 일어나지만 : O(n) 링크드리스트는 그런 과정이 필..

공부방/JAVA 2023.08.06

JUnit5을 이용한 테스트코드 작성 방법 - 2편

JUnit 5: 테스트 반복하기 @RepeatedTest 반복 테스트를 위한 테스트 템플릿 입니다 다음과 같이 인자로 value는 10을 전달하면 총 10번 테스트를 반복하며 테스트할때 정확히 볼 수 있게 name 인자값도 정할 수 있습니다. 또한 RepetitionInfo라는 클래스를 활용해서 현재 반복 횟수와 총 반복 횟수 등의 정보를 제공합니다 실행 결과 @ParameterizedTest 와 @ValueSource 테스트에 여러 매개변수를 대입해가며 반복 실행할 수 있습니다 @ParameterizedTest 를 이용한 파라미터화된 테스트는 하나의 테스트를 각기 다른 인수로 여러 번 실행할 수 있게 합니다 파라미터화 된 테스트를 정의하려면 반드시 하나 이상의 source를 선언해야 합니다 출력 결과 ..

공부방/JAVA 2023.08.05

JUnit5을 이용한 테스트코드 작성 방법 - 1편

JUnit5 소개 자바 개발자가 가장 많이 사용하는 테스팅 프레임워크 자바 8버전 이상을 필요로 합니다 JUnit 5의 구조 JUnit5 = JUnit Platform + Jupiter + Vintage Platform JVM에서 테스트 프레임워크를 실행하기 위한 런처를 제공 플렛폼 상에서 테스트 프레임워크를 개발하고 실행하기 위한 TestEngine API 제공 커맨드 라인에서 플랫폼을 실행하기 위한 Console Launcher 제공 JUnit4 기반 Runner 제공 JUnit Jupiter TestEngine API 구현체로 JUnit5를 제공 JUnit Vintage JUnit 4와 3을 지원하는 TestEngine 구현체 JUnit5 시작하기 2.2+버전의 스프링부트 프로젝트를 만든다면 기본으..

공부방/JAVA 2023.08.05

연산자 - 백기선 자바라이브스터디

산술 연산자 산술연산자에는 사칙 연산자(+,-,*,/)와 나머지 연산자(%)가 있습니다. 이 장에선 몇 가지 주의할 사항들에 대해 설명하겠습니다. 이는 저번 시간에 배웠던 타입 캐스팅과 타입프로모션(자동형변환)을 알아야 쉽게 이해되는 예제들 입니다. int a = 10; int b = 4; System.out.printf("%d / %d = %d", a, b, a / b); 두 변수 a와 b에 10과 4를 저장하고나서 사칙연산 / 을 수행한 결과가 2.5가 아닌 2 입니다. 나누기 연산자의 두 피연산자가 모두 int 타입인 경우, 연산 결과 역시 int타입 입니다. int 타입은 소수점을 저장하지 못하므로 정수만 남고 소수점 이하는 버려집니다. int a = 10; int b = 4; System.out..

공부방/JAVA 2023.07.28

자바 데이터 타입, 변수 그리고 배열 - 백기선 자바라이브스터디

프리미티브 타입 종류와 값의 범위 그리고 기본 값 총 8가지의 기본타입이 있습니다. Type Default Value(기본값) Size(할당크기) Range of values(범위) Integer(정수형) byte 0 1 byte -128~127 short 0 2 byte -32,768 ~ 32,767 int 0 4 byte -2,147,483,648 ~ 2,147,483,647 long 0 8 byte -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 Floating-point(실수형) float 0.0 4 byte 32-bit IEEE 754 floating-point double 0.0 8 byte 64-bit IEEE 754 floating -poi..

공부방/JAVA 2023.07.22

JVM 내부 구조

다음 다이어그램은 JVM 사양을 준수하는 Java 가상 머신의 주요 내부 구성 요소를 보여줍니다. Class Loader 와 JVM에 의해 할당된 메모리 영역인 Runtime Data Areas는 각각 아래에서 설명하겠습니다. ClassLoader Subsystem Class Loader 서브시스템은 Java 가상 머신 필수 핵심으로, .class 파일을 loading/reading 하고 바이트 코드를 JVM 메서드 영역에 저장하는 데 사용됩니다. 이 서브시스템은 동적 클래스 Loading을 처리하며 다음과 같은 세 가지 주요 기능을 수행합니다. Loading .class 파일을 JVM 메모리로 로드하는 작업을 처리합니다. 메서드 영역에 바이너리 데이터 즉, 정규화된 클래스 이름, 직계 부모,조상 클래스..

공부방/JAVA 2023.07.15

JVM은 무엇이며 자바 코드는 어떻게 실행하는 것인가

JVM이란 무엇인가 JVM(Java Virtual Machine)은 자바를 실행하기 위한 가상 컴퓨터(가상머신) 입니다. 자바로 작성된 애플리케이션은 모두 이 JVM에서만 실행되기 때문에, 자바 애플리케이션이 실행되기 위해서는 반드시 JVM이 필요합니다. 컴파일하는 방법 (How to Compile Java Program?) 저희가 작성한 자바 프로그램을 컴파일하려면 먼저 본인 컴퓨터 환경에 JDK(Java 개발 키트)가 설치되어 있어야 합니다. JDK에 대해서는 뒤에서 설명하며 JDK 17를 사용한다는 가정하에 시작하겠습니다(JDK버전 차이는 나중에 다루겠습니다) 우선 저희가 어떤 자바프로그램을 IntelliJ나 Eclipse ide에서 작성했다고 가정합시다. 그리고 작성된 프로그램은 TestProgr..

공부방/JAVA 2023.07.14