java 13

nextInt() 다음에 nextLine()이 씹히는 이유

🔍 nextInt() 다음에 nextLine()이 씹히는 이유Scanner 를 쓰다보면 분명히 코드를 맞게 짰는데, 입력을 받지도 않고 그냥 넘어갈 때가 있습니다.그 이유가 너무 궁급해서 한번 공부해봤습니다. 🤣제가 만났던 현상..😱아래 코드를 실행하면 이상한 일이 벌어집니다.Scanner sc = new Scanner(System.in);System.out.print("나이 입력: ");int age = sc.nextInt();System.out.print("이름 입력: ");String name = sc.nextLine(); // 입력창 안뜸(넘어가짐)System.out.println("나이: " + age);System.out.println("이름: " + name);📥 출력나이 입력: 25..

Programming/Java 2026.03.13

Husky로 Java 자동 포맷팅 설정하기 (clang-format)

🐾 macOS + Husky로 Java 자동 포맷팅 설정하기 (clang-format)커밋할 때마다 코드 스타일 맞추는 게 은근히 번거롭더라고요.그래서 Husky와 clang-format을 연동해서 커밋 전에 자동으로 포맷팅되게 세팅해봤습니다 😀저도 처음 설정할 때 "이게 왜 안 되지…?" 하면서 커피를 세 잔이나 마셨습니다 ☕️🤣그래도 한 번만 세팅해 두면 이후에는 자동 포맷 천국이 열립니다 😎🛠 프로젝트 초기화프로젝트 루트에서 아래 명령을 실행합니다.npm init -y실행하면 package.json이 생성됩니다.Node 프로젝트가 아니어도 괜찮습니다.Husky가 npm 패키지 기반 도구라 이 파일이 필요합니다.🐶 Husky 설치1️⃣ Git Hook을 쉽게 관리해 주는 Husky를 설치합..

추상 클래스(Abstract Class)

