Java75 람다식(Lamdba Expressions) [ 람다식 문법 ] 익명 클래스를 구현하는 것과 유사한 방식 이전 방식에 비해 구현 코드를 간소화할 수 있음 람다식은 익명 클래스를 다루는 방식과 비슷합니다. 다만 문법을 조금 더 보기 편하게 간소화 시켜둔 것이라 볼 수 있습니다. 하지만 너무 남용할 경우 오히려 코드의 가시성이 떨어질 수 있으니 주의해야 합니다. 굳이 꼭 써야하는 문법은 아니며 사용에 대한 호불호도 많이 갈리는 문법입니다. 특히 객체지향적인 특성에서 많이 벗어나게되는 문법이라 싫어하는 사람들도 많은 것 같습니다. 다만 스트림 등의 특정 API에서는 람다식으로 작성해야 할 경우도 있습니다. 먼저 일반적인 익명 클래스 사용 예시입니다. 이전글에서 다룬 제네릭을 사용해서 내용이 없는 일종의 추상 메소드를 하나 만들고 사용 시에 바로 오버라이.. ▸JAVA/기본 문법 2019. 12. 23. 제네릭(generic) [ 제네릭(generic) ] 데이터 타입이 런타임 시점에 동적으로 결정되는 방식 가상의 데이터 타입을 사용하여 코드 작성 후 사용 시 타입 지정 컬렉션 프레임워크 글에서 간략이 언급했던 제네릭입니다. 리스트를 다룰 때 뿐만 아니라 매우 많은 부분에서 유용하게 쓸 수 있는 문법입니다. 매개변수 등의 전달 타입을 Object로 하는 것과 비슷하지만 더 활용성을 높이고 오류 가능성을 줄이는 방향으로 발전된 기능입니다. [ 제네릭 클래스 생성 ] class 클래스명 { } 꺽쇠기호 안에 가상 타입의 매개변수 이름(보통 T, V 등) 삽입 클래스 생성 시 가상의 타입을 사용해서 필드와 메소드를 만들어 둔 뒤, 실제 클래스를 이용할 때 타입을 지정해줍니다. 대표적인 예로 리스트를 생성할 때 어떤 데이터 타입의 리.. ▸JAVA/기본 문법 2019. 12. 23. 직렬화와 역직렬화 (Serializable) [ 직렬화 ] 자바의 객체를 외부 데이터로 저장하는 것 객체화된 클래스(인스턴스)의 속성과 데이터를 파일화하여 외부에 저장할 수 있음 [ 역직렬화 ] 직렬화로 저장된 파일을 다시 자바의 객체로 만드는 것 일종의 오버라이딩과 비슷한 개념 간단히 말하면 객체(보통 인스턴스를 의미)의 속성과 데이터를 모두 파일로 저장했다가 필요할 때 다시 객체로 되돌리는 기능이라고 볼 수 있습니다. 프로그램이 꺼지더라도 데이터는 보관되어 있으니 나중에 다시 불러와서 사용할 수 있게 됩니다. 또는 외부로 보내서 데이터를 공유할 수도 있습니다. 부모 클래스에서 물려받은 속성을 자식 클래스의 데이터로 덮어쓰는 오버라이딩과 비슷합니다. 아래에서 더 자세히 다루겠지만 공통된 속성을 가진 부모클래스로만 오버라이딩이 가능하듯이 역직렬화 .. ▸JAVA/기본 문법 2019. 12. 20. java.util.Properties 주요 메소드 [1/1] [ Properties 클래스 ] MAP 계열의 컬렉션 프레임워크와 비슷하게 동작하는 파일 "Key = Value" 형태로 된 "파일이름.properties" 파일 또는 Xml 파일 key를 주면 Value를 반환하는 기능을 가짐 DB의 연결정보 등을 저장해두는 용도로 많이 쓰임 Enum(열거형) 클래스나 MAP 컬렉션 API와 비슷한 개념의 파일 버전입니다. 코드를 건들이지 않고도 정보를 변경할 수 있다는 강점이 있습니다. [ 생성 ] 파일을 직접 여는 클래스가 아니므로 FileReader 또는 FileInputStream 객체를 매개변수로 받음 외부 리소스와 직접 연결되지 않으므로 '확인된 예외'가 throw되어 있지 않음 load() 메소드를 통해 파일 정보를 넣어줌 [ 값(value) 가져오기 ].. ▸JAVA/라이브러리(API) 2019. 12. 19. java.nio 패키지 사용법(Channel / Buffer / Charset) [1/1] [ java.nio.channel 패키지 ] 다양한 외부 리소스와 내부의 버퍼를 연결해주는 채널을 생성해주는 클래스들 존재 양방향 채널로 사용할 수도 있고 단방향 채널로 사용할 수도 있음 java.io의 스트림 클래스들에 비해 입출력 속도가 빠름 java.io의 스트림 클래스들과 다르게 무조건 버퍼를 사용해야 함 [ java.nio 패키지 ] boolean 타입을 제외한 원시타입 별 버퍼 클래스를 제공 Buffer 인터페이스를 상속받기 때문에 클래스들의 사용법이 거의 비슷함 파일 채널(FileChannel)과 바이트 버퍼(ByteBuffer) 클래스의 사용법 위주로 정리하겠습니다. 다른 리소스와 연결되는 채널 및 다른 타입의 버퍼 클래스도 거의 사용법은 유사합니다. 특별한 기능을 가진 채널 및 버퍼 클래.. ▸JAVA/라이브러리(API) 2019. 12. 17. java.nio.file.Files 주요 메소드 [1/1] [ Files 클래스 ] Static 메소드로 구성되어 있음 Path 객체를 이용해 파일 시스템 작업 수행 데이터 입출력에 대한 기본 개념은 아래 링크글을 참조하시면 됩니다. 2019/12/16 - [JAVA/기본 문법] - 외부 데이터 입출력_io / nio / nio2 [1/3] 2019/12/16 - [JAVA/기본 문법] - 외부 데이터 입출력_java.io [2/3] 2019/12/16 - [JAVA/기본 문법] - 외부 데이터 입출력_java.nio [3/3] [ 생성자 ] 모두 Static 메소드로 이루어져 있어 별도의 인스턴스 생성이 없음 파일 또는 폴더의 주소 정보를 가진 Path 클래스의 인스턴스를 매개변수로 메소드 수행 boolean isDirectory(Path p) - 폴더인지 아.. ▸JAVA/라이브러리(API) 2019. 12. 16. java.nio.file.Path 주요 메소드 [1/1] 데이터 입출력에 대한 기본 개념은 아래 링크글을 참조하시면 됩니다. 2019/12/16 - [JAVA/기본 문법] - 외부 데이터 입출력_io / nio / nio2 [1/3] 2019/12/16 - [JAVA/기본 문법] - 외부 데이터 입출력_java.io [2/3] 2019/12/16 - [JAVA/기본 문법] - 외부 데이터 입출력_java.nio [3/3] [ 생성자 ] java.nio.file.Paths 클래스의 get() 메소드를 통해 생성 가능 (static 메소드) 폴더 구조는 한번에 줘도 되고 나눠서 따로 줘도 됨. 어떻게 묶어도 같은 의미가 됨 package study.first; import java.nio.file.Path; import java.nio.file.Paths; pub.. ▸JAVA/라이브러리(API) 2019. 12. 16. 외부 데이터 입출력_java.nio [3/3] [ java.nio 패키지 ] New IO라는 의미로 java.io의 업그레이드 버전 NIO2는 Java Se-7 버전에서 java.nio가 한 번 더 업그레이드 되었다는 의미 굳이 NIO1, NIO2의 구분 없이 그냥 NIO를 한통으로 생각하면 됨 [ 기존 Java.io와 차이점 ] 양방향 Channel 방식을 사용해 외부 데이터와 입출력 연동 (통로가 하나만 있으면 됨) 기본적으로 버퍼(Buffer)를 사용해 속도를 높임 (커널 버퍼를 직접 사용해서 입출력 속도 향상도 가능) 비동기 지원 (메소드 호출 시점과 결과 출력 시점이 다름) Non-Blocking 지원 (I/O를 수행하는 동안 스레드가 놀지 않도록(block 당하지 않도록) 함) NIO는 어렵습니다. NIO만 정리해도 책이 한권 나올 것 같.. ▸JAVA/기본 문법 2019. 12. 16. java.io.File 주요 메소드 [1/1] [ File 클래스 ] 파일 내용이 아닌, 파일 자체(껍데기)를 다룸 NIO2만으로는 파일 조작이 어려워 병행해서 사용하면 효율적 NIO2와 서로 변환할 수 있음 파일 클래스를 사용하면 파일 스트림을 열기 전에 실제 파일에 대한 정보를 확인할 수 있고, 또 파일 자체를 삭제하거나 이름을 변경하는 등의 작업을 수행할 수 있습니다. 데이터 입출력에 대한 기본 개념은 아래 링크글을 참조하시면 됩니다. 2019/12/16 - [JAVA/기본 문법] - 외부 데이터 입출력_io / nio / nio2 [1/3] 2019/12/16 - [JAVA/기본 문법] - 외부 데이터 입출력_java.io [2/3] 2019/12/16 - [JAVA/기본 문법] - 외부 데이터 입출력_java.nio [3/3] [ 생성자 ].. ▸JAVA/라이브러리(API) 2019. 12. 16. 외부 데이터 입출력_java.io [2/3] [ java.io 패키지 ] 아직도 많이 사용되고 있는 구버전의 입출력 패키지 java.nio(New IO, NIO)와 함께 병행해서 사용되고 있음 간단한 입출력의 경우 NIO보다 더 효율적일 수 있음 알게 모르게 항상 사용하게 되는 패키지입니다. NIO가 있긴 하지만 간단한 상황에서는 오히려 더 효과적일 수 있기 때문에 정확한 개념을 알아두는 것이 좋습니다. 외부 데이터와의 연동은 프로그램 성능에 큰 영향을 미칠 수 있습니다. 아래 글은 파일 입출력을 예제로 하였습니다. 스트림을 이용한 네트워크 입출력은 아래 링크글을 참조하시면 됩니다. 2020/02/04 - [JAVA/기본 문법] - 네트워크_소켓(Socket) 통신_IO 입출력 [1/3] [ File 클래스 ] 파일의 위치 정보를 가지고 있음 파일.. ▸JAVA/기본 문법 2019. 12. 16. 외부 데이터 입출력_io / nio / nio2 [1/3] Java에서 프로그램과 외부의 데이터(디스크, 네트워크, 메모리 등)를 연결해서 조작할 수 있게 해주는 클래스가 너무 많습니다. 구버전과 신버전으로 나눌 수 있는데 아직까지 구버전도 많이 쓰이는데다가 각각 장단점이 있어서 둘 모두를 적절히 알고 사용해야할 것 같습니다. 먼저 구버전은 java.io 패키지입니다. 신버전은 Java SE-4에서 처음 나와(NIO) 7에서 한번 더 업그레이드 된(NIO2) java.nio라는 패키지입니다. 굳이 NIO1, NIO2로 나눠서 생각하지 않아도 됩니다. 그냥 (Old)IO와 (New)IO라고 생각하면 됩니다. 워낙 클래스도 많고 방대해서 중점적인 부분만 다루도록 하겠습니다. 전체적인 구조와 원리만 알면 상황에 따라 적절한 클래스를 찾아서 사용하면 됩니다. [ IO와.. ▸JAVA/기본 문법 2019. 12. 16. java.io.FileWriter 주요 메소드 [1/1] [ FileReader ] FileOutputStream과 유사한 기능 문자 스트림으로서 문자 단위의 바이트 변환 기능을 가짐 FileOutputStream 클래스가 바이트 스트림이라면 FileWriter 클래스는 문자 스트림입니다. 즉, 바이트 단위가 아닌 문자 단위로 입출력을 수행합니다. 외부 리소스 입출력에 대한 개념과 설명은 아래 링크글을 참조하시면 됩니다. 2019/12/16 - [JAVA/기본 문법] - 외부 데이터 입출력_io / nio / nio2 [1/3] 2019/12/16 - [JAVA/기본 문법] - 외부 데이터 입출력_java.io [2/3] 2019/12/16 - [JAVA/기본 문법] - 외부 데이터 입출력_java.nio [3/3] [ 생성자 ] new FileWriter(F.. ▸JAVA/라이브러리(API) 2019. 12. 15. java.io.FileReader 주요 메소드 [1/1] [ FileReader ] FileInputStream과 유사한 기능 문자 스트림으로서 문자 단위의 바이트 변환 기능을 가짐 FileInputStream 클래스가 바이트 스트림이라면 FileReader 클래스는 문자 스트림입니다. 즉, 바이트 단위가 아닌 문자 단위로 입출력을 수행합니다. 외부 리소스 입출력에 대한 개념과 설명은 아래 링크글을 참조하시면 됩니다. 2019/12/16 - [JAVA/기본 문법] - 외부 데이터 입출력_io / nio / nio2 [1/3] 2019/12/16 - [JAVA/기본 문법] - 외부 데이터 입출력_java.io [2/3] 2019/12/16 - [JAVA/기본 문법] - 외부 데이터 입출력_java.nio [3/3] [ 생성자 ] new FileIReader(Fi.. ▸JAVA/라이브러리(API) 2019. 12. 15. java.io.FileOutputStream 주요 메소드 [1/1] [ FileOutputStream ] FileInputStream과 마찬가지로 java.io의 가장 기본이 되는 파일 입출력 클래스 출력 스트림(통로)을 생성해줌 사용법은 간단하지만, 버퍼를 사용하지 않기 때문에 느림 속도 문제를 해결하기 위해 버퍼를 사용하는 다른 클래스와 같이 쓰는 경우가 많음 외부 리소스 입출력에 대한 개념과 설명은 아래 링크글을 참조하시면 됩니다. 2019/12/16 - [JAVA/기본 문법] - 외부 데이터 입출력_io / nio / nio2 [1/3] 2019/12/16 - [JAVA/기본 문법] - 외부 데이터 입출력_java.io [2/3] 2019/12/16 - [JAVA/기본 문법] - 외부 데이터 입출력_java.nio [3/3] [ 생성자 ] new FileOutpu.. ▸JAVA/라이브러리(API) 2019. 12. 15. java.io.FileInputStream 주요 메소드 [1/1] [ FileInputstream ] java.io의 가장 기본 파일 입출력 클래스 입력 스트림(통로)을 생성해줌 사용법은 간단하지만, 버퍼를 사용하지 않기 때문에 느림 속도 문제를 해결하기 위해 버퍼를 사용하는 다른 클래스와 같이 쓰는 경우가 많음 외부 리소스 입출력에 대한 개념과 설명은 아래 링크글을 참조하시면 됩니다. 2019/12/16 - [JAVA/기본 문법] - 외부 데이터 입출력_io / nio / nio2 [1/3] 2019/12/16 - [JAVA/기본 문법] - 외부 데이터 입출력_java.io [2/3] 2019/12/16 - [JAVA/기본 문법] - 외부 데이터 입출력_java.nio [3/3] [ 생성자 ] new FileInputStream(File file) new FileIn.. ▸JAVA/라이브러리(API) 2019. 12. 15. 이전 1 2 3 4 5 다음 💲 추천 글 반응형