목록웹프로그래밍/Java (18)
bdfgdfg
스트림(Stream) 스트림은 데이터 소스를 추상화하고, 데이터를 다루는데 자주 사용되는 메소드들을 정의해놓았다. -> 스트림을 이용하면 배열 혹은 컬렉션뿐만 아닌 파일에 저장된 데이터도 모든 같은 방식으로 다룰 수 있다. --> 즉 간결하고 가독성있는 처리가 가능. -> 또한 가장 큰 장점은 sql 질의문처럼 데이터를 처리할 수 있는 기능도 존재한다. 스트림의 특징은 다음과 같다. 1. 스트림은 데이터(요소)를 변경하지 않는다. 2. 스트림은 Iterator와 같은 일회용. (즉 최종연산을 수행할 시 다시는 해당 스트림을 쓰지못한다. -> 재생성해야함) 3. 스트림은 작업을 내부 반복으로 처리한다 4. 스트림은 최종 연산이 수행되기전까지는 중간 연산이 수행되지 않는다. public class Hello..
람다식(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..