Today I Learned

241028 TIL / Java 기본 개념 총정리, StringBuilder 및 Strinf 클래스 정리

shinelee26 2024. 10. 28. 20:53

오늘 진행한 학습 요약

1. Java 기본 개념 총정리

  • Java랑 JavaScript
  • Java 주요 개념
  • JVM, JRE, JDK란?
  • Stack과 Heap
얄팍한 코딩사전 - 자바를 알아보자 링크 : https://youtu.be/OxvtGYvVkRU?si=2-mO4UE45UHBSYEK
강성지(찌야) - Java 알려주는 은행원 - Stack & Heap 이해하기
링크 : https://youtu.be/W2q7W4_3gpY?si=sPhITxvsZ9xklOq_

 

2. StringBuilder, String 클래스 개념 정리

  • StringBuilder 클래스
  • String 클래스

3. 알고리즘 코드카다  Day11~13 (작성 생략)

CodingTest Git-hub 링크 : https://github.com/chews26/CodingTest

 


학습 정리

1. Java 기본 개념 총정리

  • Java랑 JavaScript,,,

 

  • Java의 주요 개념
개념 설명
객체 지향 프로그래밍
(OOP)
Java는 객체 지향 언어로, 객체와 클래스를 기반으로 코드 구조를 설계합니다.
주요 개념은 캡슐화, 상속, 다형성, 추상화입니다.
클래스
(Class)
객체를 생성하기 위한 청사진으로, 속성(필드)과 메서드(기능)로 구성됩니다.
객체
(Object)
클래스를 통해 생성된 인스턴스로, 실질적인 데이터를 포함하고 있습니다.
상속
(Inheritance)
기존 클래스를 확장하여 새로운 클래스를 생성하는 기능으로, 코드 재사용성을 높여줍니다.
캡슐화
(Encapsulation)
데이터와 메서드를 하나의 단위로 묶고, 외부에서 접근을 제한하는 개념입니다.
주로 private 접근 제한자를 사용합니다.
다형성
(Polymorphism)
하나의 객체가 여러 가지 형태를 가질 수 있는 능력으로, 오버로딩과 오버라이딩을 통해 구현됩니다.
추상화
(Abstraction)
필요하지 않은 세부사항을 숨기고 중요한 부분만을 노출하는 개념으로,
abstract 클래스와 인터페이스로 구현됩니다.
인터페이스
(Interface)
클래스가 구현해야 하는 메서드 목록만을 정의하는 타입으로, 다중 상속을 가능하게 합니다.
패키지
(Package)
유사한 클래스들을 그룹으로 묶어 관리하기 위한 디렉토리 구조입니다.
JVM
(Java Virtual Machine)
Java 프로그램이 실행되는 가상 머신으로, 운영체제 독립성을 제공합니다.
JRE
(Java Runtime Environment)
Java 프로그램 실행 환경으로, JVM과 라이브러리를 포함하고 있습니다.
JDK
(Java Development Kit)
Java 개발 도구 모음으로, 컴파일러와 JRE가 포함되어 있습니다.
가비지 컬렉션
(Garbage Collection)
사용되지 않는 객체를 자동으로 메모리에서 제거하여 메모리 누수를 방지합니다.
예외 처리
(Exception Handling)
코드 실행 중 발생할 수 있는 오류를 처리하는 메커니즘으로, try, catch, finally 블록을 사용합니다.
멀티스레드
(Multithreading)
여러 스레드를 사용해 동시에 여러 작업을 수행할 수 있게 하여 프로그램 효율을 높입니다.
컬렉션 프레임워크
(Collection Framework)
데이터 구조를 편리하게 다루기 위한 인터페이스와 클래스 모음으로, List, Set, Map 등이 포함됩니다.
스트림
(Stream)
컬렉션에 대한 반복 작업을 함수형 스타일로 처리할 수 있도록 하는 기능입니다.
람다 표현식
(Lambda Expressions)
함수를 간결하게 표현할 수 있도록 도와주는 기능으로, Java 8부터 도입되었습니다.
제네릭
(Generics)
클래스와 메서드에서 사용할 데이터 타입을 미리 지정하지 않고 유연하게 설정할 수 있도록 하는 기능입니다.
어노테이션
(Annotations)
메타데이터로, 코드에 대한 추가 정보를 제공하며 컴파일러에 의해 해석됩니다.
@Override, @Deprecated 등이 있습니다.

 

  • JVM
    • 자바 프로그램을 실행하는 가상 머신
    • 바로 작성된 코드가 운영체제에 관계없이 어디서든 실행될 수 있도록 함
    • 자바 코드를 기계어로 변환해주는 역할
  • JRE
    • JRE는 자바 애플리케이션을 실행하기 위해 필요한 모든 구성 요소들을 포함하는 환경
    • 자바 애플리케이션을 실행할 때 필요한 환경을 제공하지만, 개발에 필요한 도구는 포함되어 있지 않는 한계점
    • 컴파일러(javac)와 디버거 같은 개발 도구들이 포함
  • JDK
    • JDK는 자바 애플리케이션을 개발하기 위한 도구 모음
    • JRE도 포함되어 있어 개발자들이 작성한 코드를 실행하고 테스트할 수 있음

 

  • Stack
    • 메모리에서 일시적인 데이터를 저장
    • 지역 변수, 매개 변수, 리턴 주소 등을 저장
    • 메모리를 빠르게 할당하고 해제할 수 있어 속도가 빠름
    • 메모리 관리가 자동으로 이루어짐
    • LIFO (Last In, First Out) 방식으로 데이터가 쌓이고 제거
    • Stack은 크기가 제한되어 있어 너무 많은 데이터를 할당할 경우 Stack Overflow가 발생
  • Heap
    • 동적으로 할당되는 메모리 영역
    • 객체와 같은 큰 데이터, 런타임에 생성되는 변수들을 저장 (new로 생성되는거!)
    • Stack에 비해 메모리 할당과 해제 속도가 느리지만, 유연하게 메모리를 사용
    • 프로그래머가 직접 메모리를 할당하고 해제해야 하며 자바에서는 가비지 컬렉터가 자동으로 메모리를 관리
    • 메모리 관리를 잘못하면 메모리 누수가 발생
