전체 글 178

자바스크립트 문제 풀이 기본적인 구조

// Node.js의 readline 모듈을 불러옴const readline = require('readline');// 즉시 실행 함수 (async를 사용하기 위한 비동기 함수)(async () => { // readline 인터페이스 생성 (표준 입력을 받기 위한 설정) let rl = readline.createInterface({ input: process.stdin }); // W와 R 변수를 루프 밖에서 사용하기 위해 미리 선언 let W, R; // 입력 스트림에서 한 줄씩 읽어오는 비동기 루프 for await (const line of rl) { // 입력받은 line을 공백으로 분리하고 숫자로 변환하여 W, R에 ..

인터페이스에 정의할 수 있는 요소들

1. 추상 메서드 (기본)interface Example { void method1(); // public abstract 자동 추가 public abstract void method2(); // 명시적 선언}2. 상수interface Example { int MAX_COUNT = 100; // public static final 자동 추가 public static final int MIN_COUNT = 0; // 명시적 선언}3. default 메서드 (Java 8+)interface Example { default void defaultMethod() { // 구현 코드 작성 가능 }}4. static ..

기타제어자 (Other Modifiers)

기타 제어자(Non-access Modifier)의 종류기본 구조 제어자 (설계 관련) static - 클래스 수준에서 공유되는 멤버를 정의하여 메모리에 한 번만 할당되고 모든 인스턴스가 공유하게 함final - 값 변경, 상속, 오버라이딩을 금지하여 불변성을 보장함 abstract - 미완성 설계도를 제공하여 자식 클래스에서 반드시 구현하도록 강제함 특수 목적 제어자 (동작 관련) synchronized - 멀티스레드 환경에서 한 번에 하나의 스레드만 접근할 수 있도록 동기화를 보장함 transient - 객체 직렬화 과정에서 특정 필드를 제외하여 보안성을 확보하거나 최적화함 volatile - 멀티스레드 환경에서 변수의 값을 메인 메모리에서 직접 읽고 써서 항상 최신 값을 보장함1. static개념:..

자바 접근 제어자

접근 제어자(Access Modifier)는 클래스, 메서드, 변수의 접근 범위를 제어하는 키워드다. 각각 클래스, 메서드, 변수별로 접근 제어자의 적용 범위가 달라진다. 클래스의 접근 제어자public어떤 패키지(폴더)에서든 접근 가능한 소스 파일(.java)에는 단 하나의 public 클래스만 존재 가능파일명은 반드시 public 클래스의 이름과 같아야 함default(package-private)접근 제어자를 명시하지 않은 경우의 기본값같은 패키지 내에서만 접근 가능src/├── com.example.main/ 실제로 패키지는 폴더를 기준으로 하지만 폴더가 있다고 모두 패키지는 아니다. 실제로 패키지로 작동하려면 파일 안에 패키지의 범위를 선언해줘야 한다. 그리고 그 선언한 부분이 패키지의 단위가 ..

메서드 vs 함수

메서드와 함수는 비슷하지만 중요한 차이점이 있다.구분함수메서드소속독립적클래스에 종속접근방식직접 호출객체를 통해 호출데이터 접근매개변수로만객체의 필드 접근 가능사용 패러다임절차적 프로그래밍함수형 프로그래밍객체지향 프로그래밍하지만 자바에서 함수는 모두 클래스 내부에서만 정의할 수 있기때문에 함수 = 메서드다. 이건 예외가 없다. 기본적으로 자바는 모든 코드가 클래스 내부에서 정의되기 때문에 독립적으로 존재하는 함수가 없다.이것은 자바가 기본적으로 객체지향 프로그래밍을 따르기 때문이다. 객체지향의 핵심은 데이터와 해당 데이터를 처리하는 메서드를 하나의 단위(객체)로 묶는 것과 이를 통해 데이터와 기능이 서로 연관되어 응집도를 높이는 것인데 자바는 클래스를 강제함으로써 이를 어느정도 강제하게 된다. 즉 클래스 ..

클래스의 final

final은 "변경할 수 없는" 또는 "상속할 수 없는"을 의미한다.클래스에 final을 사용하면final public class FinalClass { // 다른 클래스가 이 클래스를 상속할 수 없음 // ...}// 컴파일 에러class ChildClass extends FinalClass { // final 클래스는 상속 불가 // ...} 주로 사용되는 경우:보안이 중요한 클래스 (예: String 클래스)상속을 통한 확장을 금지하고 싶을 때불변성을 보장하고 싶을 때예시:// 상속 불가능한 클래스final class Math { // 수학 관련 메서드들...}// Java의 실제 예final class String { // 문자열 처리 클래스 // String은 너무 중..

자바의 클래스(Class)

1. 개념 설명클래스는 객체 지향 프로그래밍의 기본 단위로, 관련된 데이터와 메서드(method)를 하나의 단위로 묶어놓은 설계도다. (자바스크립트의 class와 유사) 실제 프로그램에서 사용되는 객체(Object)를 만들기 위한 템플릿 역할을 한다. 이렇게 만들어진 객체를 인스턴스라고 부른다.2. 비유 설명하지만 실제로 클래스가 어떤 것을 만들어야 한다고 강제하는 것은 아니다. 설계도라는 것은 해당 클래스에 대강 그런 기능들을 넣을 것이라 정해두는 것이라 설계도라 부르는 것이다. 클래스는 관련된 함수(메서드)를 담는 콘테이너이자 일종의 카테고리다. 내부에 어떤 속성과 기능이 있을지 정의해두는 틀이자 대강 무엇을 담을지 정해두는 것이지 실제로 클래스 자체가 어떤 역할을 하는 것은 아니다. 일종의 물건들을..

프로그래밍의 3가지 패러다임

실무에서 주로 사용되는 주요 프로그래밍 패러다임은 3가지다.1. 절차지향 프로그래밍순차적인 처리 흐름대표 언어: C특징: 데이터와 함수의 분리, 순서대로 실행장점: 단순한 문제 해결에 효율적단점: 큰 프로그램의 유지보수 어려움2. 객체지향 프로그래밍객체 단위로 설계대표 언어: Java, C++특징: 캡슐화, 상속, 다형성장점: 재사용성, 유지보수 용이단점: 설계가 복잡할 수 있음3. 함수형 프로그래밍순수 함수와 불변성 강조대표 언어: Haskell, (최근) JavaScript특징: 상태 변경 없음, 부수효과 최소화장점: 테스트 용이, 병렬 처리 유리단점: 러닝커브가 높음실무 활용:대규모 엔터프라이즈: 객체지향웹 프론트엔드: 함수형 + 객체지향시스템 프로그래밍: 절차지향현대에는 이러한 패러다임들을 상황에..

카테고리 없음 2025.04.30

자바의 주요 메서드

개념 설명toString(): 객체를 문자열로 표현 (JS의 toString()과 유사)equals(): 객체의 내용 비교 (JS의 === 연산자와 유사)hashCode(): 객체의 해시코드 값 반환clone(): 객체의 복사본 생성valueOf(): 다른 타입의 값을 특정 타입으로 변환 (JS의 parseInt() 등과 유사)비유 설명toString(): 객체의 "명함" 같은 역할equals(): 두 물건의 내용물을 꺼내서 하나하나 비교하는 것clone(): 복사기로 문서를 복사하는 것과 유사사용 목적toString(): 객체 정보의 문자열 표현이 필요할 때equals(): 객체의 내용 비교가 필요할 때hashCode(): 해시 기반 컬렉션에서 사용clone(): 객체의 깊은 복사가 필요할 때value..

Java와 JavaScript 제어문(조건문, 반복문) 비교

1. Java와 JavaScript 제어문 비교표구분제어문 유형JavaJavaScript공통 기본 조건문if✓if-elseif-else if-elseswitch-case삼항 연산자 (? :)whiledo-whilefortry-catch-finallyinstanceofJava 전용switch expression✓ Enhanced for (for-each)synchronized 블록assertLabel 제어 (보편적)JavaScript 전용for...in ✓for...of널 병합 연산자 (??)옵셔널 체이닝 (?.)단축 평가 (&&, ∥)async/awaitPromise 체이닝Label 제어 (제한적)버전별 특징Java 12+ switch 표현식✓ Java 16+ 패턴 매칭✓ ES2020+ 널 병합 연산자 ..

카테고리 없음 2025.04.30