Language/JAVA 23

[JAVA] BufferedReader

개요 자바를 이용해 푼 백준 문제 풀이를 검색해 보는데, 간단한 문제를 제외하고는 Scanner가 아닌 BufferReader기능을 이용하여 표준입력을 받는 것을 보고 Scanner보다 나은 어떠한 기능이 있는지 알아보기 위해 작성해 본다.  정의 BufferReader : 입력을 읽어주는 기능을 가지고 있는 클래스java.io의 하위에 정의되어 있는 클래스로, "import java.io.*"을 선언해야 사용이 가능하다. 기능 읽기 성능을 향상하기 위해 입력 스트림의 데이터를 버퍼에 임시로 저장해 둔다.  사용 이유 빠른 읽기 속도: 입력을 버퍼에 임시로 저장해 두는 기능이 있기에 파일 / 네트워크 등 큰 데이터를 읽을 때 성능이 좋다.다양한 메서드 : 편리한 메서드가 많이 구현되어 있다.read() ..

Language/JAVA 2024.09.14

[JAVA] throws IOException

개요 스터디 팀원의 코드 중 "public static void main(String[] args) throws IOException" 문장 사용의 이유가 궁금하여 이해해 보고자 글을 작성해 본다. 개념 예외(Exception)란? 프로그램이 실행되는 도중 예상치 못한 상황이 발생했을 때의 오류IOException이란 ? InputOutputException의 약자로, 입출력 작업 중 발생할 수 있는 오류를 뜻한다. 파일 읽기/쓰기, 네트워크 통신 등의 작업에서 발생 가능 사용 이유 간편함 : 예외를 메서드 내부에서 처리하지 않고 메서드를 호출한 곳에서 처리할 수 있다.중복 코드 방지가독성  throws IOException역할 : 메서드 선언부에 붙이는 구문으로, 해당 메서드가 입출력예외를 발생시킬 수..

Language/JAVA 2024.09.13

[JAVA] 캐스팅 (Casting)

📌 캐스팅 (Casting) : 데이터 타입을 다른 데이터 타입으로 변환하는 과정으로, 형변환이라고도 불린다. 캐스팅의 필요성다형성 : 오버라이딩된 함수를 분리해서 활용할 수 있다상속 : 캐스팅을 통해 범용적인 프로그래밍이 가능하다. 캐스팅의 종류업캐스팅(upcasting) : 자식 클래스에서 부모 클래스로 형변환하는 것데이터 손실 없이 수행된다.자동 변환 : 자바 컴파일러가 자동으로 수행한다. 제한된 접근 : 업캐스팅된 객체는 부모 클래스에서 정의된 멤버에만 접근할 수 있음.(자식 클래스에서 추가된 멤버는 사용할 수 없다.)class Animal { public void makeSound() { System.out.println("Animal sound"); }}class Do..

Language/JAVA 2024.09.01

[JAVA] 패키지 (Package)

📌 패키지 : 관련 클래스와 인터페이스를 그룹화한 하나의 단위(바탕화면에 디렉토리를 생성하고, 그 안에 파일들을 정리하는 것과 유사.)패키지 안에 패키지를 생성할 수 있다. ( 계층구조)단, 계층 구조라 해서 상위-하위 관계가 아니라 각각 독립적이다.파일 시스템 구조 : com/example/rest_back패키지 구조 : com.example.rest_back내장 패키지 : 자바에서 기본적으로 제공하는 패키지들 ( java.util, java.lang 등)java.lang : 자바의 기본적인 클래스들을 포함하는 패키지로, 자바 프로그램에서 기본적으로 사용할 수 있는 클래스들 제공 java.util : 유틸리티 클래스들을 포함하는 패키지로, 컬렉션 프레임워크, 날짜와 시간 처리, 래퍼 클래스 등을 제공..

Language/JAVA 2024.08.30

[JAVA] 컬렉션 (Collection)

📌컬렉션(Collection) : 여러 개의 객체를 하나의 단위로 묶어서 관리할 수 있는 구조 - 컬렉션 프레임워크 (Collection Framework) :  데이터의 집합을 다루는 데 필요한 다양한 인터페이스와 클래스구성 요소인터페이스 : 컬렉션의 기본적인 동작을 정의하는 인터페이스- List, Set, Queue, Map 등구현 클래스 : 인터페이스를 구현한 구체적인 클래스- List의 경우 ArrayList, LinkedList 등알고리즘 : 컬렉션을 쉽게 조작할 수 있는 메서드를 제공하는 유틸리티 클래스- Collection 클래스에서 제공하는 정렬, 검색, 비교 등의 알고리즘  제네릭 컬렉션 타입 안정성 보장컴파일 타임에 타입 오류 잡을 수 있음불필요한 형변환(Casting) 방📄 Col..

Language/JAVA 2024.08.29

[JAVA] 제네릭 (Generic)

