JAVA 족보 만들기_(04/21~현재 작성중)

개미는뚠뚠·2024년 4월 21일
1

개발지식

목록 보기
9/9
post-thumbnail

독학으로 업무에 적응한다고 구현에만 집중하다보니 뭔가 깊이가 없는 개발자가 되었다고 생각이 들었다.

기본기가 탄탄한 개발자로 성장하고 싶어서 매주 10개 이상 기본 개념부터 정리하기 도전🔥


🚀 자바 core

1. JDK,JRE,JVM[04/21]

1-1. JDK(Java Development Kit)

Java 개발을 위해 필요한 도구들의 집합으로 컴파일러, 디버거, 개발 도구 등을 포함한 포괄적 의미.

1-2. JRE(Java Runtime Environment)

Java 어플리케이션을 실행하기 위한 런타임 환경을 의미.

1-3. JVM(Java Viertual Machine)

Java의 클래스, 라이브러리, 실행환경 등을 포함하고 있음.

2. Java의 컴파일 과정[04/21]

2-1. java 파일을 생성.

2.2. build 진행.

2-3. java compiler의 javac의 명령어를 통해 바이트코드(.class)를 생성.

2-4. Class Loader를 통해 JVM 메모리 내로 로드.

2-5. 실행엔진을 통해 컴퓨터가 읽을 수 있는 기계어로 해석.

