✅ 객체지향 프로그래밍의 목표재사용성을 높이고 중복을 제거하는 것!📌 오버로딩 (Overloading)한 클래스 내에서 같은 이름의 메서드를 여러 개 정의하는 것.✅ 오버로딩의 조건메서드 이름이 같아야 한다.매개변수의 개수 또는 타입이 달라야 한다.❌ 반환 타입은 오버로딩에 영향을 주지 않는다.class OverloadingTest { void print(int a) { System.out.println("정수: " + a); } void print(double a) { System.out.println("실수: " + a); } void print(String str) { System.out.println("문자열: " + str); ..
java
📌 JVM의 메모리 구조메서드 영역(Method Area)클래스에 대한 정보(클래스 데이터)를 저장하는 공간.힙(Heap)생성된 인스턴스(객체)들이 저장되는 공간.호출 스택(Call Stack)메서드 실행 시 할당되는 메모리 공간.메서드가 호출되면 스택에 메모리가 할당되고, 실행이 끝나면 반환됨.스택의 가장 위에 있는 메서드가 현재 실행 중인 메서드.아래에 있는 메서드가 위의 메서드를 호출한 메서드. 📌 메서드 호출 시 매개변수 전달 방식기본형 매개변수(Primitive Type)→ 값이 복사되어 전달됨. (메서드 내에서 변경해도 원본 변수는 변경되지 않음.)참조형 매개변수(Reference Type)→ 객체의 주소가 복사되어 전달됨. (메서드 내에서 변경하면 원본 객체도 변경됨.)예제: 기본형 매개..
📝 객체지향 언어 (OOP: Object-Oriented Programming) 🚀✅ 캡슐화 (Encapsulation): 데이터를 보호하고 메서드를 통해 접근✅ 상속 (Inheritance): 기존 클래스의 기능을 확장하여 새로운 클래스 생성✅ 다형성 (Polymorphism): 하나의 인터페이스로 여러 개의 동작 수행 ✔ 코드의 재사용성이 높다 → 기존 코드를 재활용하여 중복을 줄일 수 있음✔ 코드의 관리가 용이하다 → 클래스와 객체 단위로 코드가 구조화됨✔ 신뢰성이 높은 프로그래밍이 가능하다 → 캡슐화, 상속, 다형성 등의 개념으로 안정성 향상 📌 클래스(Class)와 객체(Object)클래스: 객체를 정의한 것 → 객체를 생성하는 틀 🏗객체: 실제로 존재하는 사물 또는 개념 → 클래스를 기..
🔹 참조형 배열 (객체 배열)✅ 배열에 저장되는 것은 객체의 주소!✅ "객체 배열(Object Array)" 이라고도 부름🔹 예제: String 배열String[] names = new String[3]; // String 객체 배열 생성names[0] = new String("Alice");names[1] = new String("Bob");names[2] = new String("Charlie");// 배열 요소 출력for (int i = 0; i 배열에는 문자열 자체가 아닌 주소값이 저장됨! 📝 String 클래스의 주요 메서드💡 문자열(String)은 객체이며, 다양한 메서드를 제공메서드설명예제char charAt(int index)특정 위치(index)의 문자 반환"Hello".cha..
🔹 배열이란?같은 타입의 여러 변수를 하나의 묶음으로 다루는 것int[] score = new int[5];score는 배열을 다루는 참조 변수일 뿐, 저장 공간은 아니다. 🛠️ 배열 선언 방법✅ 두 가지 방법 가능타입[] 변수이름; 타입 변수이름[];📌 배열의 특징1️⃣ 인덱스(Index)배열 요소마다 붙는 일련번호범위: 0 ~ (배열 길이 - 1)배열 길이 0도 가능 (Java의 특징)2️⃣ 배열 길이 확인 방법배열이름.length 사용 권장!직접 숫자 입력 ❌ (유지보수 어려움)for (int i = 0; i 🏗️ 배열 공간 부족 시 확장 방법1️⃣ 더 큰 배열 생성2️⃣ 기존 배열의 값 복사int[] score = new int[] {50, 60, 70, 80, 90}; int[] s..
🎛 switch 문✔ 단 하나의 조건식으로 여러 경우의 수를 처리할 수 있음✔ if-else 문보다 간결하여 가독성이 좋음✔ 일치하는 case가 없을 경우, default 문 실행✅ switch 문 기본 구조switch(조건식) { case 값1: // 실행 코드 break; case 값2: // 실행 코드 break; default: // 실행 코드 (모든 case와 일치하지 않을 때)}💡 break문을 사용하지 않으면 다음 case로 계속 실행됨! ✅ switch 문 예제 (계절 출력) import java.util.Scanner;public class SwitchExample { public static voi..
🔄 쉬프트 연산자 (Shift Operator)✔ 비트 단위로 왼쪽(>), 논리적 오른쪽(>>>)으로 이동✔ 이동하면서 저장 범위를 벗어난 값들은 버려지고, 빈자리는 0 또는 부호 비트로 채움✔ 곱셈(*) 또는 나눗셈(/)을 빠르게 수행할 수 있음 1️⃣ 왼쪽 쉬프트 (x 비트가 왼쪽으로 n칸 이동하며, 빈자리는 0으로 채움public class ShiftExample { public static void main(String[] args) { int num = 5; // 0000 0101 (2진수) int result = num ✅ 5 2️⃣ 오른쪽 쉬프트 (>>)x >> n 은 x / 2^n 과 동일한 결과비트가 오른쪽으로 n칸 이동하며, 부호 비트(가장 왼쪽 비트..
프로그래밍에서 연산자(Operator)는 연산을 수행하는 기호이며,피연산자(Operand)는 연산자의 작업 대상(변수, 상수, 리터럴 등)이다.식을 계산하여 결과를 얻는 것을 **"식의 평가(Evaluation)"**라고 한다. ✅ 연산자의 종류1️⃣ 산술 연산자: +, -, *, /, %2️⃣ 비교 연산자: ==, !=, >, =, 3️⃣ 논리 연산자: &&, ||, !4️⃣ 대입 연산자: =, +=, -=, *=, /=, %=🎯 연산자의 우선순위 & 결합규칙1️⃣ 우선순위: 산술 > 비교 > 논리 > 대입 (대입 연산자가 가장 마지막에 수행됨)2️⃣ 결합규칙단항(1) > 이항(2) > 삼항(3) → 단항 연산자가 이항 연산자보다 우선순위가 높음왼쪽에서 오른쪽으로 연산 수행 (단, 단항 연산자와 대입..