📌 제네릭 : 클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법.Person 클래스를 만들 때 이용하여 전역변수 info의 데이터타입을 T로 일시적으로 지정해 준다. 이후 Person이 인스턴스화할 때 지정한 구체적인 데이터 타입 (여기에서는 string)이 T자리에 들어가 변수 info가타입을 갖게 된다.*특징*1. 제네릭의 이름은 서로 달라야 한다. 보통 T  뒤에 위치한 알파벳을 대문자 형태로 사용한다.2. 제네릭의 자료형은 기본 데이터 타입 (int, char,...) 이 아닌 참조형 데이터 타입만을 취급한다. 제네릭 프로그래밍 (generic programming) : 다양한 종류의 데이터를 처리할 수 있는 클래스와 메서드를 작성하는 기법자료형에 대한 정보가 담겨있는 박스를 제공해 ..

Language/JAVA 2024.08.28

[JAVA] OCP (Open Closed Principle) 개방 폐쇄의 원칙

📌 개방 폐쇄의 원칙 (OCP) ? : 객체 지향 설계 원칙 중 하나로 Open for extention + Closed for modification 즉, 새로운 기능의 추가나 변경 사항이 생겼을 때 기존 코드는 확장할 수 있어야 하지만 기존의 코드는 수정되지 않아야 하는 원칙이다. 확장에는 열려있고 변경에는 닫혀있어야 한다는 의미이다. Open for extention : 확장은 열려있다는 뜻으로, 클라이언트 코드 수정을 제외한 기능 추가 가능을 의미.Closed for modification : 코드 수정은 닫혀있다는 의미로, 클라이언트 코드 수정 금지를 의미.  장점코드의 유지보수성을 높이고 변경으로 인한 오류를 줄일 수 있다.다형성을 활용하고 역할과 구현을 잘 분리하였기에 핵심 코드들을 유지할..

Language/JAVA 2024.08.26

[JAVA] 메모리 영역

📌JVM (Java Virtual Machine)이란?   :  자바 가상 머신으로, JVM 설치만 한다면 OS에 상관없이 자바의 바이트 코드를 해석하고 실행하는 역할을 한다. JVM 실행 순서 .java 파일을 컴파일러(Compiler)를 통해 .class 파일로 변환한다. .class 파일을 JVM의 ClassLoader(클래스로더)에게 보낸다.클래스로더에서 JVM 런타임 영역으로 로딩하여 메모리에 올린다. 메모리란?: 주기억장치인 하드웨어 RAM을 의미하며, 프로그램을 실행하기 위한 정보를 저장한다.컴퓨터에 존재하는 모든 영역은 RAM이란 기억장치 내 고유한 영역을 할당받는다.→ 효율적으로 프로그램이 실행되기 위해 메모리 영역은 구분된다. 자바의 메모리 영역- 자바 프로그램을 실행하게 되면 JVM..

Language/JAVA 2024.08.25

[JAVA] 스레드(Thread) 의미와 사용법

Process와 Thread📌 프로세스(Process) : cpu에 의해 메모리에서 실행 중인 프로그램자바 JVM(Java Virtual Machine)은 주로 하나의 프로세스로 실행되며, 동시에 여러 작업을 수행하기 위해 멀티 스레드를 지원한다. 📌 스레드(Thread) : 메모리에 올라가 실행 중인 프로세스 안에서 실질적으로 작업을 실행하는 단위단일 스레드 : 한 프로그램에 스레드가 1개일 경우멀티 스레드 : 한 프로그램에 스레드가 2개 이상인 경우 👐🏻작업 단위로 보는 운영체제와 스레드👐🏻운영 체제의 입장에서  →  작업의 단위는 프로세스cpu입장에서 →  작업의 단위는 스레드 Process와 Thread의 차이점가장 큰 차이 키워드 : 독립성 (각각의 메모리를 할당 받는 것)→ 프로세스..

Language/JAVA 2024.08.24

[JAVA] 추상 클래스와 인터페이스

📌 추상클래스 : 부모 클래스는 제공하지만, 실제 생성되면 안 되는 클래스📌 인터페이스 : 순수 추상 클래스로, 실행 로직을 전혀 가지고 있지 않은 모든 메서드가 추상 메서드인 추상 클래스 추상클래스 선언법abstract class abstractClass {...}  : 클래스를 선언할 때 앞에 추상이라는 의미의 abstract 키워드를 붙여주면 된다. 추상클래스 특징직접 인스턴스를 생성하지 못한다.추상 메서드가 하나라도 있는 클래스는 추상 클래스로 선언해야 한다. 추상 메서드 선언법public abstract void abstractMethod(); : 메서드 앞에 추상이라는 의미의 abstract 키워드를 붙여주면 된다. 추상 메서드 특징바디 부분이 없다.상속받는 자식 클래스가 반드시 오버라이딩..

Language/JAVA 2024.08.19