Java 29

JAVA 기초정리 - 다형성 (Polymorphism)

1. 다형성이란?다형성이란하나의 참조 변수로 여러 종류의 객체를 다루는 것의 의미 자바에서는 부모 타입 참조 변수로 자식 객체를 참조할 수 있는 것을 의미한다.Burger b = new BulgogiBurger(); 중요한 특징부모 타입 → 자식 객체 참조 가능 (O)자식 타입 → 부모 객체 참조 불가능 (X)Burger b = new BulgogiBurger(); // 가능BulgogiBurger b = new Burger(); // 불가능 왜 이런 구조일까?자식 객체는 부모보다 기능이 더 많다.Burger (부모) ├─ eat() BulgogiBurger (자식) ├─ eat() ├─ grill() 그래서기능을 “줄이는 것”은 가능 (OK)없는 기능을 “늘리는 것처럼 쓰는 것”은 불가능 (X)?..

Java 2026.06.12

코드카타를 풀다가 알게 된 int와 double의 함정

오늘 코드카타 문제를 풀다가 예상과 다른 결과가 나와서 한참 고민함.. 😥문제는 정수 2개를 나눈뒤 1000을 곱한 후 그 값을 int 변수에 저장하는 것이었음.예) 1 / 2 * 1000 = 500double divide = num1 / num2 * 1000; // num1과 num2는 int 매개변수로 주어짐 나는 divide가 double 타입이니까 소수점 계산이 자연스럽게 될 줄 알았는데, 그게 아니었다! ㅠㅠ 왜 원하는 결과가 나오지 않았을까?int num1 = 1;int num2 = 2;double divide = num1 / num2 * 1000; 위 코드를 실행하면,자바는 먼저 아래를 계산한다.num1 / num2 그런데 num1과 num2가 모두 int이기 때문에 결과도 int로 계..

TIL 2026.06.10

JAVA 기초정리 - 다형성과 예외처리

오늘은 객체지향의 핵심 개념인 다형성(Polymorphism) 과 프로그램의 안정성을 높여주는 예외처리(Exception Handling) 에 대해 정리해보려고 함!1. 다형성(Polymorphism)다형성이란?하나의 타입으로 여러 객체를 다룰 수 있는 것 객체지향 프로그래밍의 대표적인 특징 중 하나임.예를 들어 강아지와 고양이가 모두 동물이라면,Animal animal1 = new Dog();Animal animal2 = new Cat(); 처럼 부모 타입인 Animal 하나로 여러 자식 객체를 다룰 수 있음. 1) 업캐스팅 (Up Casting)자식 객체를 부모 타입으로 다루는 것Animal animal = new Dog(); 사실상 다형성의 시작점이라고 볼 수 있음.특징자동으로 형변환됨안전함부모가 ..

Java 2026.06.09

JAVA 기초 정리 - 객체지향 (final, 인터페이스, 캡슐화, 상속)

finalfinal 변수변수에 final을 붙이면 값을 한 번만 할당할 수 있다.final int a = 1;a = 2; // 오류 발생즉, 한 번 저장된 값은 변경할 수 없다. final 클래스클래스에 final을 붙이면 다른 클래스가 상속받을 수 없다.public final class Animal {}public class Dog extends Animal { } // 오류 final 메서드메서드에 final을 붙이면 자식 클래스에서 오버라이딩할 수 없다.public final void move() { System.out.println("이동");}상수(Constant)상수는 프로그램 실행 중 절대 변경되면 안 되는 값이다.자바에서는 상수를 대문자로 작성하는 것이 관례이다.상수는 보통 stati..

Java 2026.06.08

JAVA 기초 정리 - static과 인스턴스 멤버란?