🧱 자바 추상 클래스 정리자바에서 추상 클래스는 말 그대로 미완성 클래스입니다.완전히 구현되지 않은 추상 메서드를 포함하고 있으며,직접 객체 생성은 불가능하고, 상속을 통해 완성해야 사용할 수 있어요.📌 추상 클래스란?추상 클래스는 공통된 특징을 묶어낸 설계도입니다.abstract class Animal { abstract void sound(); // 추상 메서드}abstract 키워드를 붙이면 클래스나 메서드를 추상으로 만들 수 있어요.추상 메서드는 선언만 존재하고, 내용(구현부)은 없음추상 클래스는 직접 new로 인스턴스 생성할 수 없습니다.🧠 추상화, 구체화 개념 간단 요약용어의미추상여러 클래스에서 공통된 특징을 뽑아냄추상화공통 부분을 따로 떼어내서 조상 클래스로 만드는 작업구체화추상 ..

Programming/Java 2025.05.14

Java의 조건문

🌈 자바의 조건문🧭 자바의 제어 흐름이란?자바 프로그램은 기본적으로 위에서 아래로 순차적으로 실행됩니다.하지만! 때때로 프로그램은 특정 조건에 따라 분기하거나, 어떤 동작을 반복해야 하죠.이럴 때 사용하는 것이 바로 제어 흐름 문법입니다.✅ 1. if 문 – 조건이 맞으면 실행!가장 기본적인 조건문입니다.if (조건식) { // 조건이 true일 때 실행할 코드}📌 예제 1: 온도에 따라 행동 바꾸기int temp = 30;if (temp >= 28) { System.out.println("날씨가 덥네요! 에어컨을 켜요.");}👉 온도가 28도 이상이면 에어컨을 켜는 메시지를 출력합니다.⚠️ 괄호 {} 생략?if (temp >= 28) System.out.println("더워요!"..

Programming/Java 2025.05.01

StringBuilder Vs StringBuffer

🎯 StringBuilder & StringBuffer란?문자열을 수정 가능(mutable) 하게 만들어주는 자바 클래스입니다.String은 한 번 만들어지면 수정할 수 없지만,StringBuilder와 StringBuffer는 기존 문자열을 직접 수정할 수 있어요.🔥 String과 차이점은?📌 기본 개념 비교구분StringStringBuilder / StringBuffer변경 가능 여부❌ 불변 (immutable)✅ 가변 (mutable)메모리 사용새 객체 계속 생성기존 객체 수정성능수정 많으면 느림빠름 (수정에 최적화)✨ 쉽게 말하면String은 매번 새 종이에 새로 쓰는 느낌.StringBuilder/StringBuffer는 기존 종이에 고쳐 쓰는 느낌! 🏎️ StringBuilder..

Programming/Java 2025.04.29

접근 제어자

🔐 자바 접근 제어자자바를 공부하다 보면 public, private, protected... 이런 키워드들이 계속 나오는데정확히 어디까지 접근이 되는 건지 헷갈릴 때가 있습니다. 잊지 않게 오늘 한번 정리해 보겠습니다 ✨🤷 접근 제어자란?접근 제어자는 클래스나 클래스 멤버(필드, 메서드 등)에 "누가 접근할 수 있는가?" 를 정해주는 키워드입니다.🤔 쉽게 생각해보자면,건물 출입증 같은 개념입니다.등급에 따라 들어갈 수 있는 구역이 달라지는 것처럼, 접근 제어자도 등급에 따라 접근 가능한 범위가 달라집니다.🛡️ 접근 제어자의 종류접근 제어자접근 가능 범위private같은 클래스 내부 에서만 접근 가능(default)같은 패키지 에서 접근 가능 (별도 키워드 없이 선언된 경우)protected같은 ..

Programming/Java 2025.04.17

자바의 `this` & `super`

🌟 this 와 super 완전 정복이름도 비슷하고 헷갈리는 이 둘!하지만 알고 보면 각자의 역할이 분명한 핵심 키워드랍니다 😎지금부터 아주 쉽게, 차근차근 설명드릴게요 💡☝🏻 this 란?현재 객체 자신을 참조하는 키워드예요. 클래스 내부에서 쓰일 수 있는 숨겨진 참조 변수라고 생각하시면 됩니다.✅ 언제 사용할까요?지역변수와 멤버변수의 이름이 같을 때 구분하려고!자기 자신을 가리키는 참조가 필요할 때✏️ 예제public class Book { String title; public void setTitle(String title) { this.title = title; }}구분설명this.title멤버 변수 (클래스에 선언된 변수)title (오른쪽)매개변수 (메서드..

Programming/Java 2025.04.12

자바 생성자(Constructor)

📚 자바 생성자 (Constructor)자바를 공부하다 보면 클래스마다 꼭 등장하는 녀석이 있습니다!객체를 만들 때 자동으로 호출되는 메서드, 어디서 본 것 같지 않으신가요?이번 글에서 생성자에 대한 것을 전체적으로 정리해 보았습니다!!🧠 생성자란?자바에서 객체를 생성할 때 자동으로 호출되는 메서드입니다.객체가 어떤 값을 가지고 시작할지 정해주는 초기화 도구예요.일반 메서드처럼 생겼지만, 리턴 타입이 없고 이름은 클래스명과 동일해야 해요.객체가 만들어질 때 실행되는 특별한 메서드! 라고 기억하시면 됩니다.🛠 생성자의 2가지 규칙클래스 이름과 완전히 같아야 한다리턴 타입이 없어야 한다 (void도 금지!)⚠️ 컴파일러는 리턴 타입이 보이면 생성자가 아닌 일반 메서드로 인식합니다.🔨 생성자 종류🔹 ..

Programming/Java 2025.04.11

Java의 모든 연산자

✨ 자바 연산자 완전 정리 (Java Operators)자바(Java)에서 변수 선언과 초기화를 배웠다면, 이제는 변수를 어떻게 다루는지 아는 것이 중요하죠. 그 핵심이 바로 연산자(Operator) 입니다!🔧 연산자란?연산자란 특정 작업을 수행하는 기호 또는 기법으로, 하나 이상의 피연산자(operand)를 계산하여 결과를 반환합니다.🧠 연산자 우선순위 한눈에 보기우선순위연산자 종류예시1Postfixa++, a--2Unary++a, --a, +a, -a, ~, !3Multiplicative*, /, %4Additive+, -5Shift>, >>>6Relational, =, instanceof7Equality==, !=8Bitwise AND&9Bitwise XOR^10Bitwise OR|11Logic..

Programming/Java 2025.04.10

변수 섀도잉(Shadowing)

겉에 있는 줄 알았는데, 안에 또 있다?👇👇🏼👇🏻그래서 우리는 this를 써요🧠 변수 섀도잉이란?같은 이름의 변수가 중첩된 범위(scope)에 다시 선언되어 바깥 변수를 가리는 현상즉, 밖에 선언한 변수와 안쪽(함수나 블럭 등)에 선언한 변수 이름이 같을 때,가까운(안쪽) 변수가 우선시되어 바깥 변수는 "섀도잉" 당합니다.⁉️ 왜 섀도잉이 문제일까?문제 상황설명🤯 값이 잘못 들어감의도한 바깥 변수가 아니라 안쪽 지역 변수에 값이 들어감🧪 디버깅 어려움"값을 설정했는데 왜 적용이 안 되지?" 하는 상황 발생👀 가독성 저하같은 이름이 중복되면 읽는 사람도 혼란✨ 섀도잉 in 4개 언어 + 해결 방법 정리🟨 Java: this 키워드로 해결public class User { String..