본문 바로가기

Language

(93)
Java Garbage Collection 이란? 자바 가비지 컬렉션의 동작및 개념에 대해서 알아본다. 우선 가비지 컬렉션이란? 프로그램을 개발하다가, 유효하지 않은 메모리인 가비지가 발생하게되고 C나 다른 언어는 free를 통해, 직접 메모리를 해제해주어야 하지만, java 는 가바지컬렉터가 불필요한 메모리를 알아서 정리해준다. Java 에서는 객체는 대부분 일회성이며, 메모리에 오랫동안 남아있는 경우는 드물다는 전제로 설계되었다. 객체의 생존 기간에 따라 물리적인 heap영역을 나누게 되었고, 이에 따라 Young Old, 총 2가지 영역으로 설계되었다. 1. Young 영역 (Young Generation) 새롭게 생성된 객체가 할당되는 지역이다. 대부분으니 객체가 금방 Unreachable(1회성 상태) 가 되기 때문에 많은 객체가 Young영역..
Optional 변수 예제 및 사용방법 Stream 공부하면서 많이 나오는 Optional변수 관련 내용을 공부해보자 1. Optional이란? 존재할수도있고 안할수도있고, 즉 nullable한 변수이다. null이 될수도있는 하나의 래퍼 클래스이다. 2. 장점 1. 우선, NPE 유발할수있는 null을 직접 다루지않아도 된다. 2. null Exception 체크를 하지않아도 된다. 방어로직이 준다. 3.사용 이런식으로 .empty()로, 싱글톤으로 이미 생성된 변수이름으로 call할수 있고, Optional.of 로 객체를 넣어서 생성할수도있다. 방법은 다양하지만, Option.of사용시 NPE조심 2. Optional.ofNullable() 로 Optional 변수 생성 이것은 nullable에 대한 처리를 해주는 메소드 이며, 아까 O..
Stream 객체 사용 방법 및 예제 우선 저번에 한 Stream 관련 좀더 상세 사용 예제를 작성할 예정이다. 우선 해당 배열을 List로 변경한뒤에 출력을했다. 순서는 그대로지만, 정렬을 하려면 함수를 하나더 콜해야한다. 이건, 데이터를 직접 바꾸는 일이다. 즉, List객체의 sorting 이 필요할떄마다, sort먹이고 출력 먹이고 출력이다. 굉장히 비효율적이다. 예를들어서, 어디에다가는 오름차순, 어디에다가는 내림차순일때 일일히 데이터를 바꿔야 한다는 단점이 있다. 그럼 이제Stream 객체를 사용해보자 Stream 객체의 장점은 아래와 같다. 객체라기보다는 API이다. 난 부르기 편한대로 부른다. 무튼 Stream APi를 사용하면 아래와 같은 장점이 있다. 1. Stream은 데이터를 직접적으로 변경하지 않는다. 즉 다시말하면,..
제네릭 사용법 예제 쉽게 정리 1. 제네렉은, 특정 클래스나 함수의 불필요한 타입변형을 막아준다. 대부분 파라미터나, return에 대해서, 특정 타입에 대한 선언을 해주는데, 특정 타입에 대한 정의를 하면 불편한, 공통의 소스들에 대해서는, 이런 제네릭 사용방법이 아주 핵심이다. 바로 쉬운 예를 하나 들어본다. Student라는 클래스이고, 이 하위에 함수를 ShowType으로 하고, 해당 Student 클래스를 생성할때, 해당 파라미터로 생성자를 만든다. 이떄, showtype을 하면, 이떄 생성한 파라미터에 대한 classtype을 보여주게 만들었다. 이렇게 하면, integer든,string이던, 한가지 소스에 student 를 선언할수있다. 2. 와일드 카드 showPrint 메소드를 보자, 해당 메소드에서는 와일드 카드를 ..
자바 -제네릭이란? 제네릭... 제네릭이 뭘까...?? 사실 개발을 조금 해봤으면 모를리 없다. 그래도. 가끔 헷갈리면서 잘못쓰는 경우를 대비해서 정리 및 작성 기초부터 잘알아야 어떨때 어떤걸 쓰는게 맞는지 알테니 고고 1. 제네릭 제네릭이란, 하나의 값으로 여러가지 다른 데이터 타입들을 가질수 있도록 하는 방법이다. List test = new ArrayList(); 이런식으로 선언을 하는데, 제네릭 클래스는 위와 같이 String에 대한 고정이 아니라 사용자의 입력에 따라서 유동적으로 값을 받을수 있도록 하는 것이다. 장점 : Typemismatch 에러 방지, 관리 편리, 코드 재사용성 높아짐 type Element Key Value Number 암묵적인 규칙이다. 쉽게말해 Public class TestClass{}..