자바를 공부하다 보면 static이라는 키워드를 자주 만나게 된다.처음에는 "왜 객체도 안 만들었는데 사용할 수 있지?"라는 생각이 들었는데, 정리해보니 생각보다 단순한 개념이었다.static이란?static은 클래스에 소속된 변수나 메서드를 만들 때 사용하는 키워드이다.일반적인 변수와 메서드는 객체를 생성해야 사용할 수 있지만, static이 붙은 변수와 메서드는 객체를 만들지 않아도 사용할 수 있다.public class Person { // static 변수 static int population = 0; // static 메서드 static void printPopulation() { System.out.println("현재 인구수: " + population);..

Java 2026.06.05

[Java] Scanner 사용 시 nextInt(); 주의점!

간단한 계산기 만드는 과제 진행 중 다음과 같은 에러를 만났다.사칙연산 기호를 입력해야하는데, 입력하기 전에 번째 숫자를 입력하라는게 바로 나온것임 ㅠㅠ // num1, num2, 사칙연산 입력받기System.out.print("첫번째 숫자를 입력하세요: ");num1 = sc.nextInt();System.out.print("사칙연산 기호를 입력하세요(+, -, *, /): ");String cal = sc.nextLine();System.out.print("두번째 숫자를 입력하세요: ");num2 = sc.nextInt(); 이게 당시 내 코드였는데..처음에는 뭐가 잘못됐는지 몰랐다 ㅠㅠ알고보니 nextInt()에 숫자 입력 후 뒤에 엔터는\n 개행문자로 인식해 그 다음줄에 나오는 nextLine(..

트러블슈팅 2026.06.04

자바입문 첫 코드카타 썰 푼다..

오늘은 코드카타라는 걸 처음 해봤다. 코드카타란?반복되는 연습이라는 뜻을 가진 `Kata` 와연결하여 "매일매일 코딩을 반복하여 연습한다"는 의미라고 한다. 매일 코드카타 시간을 가지면서자바랑 더 친해지길 기대해본다! 처음 풀어본 문제는 "두 수의 차 구하기" 였음.정수 `num1`과 `num2`가 주어질때, `num1`에서 `num2`를 뺀 값을 return하도록 함수를 완성하는 간단한 거였다. 여기에 제한사항으로-50000 있었지만 나는 무시했음..ㅋㅋㅋㅋ아 그냥 범위가 넓게 주어지나보다(?) 라고만 생각함.. 그리고 내가 푼 코드class Solution { public int solution(int num1, int num2) { int minus = num1 - num2..

TIL 2026.06.02

JAVA 기초 정리 - 래퍼 클래스(Wrapper Class)

래퍼 클래스(Wrapper Class)란?래퍼 클래스는:"기본 자료형을 객체(Object) 형태로 감싸는 클래스"이다. 쉽게 말하면:int 같은 기본형 데이터를객체처럼 사용할 수 있게 포장해주는 것이라고 이해할 수 있다. 예를 들어:int a = 10;은 기본형 변수이고,Integer num = 10;은 래퍼 클래스를 사용한 객체 형태이다.1. 기본 자료형(Primitive Type)자바에는 기본 자료형들이 존재한다.기본 자료형 종류booleancharbyteshortintlongfloatdouble이 자료형들은:값을 직접 저장하고속성이나 기능(메서드)을 가지지 않는다.2. 참조형(Reference Type)객체를 저장하는 변수는 참조형 변수라고 부른다.참조형 변수는 실제 데이터를 직접 저장하는 것이 아..

Java 2026.05.21

JAVA 기초 정리 - JVM 메모리 영역

1. JVM 메모리 구조JVM 메모리 구조는 크게 3가지 영역으로 나뉜다.Method AreaStack AreaHeap Area각 영역은 서로 다른 역할을 담당한다.1) Method AreaMethod Area는:"자바 파일들의 정보가 저장되는 공간"이라고 이해할 수 있다. 쉽게 비유하면:책들이 꽂혀 있는 책장같은 느낌이다. 이 영역에는:클래스 정보메서드 정보static 데이터등이 저장된다. 즉, 작성한 자바 파일들의 정보가 JVM 안에 올라가는 공간이라고 볼 수 있다.2) Stack AreaStack Area는 메서드 실행 정보를 저장하는 공간이다. 쉽게 말하면:"실행 중인 작업들이 순서대로 쌓이는 공간"이다. 비유하자면:접시를 차곡차곡 쌓아두는 구조와 비슷하다.Stack 특징메서드가 실행되면 Stac..

Java 2026.05.20