Programming/Java 21

Java hashcode()에 대해

☕ Java hashCode() 이해하기hashCode()를 override 하라길래 하긴 했는데... 대체 왜 하는 건지 몰랐습니다.파고들다 보니 생각보다 중요한 개념이어서 정리해 봤습니다 😅💡 hashCode()를 제대로 이해하려면 해시 테이블을 먼저 알면 좋습니다. 👉 해시 테이블이란?📦 hashCode()란?hashCode()는 객체의 해시 코드 값을 반환하는 메서드입니다.HashMap, HashSet 같은 해시 기반 컬렉션은 이 값을 사용해서 데이터를 저장할 위치를 결정합니다.🗄️ 서랍장으로 비유해볼까요?수만 개의 물건을 정리한다고 생각해볼게요.아무 규칙 없이 넣으면 찾을 때 전부 뒤져야 하지만, 서랍 번호가 있다면 해당 서랍만 열면 됩니다.hashCode()는 바로 "이 물건은 몇 번..

Programming/Java 2026.03.16

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

JAVA 문자열(String) 메서드 정리

☕️ JAVA 문자열(String) 메서드 정리1️⃣ 문자열 길이, 비교, 포함메서드설명예시length()문자열 길이 반환"Java".length() → 4equals(String s)문자열 내용이 같은지 비교 (대소문자 구분)"java".equals("java") → trueequalsIgnoreCase(String s)대소문자 무시 비교"Java".equalsIgnoreCase("java") → truecontains(String s)특정 문자열 포함 여부"Hello World".contains("World") → truestartsWith(String s)특정 문자열로 시작하는지 확인"abcde".startsWith("abc") → trueendsWith(String s)특정 문자열로 끝나는지 확인..

Programming/Java 2025.10.09

인터페이스 (Interface)

🧩 자바 인터페이스 정리!자바에서 인터페이스는 규칙을 정해 놓은 틀입니다.“이런 기능을 만들 거라면, 이런 이름과 모양으로 꼭 만들어 주세요!”라고 강제하는 역할을 해요.✅ 직접 기능을 만들진 않아요.✅ “이런 메서드를 꼭 만들어야 한다”는 형식만 정합니다.✅ 실제 구현은 그 인터페이스를 ‘구현(implements)’하는 클래스가 합니다.🔧 인터페이스란?오직 추상 메서드와 상수만 포함 가능한 구조📌 (단, Java 8 이후부터는 default, static 메서드도 허용)interface InterfaceEx { public static final int NUM = 4; public abstract void method();}🙋‍♀️ 사실 public static final 과 publ..

Programming/Java 2025.05.14

추상 클래스(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

다형성(Polymorphism)이 뭔가요?

🎯 다형성이란 무엇인가?여러 가지 형태를 가질 수 있는 능력객체지향 프로그래밍(OOP)에서 다형성은 같은 타입(조상 타입)의 참조변수로다양한 자식 객체들을 조작할 수 있는 능력을 의미합니다.즉,부모 타입 변수로 여러 자식 타입 객체를 다룰 수 있다!Animal myPet = new Dog();Animal yourPet = new Cat();myPet, yourPet 모두 Animal 타입이지만 실제 객체는 Dog, Cat입니다.🛠️ 다형성의 동작 방식조상 타입 참조 → 자손 객체 참조Parent p = new Child();Parent 타입 참조변수 p가Child 타입 인스턴스를 가리킵니다.🛎️ 메서드 호출 흐름 (가상 메서드, 동적 바인딩)컴파일 시점: 참조변수 타입 기준으로 메서드 존재 여부 ..

Programming/Java 2025.04.30

StringBuilder Vs StringBuffer

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

Programming/Java 2025.04.29

문자열 String Class

📃 문자열 String🎯 String이란?String은 문자의 집합을 표현하는 참조형(객체형) 데이터 타입입니다. ⚠️ 주의: 문자 하나(char)와 문자열(String)은 다릅니다!char letter = 'A'; // 문자 하나String word = "Apple"; // 문자열 (객체)🔮 String 객체의 특징구분설명불변성(Immutable)한 번 만들어진 문자열은 수정할 수 없다.메모리 최적화동일한 문자열 리터럴은 메모리 공간을 공유한다.참조형 데이터기본형이 아니라 객체로 관리된다.⚙️ String 클래스의 구조public final class String implements java.io.Serializable, Comparable, CharSequence { privat..

Programming/Java 2025.04.29

Java의 반복문과 흐름 제어 키워드!

🔁 반복문과 흐름 제어 키워드🔁 반복문이란? 같은 동작을 여러 번 하고 싶을 때 사용하는 프로그래밍의 마법 도구!🎯 이런 상황, 한 번쯤 해보셨죠? 👩‍🏫 "1부터 10까지 숫자 출력해봐!" 💻 처음에는 이렇게 쓸 수도 있어요System.out.println(1);System.out.println(2);System.out.println(3);...System.out.println(10);😵‍💫 10번은 그렇다 쳐도,100번? 1000번? 1억번? 이걸 매번 손으로 써야 한다면?정신이 아득해지겠죠..? 저는 벌써부터 다 손으로 칠 생각을 하니까... 하아.. 🤯💢그래서 등장한 해결책이 바로 반복문!🧮 기본 for 문for (초기식; 조건식; 증감식) { // 반복 실행할 코드}..

Programming/Java 2025.04.23