항목 Stack Heap
용도 함수 호출 시 생성되는 지역 변수, 매개 변수, 리턴 주소 저장 동적으로 생성되는 객체와 큰 데이터 저장
속도 빠름 상대적으로 느림
메모리 관리 자동으로 관리(LIFO 방식) 프로그래머가 직접 관리(가비지 컬렉션 등 사용 가능)
메모리 할당 고정 크기, 정적 할당 동적 할당, 필요에 따라 메모리 크기 조정 가능
제한 제한된 메모리 크기(Stack Overflow 위험) 상대적으로 크기가 크지만, 메모리 누수 위험 있음
수명 함수 종료 시 자동 해제 프로그램이 종료되거나 명시적으로 해제될 때까지 유지
주 사용 데이터 유형 지역 변수, 함수 호출 시 사용 객체, 동적으로 할당된 데이터 (new 키워드로 생성된 객체 등)

 


 

2. StringBuilder, String 클래스 개념 정리

  • StringBuilder 클래스
    • StringBuilder는 자바에서 문자열을 효율적으로 처리하기 위해 제공되는 클래스
    • 일반적인 String 클래스와 달리, StringBuilder는 mutable(변경 가능)한 객체로, 문자열을 수정하거나 추가할 때 새로운 객체를 생성하지 않고, 기존 객체를 변경하여 성능을 향상
 

StringBuilder | Notion

StringBuilder는 자바에서 문자열을 효율적으로 처리하기 위해 제공되는 클래스입니다. 일반적인 String 클래스와 달리, StringBuilder는 **mutable(변경 가능)**한 객체로, 문자열을 수정하거나 추가할 때

shinelee26.notion.site

 

  • String 클래스
    • String 클래스는 자바에서 문자열을 다루는 대표적인 클래스
    • 다양한 메서드를 통해 문자열을 처리하거나 변환
 

String 클래스 | Notion

String 클래스는 자바에서 문자열을 다루는 대표적인 클래스입니다. String은 불변 객체(immutable)로, 한 번 생성된 문자열은 변경할 수 없습니다. 하지만 다양한 메서드를 통해 문자열을 처리하거나

shinelee26.notion.site