Java 81

[Java]람다식(Lambda Expressions)

람다식이란? JDK 8부터 지원하기 시작했다. 함수 인터페이스를 생성해야 사용할 수 있다. 익명함수를 생성하기 위한 표현식으로 함수형 언어에서 사용하는 함수 표현방법이다. 매개변수로 함수를 전달하거나 반환값으로 함수를 반환 할 수 있다. 람다식은 인터페이스의 추상메소드를 간결하게 그리고 하나의 추상메소드로 여러가지 기능을 갖는 다양한 일회성 익명함수를 구현하는 것이 목적이다. 추상 메소드를 하나만 갖는 인터페이스(함수형 인터페이스라 함)가 필요하다. @Functionalinterface로 인터페이스를 만드는 경우, 하나 이상의 추상메소드 정의시 컴파일 에러가 발생한다. 컬렉션이나 배열의 데이터를 다룰 때 Stream객체의 메소드 인자로 전달할 때 많이 사용한다. 람다식은 함수를 간결하게 표현하기 위해 많..

Java 2022.04.06

[Java]Generic

Generic이란? 클래스나 메소드에서 사용할 데이터 타입을 클래스 정의시에 결정하는 것이 아니라 인스턴스를 생성할 때나 메소드를 호출 할 때 결정하는 기법이다. 클래스나 메소드 사용시 타입을 지정할 수 있도록 하는 일반(Generic)화된 타입이라는 의미이다. 제너릭은 사용 타입을 지정하기 때문에 컴파일시 타입체크를 해주는 기능(Type Safety)를 통해 런타임시 에러를 사전에 방지할 수 있다. JDK1.7부터 클래스를 인스턴스화 할 때 클래스명()의 '파라미터 타입'을 생략할 수 있다. 즉, new클래스명()로 인스턴스화 할 수 있다. 제너릭의 장점 Complie시 타입 체크를 할 수 있기 때문에 Type Safety가 좋다. 형변환이 불필요하다. 코드의 중복을 줄일 수 있다. 제너릭 타입(Gen..

Java 2022.04.06

[Java]입력과 출력 - File

이번 포스팅에서는 자바에서 제공하는 클래스 중 하나인 File 클래스와 File 클래스에 존재하는 다양한 메소드들을 알아보자 ▲ 순서대로 위에서부터 존재하는 파일경로, 존재하지않는파일경로, 존재하는 디렉토리 경로, 존재하지 않는 디렉토리 경로를 사용하기 쉽게 String형으로 만들어 변수에 담아주자. ▲ 각각의 경로들로 File클래스 선언과 동시에 인스턴스화를 했다. 1) getName() ▲ 경로가 아닌 파일명 또는 디렉토리명을 얻기위해서는 File클래스에 있는 getName()메소드를 사용하면 된다. 2) isFile(), isDirectory() ▲ 파일인지 혹은 디렉토리인지 판단해주는 메소드. 반환값은 boolean형이다. isFlie()과 isDirectory()는 해당 파일과 디렉토리가 실제 ..

Java 2022.03.27

[Java]입력과 출력 -part.7(Object InOutStream)

이번 포스팅에서는 우리가 만든 클래스들을 필터를 통해 입력하거나 또는 출력하는 법을 알아보도록 하자. 자바에서 객체 안에 저장되어 있는 내용을 파일로 저장하거나 네트워크를 통하여 다른 곳으로 전송하려면 객체를 바이트 형태로 일일이 분해해야 한다. 이를 위하여 객체를 직접 입출력 할 수 있도록 해주는 객체 스트림이 바로 ObjectStream이다. 이번에 우리가 사용할 만든 클래스는 Person이라는 클래스이며 클래스 맴버들은 다음과 같다. ▲ Person 클래스. 이름,나이,주소를 가지는 클래스이다. 1. 메모리 -> 파일 Data source는 메모리이며 Data destination은 파일이다. 메모리에 저장된 값을 파일로 출력하는 것이기 때문에 입력스트림은 불필요하다. ▲ 데이터 소스를 준비한다. ..

