Stay Hungry Stay Foolish
728x90

☕ Backend/Java 22

[Java] 래퍼 클래스(Wrapper Class)

📦 자바 래퍼 클래스(Wrapper Class): 캐싱과 오토박싱 원리 총정리목차1. 자바 래퍼 클래스(Wrapper Class)란?2. 자바 래퍼 클래스 캐싱 (Wrapper Class Caching)3. 오토박싱(Autoboxing) & 언박싱(Unboxing)4. 주의 사항 및 성능 이슈 (== vs .equals)5. 추가 개념: 신택스 슈가 (Syntax Sugar)1. 자바 래퍼 클래스(Wrapper Class)란?자바에는 int, char, double과 같은 기본 타입(Primitive Type)이 있습니다. 하지만 객체 지향 프로그래밍을 하다 보면 이 기본 타입들을 '객체'로 다뤄야 할 때가 있습니다(예: 컬렉션 프레임워크인 ArrayList에 저장할 때). 이때 기본 타입의 데이터를 ..

☕ Backend/Java 2026.04.28

[Java] 가비지 컬렉터 (Garbage Collector, GC)

가비지 컬렉터 (Garbage Collector, GC)와 메모리 관리목차1. 가비지 컬렉터란?2. 왜 필요한가? (메모리 누수 방지)3. 언어별 메모리 관리 체계4. 가비지 컬렉터의 한계와 동작 원리5. 메모리 관리 실천 꿀팁1. 가비지 컬렉터란?프로그램이 동적으로 할당했던 메모리 영역(Heap) 중에서 더 이상 사용하지 않는 객체를 찾아 자동으로 해제해주는 엔진입니다.2. 왜 필요한가?메모리 누수(Memory Leak)를 방지하기 위함입니다. 사용이 끝난 메모리를 해제하지 않고 계속 들고 있으면, 시스템의 메모리가 고갈되어 프로그램이 멈추거나 느려집니다. 가비지 컬렉터는 개발자가 실수로 메모리 해제를 빠뜨려도 대신 처리해주어 프로그램의 안정성을 높여줍니다.3. 언어별 메모리 관리 체계구분특징Manag..

☕ Backend/Java 2026.04.02

[Java] 객체지향 프로그래밍(OOP)

💎 객체지향 프로그래밍(OOP) 핵심 4대 원칙과 설계 철학목차1. 객체지향이란? (클래스와 객체)2. OOP의 4대 핵심 원칙 (캡슐화·상속·다형성·추상화)3. 결정적 차이: 상속(is-a) vs 인터페이스(can-do)4. 핵심 요약 및 카테고리 추천1. 객체지향 프로그래밍(OOP)이란?객체지향이란 프로그램을 단순한 명령어의 집합이 아니라, 서로 상호작용하는 '객체'들의 모임으로 파악하는 방법론입니다. 현실 세계의 사물을 소프트웨어 안으로 옮겨온다고 생각하면 쉽습니다.🏗️ 클래스 (Class)객체를 만들기 위한 설계도입니다.(예: 붕어빵 틀, 자동차 설계도)🚗 객체 (Object / Instance)설계도를 바탕으로 실체화된 결과물입니다.(예: 갓 구운 붕어빵, 실제로 달리는 자동차)2. OOP..

☕ Backend/Java 2026.04.02

[자바 중급] 11. Generic 1

Generic자바에서 제네릭(generics)은 클래스, 메소드, 인터페이스를 선언할 때 데이터 타입을 파라미터로 받을 수 있게 해주는 기능이다. 제네릭을 사용하면 코드의 재사용성과 안정성을 높일 수 있다. 주요 특징은 다음과 같다.컴파일 타임 타입 체크제네릭은 컴파일 시점에 타입을 체크하여, 잘못된 타입이 사용되는 것을 방지한다. 예를 들어 List으로 선언하면 이 리스트에는 오직 String 타입만 담을 수 있다.타입 안정성제네릭을 사용하면 캐스팅(casting)을 피할 수 있어 타입 안정성을 높일 수 있다. 예를 들어, 제네릭을 사용하지 않는 List에서 객체를 꺼낼 때는 (String)처럼 캐스팅해야 하지만, 제네릭을 사용하면 그런 과정이 필요 없다.코드 재사용성여러 타입에서 사용할 수 있는 코드..

☕ Backend/Java 2024.11.06

[자바 중급] 10. 예외 처리 2

