자바의 static
Language/Java ☕️2024. 5. 22. 17:58자바의 static

자바를 사용해 코딩을 하다보면 static 이라는 키워드를 보게 됩니다!대표적으로 public static void main() 과 같은 구문에서도 볼 수 있죠! 오늘은 이 static 키워드가 무엇을 의미하고 어떻게 동작하는지 알아보겠습니다! 자바의 static자바에서 static 키워드는 클래스 수준에서 변수를 선언하거나 혹은 메서드를 정의할 때 사용합니다.static의 사용을 통해 클래스의 인스턴스에 속하는 것이 아닌 클래스 자체에 속하는 멤버를 만들 수 있습니다.예를 들어볼까요?static 변수static 변수는 정적 변수 혹은 클래스 변수라고도 합니다. 클래스의 모든 인스턴스가 공유하는 변수 입니다.public class Counter { private static int count = 0..

자바의 메모리 구조
Language/Java ☕️2024. 5. 22. 14:49자바의 메모리 구조

자바 어플리케이션의 성능을 확인하고 개선하기 위해선, 자바 메모리 구조에 대한 이해가 필요합니다.자바의 메모리 관리를 잘 하기만 하더라도 어플리케이션이 더욱 효율적으로 실행 될 수 있죠! 자바의 메모리 구조 자바의 메모리 구조는 크게 3가지로 나눌 수 있습니다.메서드 영역: 이 영역은 모든 스레드가 공유하는 메모리 영역으로, 클래스 수준의 정보(클래스 로더에 의해 로드된 클래스와 인터페이스의 메타데이터), 정적 변수를 저장하는 static 영역, 상수를 저장하는 Constant Pool 로 이루어져 있습니다. 이 영역은 어플리케이션이 실행되는 동안 잘 변하지 않는 정보를 저장하는데 사용합니다.스택 영역: 자바 어플리케이션 실행 시, 어플리케이션 내의 스레드마다 각 스레드의 스택이 존재하게 되는데, 해당 ..

자바의 가비지 컬렉션(GC) 한 번에 이해하기
Language/Java ☕️2024. 2. 2. 21:46자바의 가비지 컬렉션(GC) 한 번에 이해하기

가비지 컬렉션(GC)이란?자바를 배우다 보면 한 번쯤 들어봤을 용어, 바로 가비지 컬렉션(Garbage Collection, GC)입니다. 간단히 말해, GC는 더 이상 접근할 수 없는 객체(=가비지)를 찾아내서 자동으로 메모리를 정리해주는 기능이에요.개발자가 직접 free()나 delete 같은 명령으로 메모리를 해제하지 않아도 된다는 점이죠. 이 덕분에 자바는 “메모리 안전성과 개발 생산성” 두 가지를 모두 잡을 수 있었습니다.GC가 없었다면 매번 메모리를 신경 써야 했을 테니, 개발 속도는 훨씬 느려졌겠죠. 조금 더 깊이 들어가 보면, GC는 JVM의 힙(Heap) 구조에서 작동하며수집기(Collector)의 종류나 동작 방식에 따라 성능이 달라집니다.이 부분을 이해하면 실무에서 메모리 누수나 성능..

String vs StringBuffer vs StringBuilder — 자바 문자열 클래스의 차이 완전 정리
Language/Java ☕️2024. 2. 2. 10:17String vs StringBuffer vs StringBuilder — 자바 문자열 클래스의 차이 완전 정리

자바에서는 문자열을 다루기 위해 String, StringBuffer, StringBuilder 세 가지 클래스를 사용합니다.오늘은 각 클래스의 특징, 동작 방식, 성능, 스레드 안정성, 그리고 상황별 선택 기준을 비교해볼게요! 이 글을 통해 아래와 같은 것들을 이해해볼 수 있을거에요!String이 불변(Immutable) 객체인 이유StringBuffer와 StringBuilder의 필요성과 차이상황에 맞는 문자열 클래스 선택 방법 String — 불변(Immutable)한 문자열String 객체는 한 번 생성되면 내부 값이 변경되지 않는 불변(Immutable) 객체입니다.이 덕분에 자바는 문자열을 String Pool에 저장하고, 동일한 문자열 리터럴을 재사용할 수 있습니다.String str1 =..

Double과 Float를 사용하면 안되는 이유
Language/Java ☕️2024. 2. 1. 23:41Double과 Float를 사용하면 안되는 이유

자바에서 소수(실수)를 표현할 때는 보통 float이나 double을 사용합니다.하지만 강의나 실무에서 이런 말을 자주 듣게 됩니다. double과 float 대신 BigDecimal을 사용하세요!이 말은 단순한 습관이나 규칙이 아니라, 부동소수점 연산의 정확도 문제라는 기술적인 이유가 있습니다.오늘은 다음과 같은 내용을 함께 알아볼게요.float, double에서 오차가 발생하는 이유부동소수점 표현 방식(IEEE 754 표준)의 한계BigDecimal이 이러한 문제를 어떻게 해결하는지각 자료형을 언제, 어떻게 사용해야 하는지 부동소수점 연산의 정확도 문제다음은 간단한 예제입니다.double a = 1.03;double b = 0.42;System.out.println(a - b);예상 결과는 0.61이..

JDK, JRE, JVM의 차이와 자바 실행 구조 이해하기
Language/Java ☕️2024. 2. 1. 20:10JDK, JRE, JVM의 차이와 자바 실행 구조 이해하기

오늘은 자바 프로그램의 실행 과정을 단계별로 살펴보며, 그 과정에서 JDK, JRE, JVM의 역할과 관계를 이해해보는 시간을 가져볼게요!이를 통해 자바의 핵심 특징인 플랫폼 독립성이 구현되는 원리를 함께 알아보겠습니다. 이 개념들을 이해하면 다음을 명확히 알 수 있을거에요!자바가 운영체제에 상관없이 동작할 수 있는 이유(플랫폼 독립성)자바 코드가 컴파일되고 실행되는 전체 과정JDK, JRE, JVM 각각의 기능과 역할 자바의 플랫폼 독립성컴퓨터는 기본적으로 0과 1, 즉 기계어만 이해합니다. 하지만 이 기계어는 운영체제(OS)마다 다르기 때문에, 같은 프로그램이라도 Windows, macOS, Linux에서 실행 방식이 달라집니다. 자바는 이러한 문제를 해결하여 한 번 작성하면 어디서나 실행된다(Wri..

image