Java 2022.03.27

[Java]입력과 출력 -part.6(Data InOutStream)

1. 메모리 -> 파일 각 자료형을 인코딩(필터 사용)해서 파일로 저장할 것이다. 따라서 Data source는 메모리이며 Data destination은 file이 되는 것이므로 입력스트림은 불필요하며 출력스트림만 있으면 된다. ▲ 다양한 자료형으로 데이터 소스를 만든다. ▲파일형식으로 출력할 것으이므로 FileOutputStream을 이용해 출력용 노드스트림을 만들어준 후 필터스트림인 DataOutputstream을 이용해 인코딩을 해준다. ▲ 자료형마다 출력용 메소드가 달리 존재하므로 자료형에 맞게 메소드를 이용해 출력한다. 2. 파일 -> 메모리 이번에는 파일에 저장된 데이터값을 불러와 각 자료형 값을 디코딩(필터링(해서 각 자료형 변수에 저장해보자 그리고 확인차 모니터에도 출력하자 여기저 주의할..

Java 2022.03.27

[Java]입력과 출력 -part.4(BufferedReader/BufferedWriter)

우리가 이제껏 입력과 출력포스팅에서는 1byte씩 읽고 출력하거나 한 문자씩 읽어서 한 문자기반으로 출력하는 방법을 알아봤다. 하지만 입력하거나 출력할 데이터가 방대하다면 언제 1byte씩 또는 한 문자씩 읽고 출력하겠는가. Buffered클래스를 사용하면 한번에 512byte씩 읽고 출력한다. 즉 512byte씩 묶어서 보내기 때문에 속도가 훨씬 빨라질 수 있다는 것이다. 우리는 이것을 필터를 끼운다고도 표현한다. 키보드로부터 입력받아서 모니터로 출력하자. 단, 브릿지 스트림을 통해서 문자단위로 변환하고 필터스트림을 통해 필터링 해보자. ▲ 키보드는 바이트기반이므로 문자기반의 BufferedReader를 이용해 읽으려면 Reader형 즉, 문자 기반으로 바꿔줘야한다. 따라서 바이트기반입력인 System..

Java 2022.03.23

[Java]입력과 출력 -part.3(File -> Monitor, File)

파일로부터 한 문자씩 읽어서 모니터에 출력해보자 모니터출력은 바이트 형식으로 해야한다. System.out이 OutputStream 에 속하기 때문이다. 즉, 이번 포스팅은 문자기반 -> 바이트 기반으로 변환을 해주어야 하는 것이다. ▲ 파일로부터 파일에 있는 데이터값을 한 문자씩 읽어온다. ▲ 이제 한문자씩 읽어온 문자기반 스트림을 바이트 기반으로 바꿔주어야 하기때문에 OutputStreamWriter를 사용해서 모니터에 출력을 위한 바이트기반으로 바꾸어준다. ▲출력은 역시나 동일하게 write()메소드로 출력스트림에 데이터를 밀어넣어주고 flush()를 사용해서 출력스트림에 있는 데이터값을 모니터로 밀어준다. 파일에서 데이터값을 가져왔기때문에 안정성을 위해 노드스트림 제거를 위해 close()를 해주..

Java 2022.03.23

[Java]입력과 출력 -part.2(bridge stream)

키보드로 읽어서(바이트 단위로 읽음) 문자단위로 파일에 출력해보자 bridge stream을 이용해서 1바이트씩 읽은 데이터를 문자단위로 변환한다. ※ Java IO에서 한글이 깨지는 경우 1byte씩 읽어서 한 문자씩 출력시 해결방법 : InputStreamReader bridge stream이용 ----------------------------------------------------------- 한 문자씩 읽어서 1byte로 출력시 해결방법 : OutputStreamWriter bridge stream이용 ※ 1byte씩 읽어서 1byte씩 출력하거나 한 문자씩 읽어서 한 문자씩 출력할 때는 한글이 깨지지 않는다. ▲ 바이트 기반을 문자기반으로 바꿔주는 클래스 InputStreamReader를 ..

Java 2022.03.23