자바 16

빠른 입력 (Scanner vs BufferedReader)

알고리즘 문제를 풀 때 입력 속도는 매우 중요하다. 특히, 입력 데이터가 많으면 Scanner와 BufferedReader 중 어떤 것을 사용하느냐에 따라 실행 시간이 크게 차이 나서 시간 초과가 날 수도 있다.📌 결론부터 말하면?→ Java는 기본적으로 입력이 느리기 때문에 BufferedReader를 쓰는 것이 좋다!→ 단순한 문제에서는 Scanner도 괜찮지만, 대부분의 경우 BufferedReader + StringTokenizer 조합을 추천한다. 입력 방법속도장점단점Scanner느림공백 및 개행을 기준으로 쉽게 입력을 분리할 수 있음내부적으로 정규 표현식 기반 파싱을 하기 때문에 속도가 느림BufferedReader빠름버퍼를 활용하여 대량의 데이터를 빠르게 읽을 수 있음입력을 문자열로만 받기..

Java/알고리즘 2025.03.12

[Java] 참조란 무엇일까?

참조 (Reference) 는 프로그래밍에서 변수나 객체가 다른 객체나 값을 가리키는 방법을 의미한다.즉, 변수나 객체가 실제 데이터를 담고 있지 않고, 그 데이터가 저장된 위치(메모리 주소)를 가리키는 방식이다.참조를 이해하려면 값 자체와 그 값을 가리키는 주소의 차이를 이해하는 것이 중요하다. 1. 기본 데이터 타입과 참조값 타입 (Primitive Type)값 자체를 변수에 저장한다Int, double, char값이 그대로 저장되므로 다른 변수에 값을 할당할 때 값 복사가 이루어진다.int a = 10; // a 변수에 10 이라는 값을 저장int b = a; // b 변수에 a 라는 값을 복사 -> b 는 10  참조 타입 (Reference Type)실제 값을 저장한 메모리 위치(주소)를 저장한..

Java/기본 2024.11.14

[Java] 컴파일 오류? 런타임 오류?

컴파일 오류 (Compile-Time Error)시점: 코드를 작성하고 컴파일할 때 발생하는 오류발생 이유: 문법 오류나 잘못된 데이터 타입 사용 등 코드의 형식이나 문법이 맞지 않을 때 발생int number = "문자열"; // 정수형 변수에 문자열을 할당하려고 할 때컴파일러가 오류를 발견하고, 코드가 실행되지 않으며 수정이 필요하다런타임 오류 (Runtime Error)시점: 코드가 컴파일된 후, 프로그램이 실행중일 때 발생하는 오류발생 이유: 컴파일 과정에서는 문제가 없었지만, 실행 중에 예기치 못한 상황이 발생했을 때 나타난다. 예를 들어, 배열의 범위를 벗어난 인덱스에 접근하려 할 때, 또는 null 값을 찾모하려 할 때 발생한다.String text = null;System.out.print..

Java/기본 2024.11.14

[Java] 순환참조

순환참조객체나 클래스가 서로를 참조하는 상황이 계속 순환되는 구조를 말한다.예를 들어, 클래스 A 가 클래스 B 를 참조하고, 클래스 B 도 다시 클래스 A 를 참조하게 되면, 두 클래스가 서로를 필요로 하게 되어 순환 참조가 발생한다.예를 들어보면,1. 클래스 간 순환 참조class A { private B b; public A(B b) { this.b = b; }}class B { private A a; public B(A a) { this.a = a; }} 여기서 A 와 B 는 서로를 생성자에서 참조하므로, A 를 생성하려면 B 가 먼저 필요하고, B 를 생성하려면 A 가 필요하다. 이 때문에 객체를 생성하는 과정에서 무한 루프가 생기거나 ..

Java/기본 2024.11.14

[Java] @NoArgsConstructor, @AllArgsConstructor

Lombok 생성자 어노테이션 @NoArgsConstructor 과 @AllArgsConstructor@NoArgsConstructor@NoArgsConstructor 는 매개변수가 없는 기본 생성자(default constructor)를 생성한다. 필드를 초기화하지 않고 객체를 생성할 때 유용하다. 예를 들어, Spring과 같은 프레임워크에서 빈(Bean)으로 객체를 등록할 때 자주 사용된다.import lombok.NoArgsConstructor;@NoArgsConstructorpublic class Example { private String name; private int age;} 위 코드는 Example 클래스에 매개변수가 없는 기본 생성자를 추가한다. new Example() ..

Java/기본 2024.11.12

[Java] 트랜잭션

Java에서 트랜잭션(Transaction)은 데이터베이스 상태를 관리하기 위한 중요한 개념이다. 트랜잭션은 여러 작업을 하나의 논리적인 작업 단위로 묶어주며, 모든 작업이 성공해야지만 전체 작업이 커밋(commit)되고, 중간에 하나라도 실패하면 롤백하여 데이터의 일관성을 유지한다. 1. 트랜잭션의 ACID 속성원자성(Atomicity) : 트랜잭션 내 모든 작업이 하나의 단위로 실행되어야 하며, 일부만 성공하거나 실패해서는 안된다. 즉, 증간에 오류가 발생하면 트랜잭션 전체가 롤백된다.일관성(Consistency) : 트랜잭션이 완료되면 데이터베이스가 일관된 상태를 유지해야 한다.고립성(Isolation) : 트랜잭션 간 서로 독립적으로 실행되며, 트랜잭션이 완료되기 전까지 다른 트랜잭션이 중간 상태..

Java/기본 2024.11.11