본문 바로가기

전체 글

[Java] Lv_2 계산기 프로젝트 요구사항사칙연산을 수행 후, 결과값 반환 메서드 구현 & 연산 결과를 저장하는 컬렉션 타입 필드를 가진 Calculator 클래스를 생성 ⬜ 사칙연산을 수행한 후, 결과값을 반환하는 메서드 구현 ✅⬜ 연산 결과를 저장하는 컬렉션 타입 필드를 가진 Calculator 클래스를 생성 ✅⬜ 1) 양의 정수 2개(0 포함)와 연산 기호를 매개변수로 받아 사칙연산(➕,➖,✖️,➗) 기능을 수행한 후 2) 결과 값을 반환하는 메서드와 연산 결과를 저장하는 컬렉션 타입 필드를 가진 Calculator 클래스를 생성합니다. ✅Lv 1에서 구현한 App 클래스의 main 메서드에 Calculator 클래스가 활용될 수 있도록 수정⬜ 연산 수행 역할은 Calculator 클래스가 담당 ✅⬜ 연산 결과는 Calculato.. 더보기
[CS] 스레드(Thread), 멀티 스레드(Multi-Thread) 목차스레드(Thread)싱글 스레드(Single Thread)멀티 스레드(Multi-Thread)멀티 스레드를 사용하는 이유스레드 주요 개념싱글 스레드 사용 예제멀티 스레드 사용 예제Runnable 인터페이스 활용(권장) 스레드(Thread)프로그램 내에서 독립적으로 실행되는 하나의 작업 단위이다. (요리사) 싱글 스레드(Single Thread)하나의 프로그램 내에서 하나의 스레드를 통해 하나의 작업을 처리한다. (요리사 한 명)요리사가 한 명이기 때문에 여러 개의 주문이 들어온다면, 순차적으로 처리해야 한다. 멀티 스레드(Multi-Thread)하나의 프로그램 내에서 여러 개의 스레드를 만들어 병렬 또는 동시성 있게 수행하는 기능이다. 즉, 프로세스 내에서 여러 개의 흐름이 동시에 동작하는 .. 더보기
[Java] Lv_1 계산기 프로젝트 요구 사항⬜ 양의 정수(0 포함)를 입력받기 ⬜ Scanner를 사용하여 양의 정수 2개(0 포함)를 전달 받을 수 있습니다. ⬜ 양의 정수는 각각 하나씩 전달 받습니다. ⬜ 양의 정수는 적합한 타입으로 선언한 변수에 저장합니다. ⬜ 사칙연산 기호(➕,➖,✖️,➗)를 입력받기 ⬜ Scanner를 사용하여 사칙연산 기호를 전달 받을 수 있습니다. ⬜ 사칙연산 기호를 적합한 타입으로 선언한 변수에 저장합니다. (charAt(0)) ⬜ 위에서 입력받은 양의 정수 2개와 사칙연산 기호를 사용하여 연산을 진행한 후 결과값을 출력하기 ⬜ 키워드 : if switch ⬜ 사칙연산 기호에 맞는 연산자를 사용하여 연산을 진행합니다. ⬜ 연산 기호를 구분하기 위해 제어문을 사용합니다. (예를 들면 if, switch.. 더보기
[Java] 스트림(Stream) Stream(Stream)데이터를 효율적이고 선언적으로 처리할 수 있게 해주는 API이다. 컬렉션(List, Set 등)의 데이터를 필터링, 매핑, 정렬 등의 작업을 함수형 프로그래밍(순수 함수를 조합하고 소프트웨어를 만드는 방식) 스타일로 처리할 수 있게 도와준다. 쉽게 말해서, 데이터를 효율적으로 흐름에 맞추어 처리한다는 의미이다. 스트림의 특징스트림은 데이터를 저장하지 않는다.원본 데이터를 변경하지 않는다. (불변성 유지)스트림은 컬렉션(List, Set 등)과 함께 자주 활용된다.생성 → 중간 연산(Intermediate Operation) → 최종 연산(Terminal Operation) 순으로 처리 된다. (선언형 스타일)지연 연산(Lazy Evaluation)을 사용하여 최종 연산이 수행될.. 더보기
[Java] 익명 클래스란? 익명 클래스이름이 없는 클래스를 익명 클래스라고 한다. 보통 일회성으로 사용되는 클래스를 정의할 때 사용되며, 별도의 클래스 파일을 만들지 않고 즉석에 인스턴스를 생성할 때 주로 사용된다. 익명 클래스 활용클래스 이름을 따로 만들 필요 없이 일시적으로 클래스 구현이 필요한 경우이벤트 처리, 콜백, 스레드 구현 등 간단한 작업에 자주 사용된다. 문법 구조public interface Runnable() { public void run();}Runnable myRunnable = new Runnable() { // 추상 클래스 or 인터페이스 @Override public void run() { System.out.println("달린다.); };};인터페이스는 추상.. 더보기
[Java] 람다(Lamda) 람다(Lamda)익명 클래스를 간단하게 표현하는 방식이다. 즉, 익명 클래스의 메서드를 코드 블록으로 만들어서 변수에 넘기거나 인자로 전달 할 수 있게 해주는 기능이다. 람다 문법Calculator c = (a, b) -> a + b; // 람다식Calculator c1 = new Calculator() { // 익명 클래스 @Override public int sum(int a, int b) { return a + b; }};익명 클래스를 사용할 때보다 훨씬 간결하게 표현할 수 있다.컴파일러가 람다 표현식을 통해 익명 클래스를 내부적으로 만들어 준다. 조건 : 함수형 인터페이스 (자바에서 권장)@FunctionalInterfacepublic interface Ca.. 더보기
[Java] 추상 클래스(abstract class)란? 추상 클래스(Abstract class)공통적인 속성과 기능을 정의하지만, 완전한 구현을 하지 않고, 자식 클래스가 반드시 구현해야 할 부분만 선언해놓는 클래스이다.쉽게 말해서 자식 클래스에게 틀을 제공하고 자식 클래스가 구체적인 내용을 채워 넣는 것이다. 추상 클래스 선언abstract 키워드를 사용해서 선언한다.하나 이상의 추상 메서드(몸체 없는 메서드)를 가질 수 있다.직접 객체를 생성할 수 없다. (생성 시도 시 컴파일 오류 : 불완전한 클래스는 직접 사용할 수 없다.)추상 메서드가 하나라도 있으면, 추상 클래스로 선언해야 한다.public abstract class Animal {} 추상 클래스 특징특징설명인스턴스화 불가직접 객체를 만들 수 없다. (new로 생성 불가)상속 전용다른 클.. 더보기
[Java] 오버라이딩(overriding)이란? 오버라이딩(overriding)객체 지향 프로그래밍(OOP)에서 자식 클래스가 부모 클래스의 메서드를 재정의하는 것을 의미한다. 오버라이딩 방법오버라이딩할 메서드의 이름과 매개변수 동일해야 한다. 부모 클래스의 기능을 바꾸거나 더 확장할 수 있다.다형성(polymorphism)을 구현할 때 자주 사용된다. 사용 예제 더보기Mainpackage practice;public class Main { public static void main(String[] args) { System.out.println("--강아지--"); Dog dog = new Dog(); dog.move(); dog.speak(); System.out.prin.. 더보기