코드를 통해 오류 발생 시뮬레이션과, 예외 처리 흐름을 알아보자.  사용자의 입력을 통해 오류를 발생시킨 후, 예외를 따로 처리하지 않고 밖으로 던진다.  오류 발생 시뮬레이션 1️⃣ 1. 어떤 종류의 오류가 발생했는지 담는 클래스public class NetworkClientExceptionV2 extends Exception { private String errorCode; public NetworkClientExceptionV2(String errorCode, String message) { super(message); //어떤 오류가 발생했는지 담는다. this.errorCode = errorCode; } //에러 코드를 조회할 수 있게 추가 p..

☕ Backend/Java 2024.10.22

[자바 중급] 09. 예외 처리 1

예외 처리가 필요한 이유외부 서버와 통신할 때 다음과 같은 다양한 문제들이 발생할 수 있다.네트워크 오류 등으로 인해 외부 서버와 연결에 실패데이터 전송에 문제가 발생 자바의 예외 처리 메커니즘 제공자바는 프로그램 실행 중에 발생할 수 있는 예상치 못한 상황, 즉 예외(Exception)를 처리하기 위한 메커니즘을 제공한다. 이는 프로그램의 안정성과 신뢰성을 높이는 데 중요한 역할을 한다.  자바의 예외 처리는 다음 키워드를 사용한다. 그리고 예외를 다루기 위한 예외 처리용 객체들을 제공한다. trycatchfinallythrowthrows 예외 계층 구조  Exception : 체크 예외애플리케이션 로직에서 사용할 수 있는 실질적인 최상위 예외이다.Exception과 그 하위 예외는 모두 컴파일러가 체..

☕ Backend/Java 2024.10.21

[자바 중급] 08. 중첩 클래스, 내부 클래스 2

지역 클래스(Local class)지역 클래스는 내부 클래스의 종류 중 하나로 내부 클래스의 특징을 그대로 가진다. 따라서 지역 클래스도 바깥 클래스의 인스턴스 멤버에 접근할 수 있다.class Outer { public void process() { //지역 변수 int localVar = 0; //지역 클래스 class Local {...} Local local = new Local(); }}  특징지역 클래스는 지역 변수처럼 코드 블럭 안에 클래스를 선언한다.지역 클래스는 지역 변수에 접근할 수 있다.자신의 인스턴스 변수에 접근할 수 있다.자신이 속한 코드 블럭의 지역 변수 혹은 매..

☕ Backend/Java 2024.10.11

[자바 중급] 07. 중첩 클래스, 내부 클래스 1

중첩 클래스, 내부 클래스클래스 안에 클래스를 중첩해서 정의할 수 있는데, 이것을 중첩 클래스(Nested Class)라 한다.class Outer { ... //중첩 클래스 class Nested { ... }}  중첩 클래스 종류중첩 클래스는 총 4가지가 있고, 크게 2가지로 분류할 수 있다. 중첩 클래스의 의미는 정적과 내부 클래스를 모두 포함한 것을 말하며, 정적 중첩 클래스는 말 그대로 정적 중첩 클래스를 의미한다. 내부 클래스는 내부, 지역, 익명 클래스를 포함한 것을 말한다.정적 중첩 클래스 내부 클래스 종류내부 클래스 : 바깥 클래스의 인스턴스의 멤버에 접근지역 클래스 : 내부 클래스의 특징 + 지역 변수에 접근익명 클래스 : 지역 클래스의 특징 + 클..

☕ Backend/Java 2024.10.09

[자바 중급] 06. 날짜와 시간

날짜와 시간 라이브러리아래의 표는 oracle에서 제공하는 문서로 날짜와 시간 라이브러리이다.  LocalDate, LocalTime, LocalDateTime앞에 Local (현지의, 특정 지역의)이 붙는 이유는 세계 시간대를 고려하지 않아서 타임존이 적용되지 않기 때문이다.  특정 지역의 날짜와 시간만 고려할 때 사용한다.LocalDate : 날짜만 표현할 때 사용한다. 년, 월, 일을 다룬다. 예) 2013-11-21 LocalTime : 시간만을 표현할 때 사용한다. 시, 분, 초를 다룬다. 예) 08:20:30.213초는 밀리초, 나노초 단위도 포함할 수 있다. LocalDateTime : LocalDate 와 LocalTime 을 합한 개념이다. 예) 2013-11-21T08:20:30.213..

☕ Backend/Java 2024.10.09

[자바 중급] 05. 열거형 Enum

타입 안전 열거형 패턴 - Enumenum은 enumeration의 줄임말로 변역하면 열거라는 뜻이고, 어떤 항목을 나열하는 것을 뜻한다. 타입 안전 열거형 패턴을 사용하면 나열한 항목만 사용할 수 있다. public class ClassGrade { public static final ClassGrade BASIC = new ClassGrade(); public static final ClassGrade GOLD = new ClassGrade(); public static final ClassGrade DIAMOND = new ClassGrade();} 위 코드는 타입 안전 열거형 패턴을 직접 구현한 것이다. BASIC, GOLD, DIAMOND라는 상수를 선언했다. static을 사용해서 상수를..

☕ Backend/Java 2024.10.08

[Java] Math 클래스 주요 메서드

1. 기본 연산 메서드abs(x) : 절대값max(a, b) : 최대값min(a, b) : 최소값 2. 지수 및 로그 연산 메서드 exp(x) : e^x 계산log(x) : 자연 로그log10(x) : 로그 10pow(a, b) : a의 b 제곱  3. 반올림 및 정밀도 메서드 ceil(x) : 올림floor(x) : 내림rint(x) : 가장 가까운 정수로 반올림round(x) : 반올림  4. 삼각 함수 메서드 sin(x) : 사인cos(x) : 코사인tan(x) : 탄젠트  5. 기타 유용한 메서드 sqrt(x) : 제곱근cbrt(x) : 세제곱근random() : 0.0과 1.0 사이의 무작위 값 생성

☕ Backend/Java 2024.09.30

[자바 중급] 04. Wrapper class

기본형의 한계자바는 객체 지향 언어인데 int나 double같은 기본형은 객체가 아니기 때문에 다음과 같은 한계가 있다.객체가 아님 : 기본형 데이터는 객체가 아니기 때문에, 객체 지향 프로그래밍의 장점을 살릴 수 없다. 또한 기본형은 객체가 아니므로 메서드도 제공할 수 없다.null 값을 가질 수 없음 : 기본형 데이터 타입은 null값을 가질 수 없다.기본형의 한계를 해결하기 위해 도입된 것이 래퍼 클래스이다.  Wrapper class(래퍼 클래스)특정 기본형을 객체로 감싸서(Wrap) 만든 클래스를 래퍼 클래스라고 한다. 래퍼 클래스를 직접 만들 수도 있지만, 자바가 기본으로 제공해준다. 다음은 int 래퍼 클래스를 직접 만든 클래스이다.  직접 만든 래퍼 클래스public class MyInte..

☕ Backend/Java 2024.09.30

[자바 중급] 03. String 클래스

String 클래스자바에는 문자열을 다룰 수 있는 String 클래스를 제공한다. String 클래스를 통해 문자열을 생성하는 방법은 2가지가 있다.쌍따옴표를 사용 : " "객체를 생성 : new String(" ")int, char같은 기본형은 소문자로 시작하지만 String은 대문자로 시작하는데 이는 참조형을 뜻한다. 참조형이라는 건 다른 말로 변수 하나에 String 인스턴의 참조값만 들어갈 수 있다는 말이다. 따라서 String 클래스를 사용할 때 객체를 생성해야 하지만 자바는 성능 최적화를 위해 문자열 풀을 사용하여 쌍따옴표(" ")만을 사용할 수 있게 했다. 기능(메서드) String 클래스에는 속성과 기능을 가진다. 따라서 문자열로 처리할 수 있는 다양한 기능을 제공한다. 주요 메서드는 다음..

☕ Backend/Java 2024.09.29

[Java] String 클래스 주요 메서드

문자열 정보 조회length() : 문자열의 길이를 반환한다.isEmpty() : 문자열이 비어 있는지 확인한다. (길이가 0)isBlank() : 문자열이 비어 있는지 확인한다. (길이가 0이거나 공백(Whitespace)만 있는 경우), 자바 11charAt(int index) : 지정된 인덱스에 있는 문자를 반환한다. 문자열 비교equals(Object anObject) : 두 문자열이 동일한지 비교한다.equalsIgnoreCase(String anotherString) : 두 문자열을 대소문자 구분 없이 비교한다.compareTo(String anotherString) : 두 문자열을 사전 순으로 비교한다.compareToIgnoreCase(String str) : 두 문자열을 대소문자 구분 없..

☕ Backend/Java 2024.09.29

[자바 중급] 02. 불변 객체

기본형과 참조형의 공유자바의 데이터 타입은 크게 기본형(Primitive Type)과 참조형(Reference Type)으로 나눌 수 있다.기본형 : 하나의 값을 여러 변수에서 절대로 공유하지 않는다.참조형 : 하나의 객체를 참조값을 통해 여러 변수에서 공유할 수 있다. 공유 참조와 사이드 이펙트사이드 이펙트(Side Effect)는 프로그래밍에서 어떤 계산이 주된 작업 외에 추가적인 부수 효과를 일으키는 것을 말한다.사이드 이펙트는 프로그래밍에서는 부정적인 의미로 사용된다. 프로그램의 특정 부분에서 발생한 변경이 의도치 않게 다른 부분에 영향을 미치기 때문에 디버깅이 어려워지고 코드의 안정성이 저하될 수 있다. 사이드 이펙트가 발생한 경우의 예제package lang.immutable.address;p..

☕ Backend/Java 2024.09.28
728x90