(참조 : https://gyoogle.dev/blog/computer-language/Java/%EC%BB%B4%ED%8C%8C%EC%9D%BC%20%EA%B3%BC%EC%A0%95.html)

3. == 와 equlas의 차이점[04/21]

3-1. ==

두 객체의 참조(메모리 주소)를 비교하는 연산자를 의미하고, 두 객체의 참조가 동일한 경우 ture를 반환한다.

3-2. equlas

eqluas는 객체한 내용적인 부분을 비교하는 메서드이다. 두 객체의 내용(값)이 동일한 경우에 ture를 반환한다.

4. final의 기능과 의미[04/21]

4-1. "변수"의 final

final변수는 한번 지정이 되면 변경할 수 없는 상수를 의미한다.

4-2. "메서드"의 final

final메서드는 하위 클래스에서 재정의(오버라이딩) 할 수 없음을 의미한다.

4-3. "클래스"의 final

final클래스는 상속될 수 없고, 즉 확장될 수 없는 클래스를 의미한다.


🚀자바의 OOP

1. OOP란?[04/28]

oop란 객체 지향 프로그래밍(Object-Oriented Programming, OOP) 즉, 프로그래밍을 여러 개의 객체(Object) 단위로 보고 작업한다는 의미이다.

2. 객체(Object)[04/28]

2-1. 의미

객체(Object)란 우리 일상생활에서 인식할 수 있는 모든 사물

2-2. 구성

  • 속성 = Field = 프로퍼티 : 객체가 가지고 있는 특성을 나타내는 변수
  • 행위 = Method = 행위 : 객체가 수행할 수 있는 동작

3. 객체 지향 언어의 특징[04/28]

3-1. 다형성

하나의 메서드(Method)나 클래스(Class)가 있다고 가정할 때 이 메서드나 클래스를 다양한 방법으로 동작하게 하는 것으로 JAVA에서는 대표적으로 Java에서는 대표적으로 OverloadingOverriding이 있음

3-2. 상속성

상위 클래스의 모든 것을 하위 클래스가 이어받는 것을 의미하며, 자식은 부모의 재산을 상속받는 것과 같다고 생각하면 된다.

3-3. 캡슐화

  • 객체의 속성(Field)과 행위(Method)를 하나로 묶고, 외부로 부터 내부를 감싸 숨기는 것을 의미한다.
  • 외부의 잘못된 접근으로 값이 변하는 것을 막기 위해 클래스 내의 변수나 함수를 감추거나 드러내는 은닉성을 가지고 있고, java에서는 public, protected, default, private의 접근제어자를 통해 구현이 가능하다.

3-4. 추상화

객체의 공통적인 속성과 기능을 추출하여 정의하는 것을 의미

4. 추상 클래스와 추상 메서드[04/21]

4-1. 추상 클래스

일반 클래스와 달리 인스턴스를 직접 생성할 수 없으며, 하나 이상의 추상 메서드를 포함할 수 있다(필수는 아님).  

4-2. 추상 메서드

구현이 없이 선언만 되어 있는 메서드를 의미한다. 이를 상속받은 하위 클래스에서 반드시 구현해야 한다.

5. 일반 클래스와 추상 클래스[04/21]

5-1. 객체 생성 가능 여부

일반 클래스: 객체를 생성할 수 있다.
vs
추상 클래스: 객체를 직접 생성할 수 없다. 대신 추상 클래스를 상속받은 자식 클래스에서 객체를 생성할 수 있다.

5-2. 추상 메서드 포함 여부

일반 클래스: 추상 메서드를 포함할 수 없다.
vs
추상 클래스: 추상 메서드를 포함할 수 있다. 추상 메서드는 구현부가 없는 메서드다.

5-3. 상속 관계

일반 클래스: 다른 클래스를 상속받을 수 있다.
vs
추상 클래스: 다른 클래스를 상속받을 수 있으며, 자신도 상속받을 수 있다.

5-4. 용도

일반 클래스: 실제 구현된 기능을 제공하는 데 사용된다.
vs
추상 클래스: 공통된 속성과 메서드를 정의하여 상속받는 자식 클래스에서 구현하도록 하는데 사용된다.


🚀 자바의 자료형

1. Java Data Type [05/05]

2. Primitive_Type(기본형) [05/05]

2-1. 개요

  • 자바에서 기본 자료형은 반드시 사용하기 전에 선언Declared 되어야 한다.
  • OS에 따라 자료형의 길이가 변하지 않는다.
  • 비객체 타입이니다. 따라서 null 값을 가질 수 없다.

2-2. 종류

byte : 8bits
short : 16bits
int : 32bits
long : 64bits
float : 32bits
double : 64bits
char : 16bits
boolean : 1bit

3. Reference_Type(참조형) [05/05]

3-1. 개요

  • 참조형은 기본적으로 java.lang.Object를 상속 받으면 참조형이 된다.
  • 선언한 자료형이 기본형이 아닌 경우 참조형이 된다.
  • 참조형에는 클래스형(Class), 인터페이스형(Interface), 배열형(Arra)이 있다.

3-2. 종류 - 클래스형(Class)

클래스형은 기본형과 다르게 객체를 참조하는 형태이다.

class TestObject{
    private int value;
    TestObject(int value) {
        this.value = value;
    }
    public int getValue() {
        return value;
    }
    public void setValue(int value) {
        this.value = value;
    }
}
public class ClassType {
    public static void main(String[] args) {
        TestObject a = new TestObject(4);
        TestObject b = new TestObject(9);
        System.out.println(a.getValue()); //result = 4
        System.out.println(a.getValue()); //result = 9
        b.setIndex(6);
        System.out.println(a.getValue()); //result = 6
    }
}

3-3. 종류 - 인터페이스형(Interface)

인터페이스를 만들게 되면 새로운 참조 자료형을 만드는 것과 같다.

interface TestInterface<T> {
    void add(T value);
}

3-4. 종류 - 배열형(Array)

배열형은 기본형으로도 만들 수 있고 참조형으로도 만들 수 있다.

public class TestArray {
    public static void main(String[] args) {
        int [] testArr1 = new int[2];
        Long [] testArr2 = new Long[2];
        Object[][] testArr3 = null; //중첩 괄호를 사용하게 된다면 다중 배열로 사용 
    }
}

3-5. 종류 - 열거형(Enum)

상수의 집합을 만들거나 특정 객체의 상태를 모아서 열거형으로 만들면 코드의 가독성을 높힐 수 있ek.

//기본 사용 
public enum Day {
    MON, TUE, WED, THU, FRI, SAT, SUN
}
//생성자와 필드 활용
public enum Day {
    MON("Monday"),
    TUE("Tuesday"),
    WED("Wednesday"),
    THU("Thursday"),
    FRI("Friday"),
    SAT("Saturday"),
    SUN("Sunday")
    ;

    private final String label;

    Day(String label) {
        this.label = label;
    }

    public String label() {
        return label;
    }
}

🚀 자바의 collection

1. collection[04/28]

컬렉션은 데이터의 집합, 그룹을 의미하며, JCF는 이러한 데이터, 자료구조인 컬렌션과 이를 구현하는 클래스를 정의하는 인터페이스 제공한다.

2. 배열과 컬렉션의 차이[04/28]

2-1 크기 고정 vs 크기 가변

배열은 크기가 고정되어 있어 추가/삭제가 어려운 반면, 컬렉션은 크기가 가변적이어서 동적으로 데이터를 추가/삭제할 수 있음

데이터 타입 제한 vs 데이터 타입 유연성

배열은 동일한 데이터 타입의 데이터만 저장할 수 있지만, 컬렉션은 다양한 데이터 타입의 데이터를 저장할 수 있음

메모리 관리 vs 메모리 관리 자동화

배열은 메모리 관리를 직접 해야 하지만, 컬렉션은 메모리 관리가 자동화되어 있음

인덱스 기반 vs 인덱스 기반 + 다양한 구현체

배열은 인덱스 기반의 데이터 접근만 가능하지만, 컬렉션은 인덱스 기반 외에도 다양한 구현체(List, Set, Map 등)를 통해 데이터를 관리할 수 있음

3. Collection 인터페이스[04/28]

3-1. Set

List, Set , Map 는 컬렉션 인터페이스의 세 가지 주요 구현 유형이다.

구현 클래스

  • HashSet : 가장빠른 임의 접근 속도, 순서를 예측할 수 없음
  • TreeSet : 정렬방법을 지정할 수 있음

3-2. List

는 순서가 있는 객체들의 모음으로, 중복된 값을 허용한다.

구현 클래스

  • LinkedList : 양방향 포인터 구조로 데이터의 삽입, 삭제가 빈번할 경우 유용
  • Vector : 과거에 대용량 처리를 위해 사용했으며, 비교적 성능이 별로
  • ArrayList : 단방향 포인터 구조로 각 데이터에 대한 인덱스를 가지고 있어 조회 기능에 성능이 뛰어남

3-3. Map

은 키와 값의 쌍으로 이루어진 객체들의 모음으로 각 키는 고유해야 하며, 키를 통해 값을 조회하거나 수정할 수 있다.

구현 클래스 :

  • Hashtable : HashMap보다는 느리지만 동기화 지원, null불가
  • HashMap : 중복과 순서가 허용되지 않으며 null값이 올 수 있다.
  • TreeMap : 정렬된 순서대로 키(Key)와 값(Value)을 저장하여 검색이 빠름

0개의 댓글