본문 바로가기

자바29

static 자바에서 static 키워드는 주로 변수와 메서드에 사용되며, jvm 메서드 영역에서 관리되므로 jvm 로딩시 메모리에 저장 되게 됩니다. 이는 static 변수나 메서드가 특정 인스턴스에 속하는 것이 아니라 클래스 정의와 함께 존재한다는 의미 입니다. 정적 변수 ( Static 변수 ) static 변수는 클래스 레벨의 변수로, 클래스의 모든 인스턴스에 의해 공유 됩니다. 이러한 변수는 클래스가 메모리에 로드될 때 생성되고 프로그램 종료시 소멸됩니다. 모든 인스턴스가 같은 값을 공유합니다. 한 인스턴스에서 static 변수의 값을 변경하면 이 변경 사항이 모든 인스턴스에 반영 됩니다. 공통의 값을 모든 인스턴스가 공유해야 할 때 사용됩니다. 예를 들어 회사 이름, 버전 정보 등 정적 메서드 ( Stat.. 2023. 12. 13.
자바 메모리 구조 자바의 메모리 구조는 프로그램의 실행 동안 사용되는 다양한 종류의 데이터를 저장하고 관리하는 방식을 정의하며, 메서드 영역, 스택 영역, 힙 영역 3개로 나눌 수 있다. 메서드 영역 ( Method Area ) 클래스 수준의 정보 ( 클래스 구조, 메소드 코드, 상수, 정적 변수 등) 을 저장한다. JVM 하나당 메서드 영역이 있으며, 모든 스레드가 이 영역을 공유 한다. 클래스 정보(구조) : 클래스의 실행 코드 ( 바이트 코드), 필드, 메서드와 생성자 코드 등 모든 실행 코드가 존재한다. 클래스 구조(틀) 메서드의 코드, 생성자 정보, 상수 등 클래스와 관련된 모든 정보가 메서드 영역에 로딩된다. static 영역 : static 변수들을 보관한다. ( 변수와 메서드 ) 정적 변수는 클래스가 JVM.. 2023. 12. 13.
Stream & Optional & Parallel Stream 아래 코드는 특정 숫자를 비교하여 출력및 예외를 던지는 코드입니다. 1234를 비교 하기때문에 RuntimeException이 발생하게 됩니다. public class ForAndIfFilterExampleMain { public static void main(String[] args) { List integerList = List.of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); Integer findNumber = null; for (int i = 0; i < integerList.size(); i++) { if(integerList.get(i).equals(1234)) { findNumber = integerList.get(i); break; } } if(findNumber == nul.. 2023. 12. 12.
Stream Stream API는 객체지향과 함께 사용하면 좋습니다. 대표적으로 for, if -> stream으로 사용할 수 있습니다. 대표적인 stream api를 알아보겠습니다. ( 자세한 stream api 는 별도의 카테코리를 만들어 진행하겠습니다 ) forEach public class ForIterationExampleMain { public static void main(String[] args) { List integerList = new ArrayList(); integerList.add(10); integerList.add(20); integerList.add(30); integerList.add(40); integerList.add(50); integerList.add(60); integerLi.. 2023. 12. 12.