목록분류 전체보기 (253)
bdfgdfg
람다식(Lambda expression) 람다식은 메소드를 하나의 식으로 표현한 것, 즉 함수를 간략하면서 명확한 식으로 표현할 수 있게 해준다. -> 메소드를 람다식으로 표현할 시 메소드명과 반환값이 없으므로 람다식을 익명함수라고도 한다. public class Hello { public static void main(String[] args) { int[] array = new int[10]; Arrays.setAll(array, (i)->(int)(Math.random() * 10)); } } C/C++언어와 달리 전역함수 사용도 못하고, 클래스를 만들고 메소드를 작성할 필요 없이 위처럼 간단하게 람다를 통해 메소드를 넘겨줄 수 있다. ( (i)->(int)(Math.random * 10) ) 이 ..
흔히 쓰레드라는 말이나오면 프로세스와 같이 설명이 된다. 프로세스란 하드에 있는 프로그램이 메모리에 올라와 실행상태에 놓이게 되는 것. 즉 실행중인 프로그램을 의미하며 쓰레드는 프로세스의 자원을 이용해 실제로 작업(코드 실행)을 수행하는 것이 바로 쓰레드. -> 그렇기에 기본적으로 모든 프로세스는 최소한 하나의 쓰레드를 가진다. 쓰레드는 프로그래머에 의해 둘 이상의 쓰레드가 존재할 수 있고 이를 멀티쓰레드 환경이라고 한다. 멀티 쓰레드의 장점은 이론상 멀티코어 CPU상에서 하나의 코어 = 쓰레드 이므로 CPU사용률이 향상된다. -> 다만 쓰레드는 스케쥴링 대상이므로(컨텍스트 스위칭) 너무 많은 쓰레드 생성 시 오히려 성능이 더 저하될 수 있다. -> 또한 데이터의 경쟁상태(race condition) 및..
제네릭스 제네릭스란 다양한 타입의 객체들을 다루는 메소드나 컬렉션 클래스에 컴파일 시의 타입체크를 해주는 기능이다. -> 객체의 타입을 컴파일시에 체크하기에 객체의 타입 안정성을 높이고 형변환의 번거로움이 줄어든다. class Box { T item; void setItem(T item ) { this.item = item;} T getItem() {return item;} } 제네릭의 사용방법은 위와 같다. T에 해당하는 문자는 다른 문자가 와도 상관없다. 기존에는 다양한 종류의 타입을 다룰 때 Object타입을 사용했고, 그로인해 형변환이 불가피 했지만 이제는 제네릭을 이용해 원하는 타입을 지정하여 사용만 하면 된다. import java.io.FileInputStream; import java.ut..
자바에는 컬렉션 클래스가 존재한다. 간단히 말하면 자료구조를 모아놓은 클래스들. 구현된 자료구조 클래스들(파랑색)은 각각의 인터페이스를 상속받아 구현되어 있따. 주로 Hash가 붙은것들은 해시테이블로 구현되어있고, Tree,Sorted가 붙은것은 완전이진탐색트리(레드-블랙트리)로 구현되어 있다. -> 키(Key)가 필요한 Map 인터페이스를 상속받는 Hash 클래스는 키가 사용자 정의 클래스라면 hashcode를 구현해야하며, SortedMap은 comparator를 구현해주어야 한다. 이러한 자료구조 컬렉션 클래스들은 이미 구현된걸 가져다 쓰는 편리함도 있고, 공통된 인터페이스를 구현하였기에(Collection,Map) 가독성도 높다는 장점이 있다. List인터페이스 List인터페이스는 중복을 허용하면..