Java

Java

    BufferedReader / BufferWriter

    BufferedReader와 BufferedWriter는 버퍼를 이용해서 읽고 쓰는 함수이다. 이 함수는 Scanner와 System.out.println()과 기능이 유사하지만 버퍼를 이용하기 때문에 이 함수를 이용하면 입출력의 효율이 올라간다. (속도 측면에서도 훨씬 빠르다.) 그럼 왜 버퍼를 이용하면 속도가 빠를까? 간단하게 생각했을 때 중간에 버퍼를 거치기 때문에 더 느리지 않을까란 생각을 할 수도 있다. 예를 들어 설명하겠다. 모래 사장에서 모래를 퍼서 다른 구역으로 옮긴다고 했을 때 조금씩 여러번 옮기는 것보다 한 곳에 가득 채워서 (버퍼) 한 번에 나르는 것이 더욱 효율적일 것이다. 즉 버퍼를 사용하면 모아두었다가 한 번에 전송하기 때문에 효율적이다. buffer >데이터를 일시적으로 보관하..

    [Java] 스트림(stream)

    [Java] 스트림(stream)

    📌스트림이란? 많은 수의 데이터를 다룰 때, 컬렉션이나 배열에 데이터를 담고 원하는 결과를 얻기 위해 코드를 작성하면 너무 길고, 재사용성도 떨어진다. 이런 문제를 해결하기 위해 만든 것이 스트림(stream)이다. 스트림은 데이터 소스를 추상화하고, 데이터를 다루는데 자주 사용되는 메서드들을 정의해 놓았다. 데이터소스를 추상화하였다는 것은, 데이터 소스가 무엇이던 간에 같은 방식으로 다룰 수 있게 되었다는 것과 코드의 재사용성이 높아진다는 것을 의미한다. 즉, 스트림(Stream)은 컬렉션(배열 포함)의 저장 요소를 하나씩 참조해서 람다식으로 처리할 수 있도록 해주는 반복자이다. 간단한 예를 하나 보여주도록 하겠다. 뒤에서 자세히 설명할 것이니 그냥 보기만 해도 된다. //기존 Iterator List..

    [Java] 람다식 (Lambda expression)

    [Java] 람다식 (Lambda expression)

    📌람다식 (Lambda expression) 객체 지향 프로그래밍이 나오기 전부터 Lisp 또는 Scheme와 같은 함수적 프로그래밍 언어들이 있었다. 현업에서는 호응을 얻지 못하였지만, 빅데이터가 각광받으면서 이를 프로그램적으로 다룰 방법이 필요해짐에 따라 멀티 코어를 활용한 분산처리와, 병렬화 기술이 필요하였다. 즉 이제 하나의 CPU안에 다수의 코어를 삽입하는 멀티 코어 프로세서들이 등장하면서 일반 프로그래머에게도 병렬화 프로그래밍에 대한 필요성이 생기기 시작했다. 이러한 추세에 대응하기 위해 Java 8에서는 병렬화를 위해 컬렉션(배열, List, Set, Map)을 강화했고, 이러한 컬렉션을 더 효율적으로 사용하기 위해 스트림(Stream)을 강화했다. 또 스트림을 효율적으로 사용하기 위해 함수..

    [Java] 멀티 스레드

    [Java] 멀티 스레드

    📌프로세스와 스레드 프로세스(process)란 간단히 말해서 '실행 중인 프로그램'이다. 프로그램을 실행하면 OS로부터 실행에 필요한 자원(메모리)을 할당받아 프로세스가 된다. 또한 하나의 프로그램(어플리케이션)은 다중 프로세스를 만들기도 하는데, 예를 들어 이클립스 프로그램을 두 개 실행한다거나, Chrome 브라우저를 두 개 실행했다면 두 개의 Chrome 프로세스 혹은 이클립스 프로세스가 생성된 것이다. 멀티 태스킹은 두 가지 이상의 작업을 동시에 처리해주는 것을 말하는데, OS는 멀티 태스킹을 할 수 있도록 CPU 및 메모리 자원을 프로세스마다 적절히 할당해주고, 병렬로 실행시킨다. 즉, 동시에 여러 프로세스를 실행시키는 것이다. 예를 들어 웹 서핑을 하면서 넷플릭스를 감상하는 경우가 바로 멀티 ..

    [Java] 날짜와 시간(Date, Calendar 클래스) & 형식(Format 클래스)

    [Java] 날짜와 시간(Date, Calendar 클래스) & 형식(Format 클래스)

    📌Date 클래스 Date는 날짜를 표현하는 클래스이다. Date() 생성자는 컴퓨터의 현재 날짜를 읽어 Date 객체로 만든다. 현재 날짜를 문자열로 얻고 싶다면 toString() 메소드를 사용하면 된다. toString() 메소드는 영문으로 날짜를 리턴하기 때문에 만약에 한글로 출력하고 싶다 던지 혹은 다른 문자열 포맷으로 얻고 싶다면 java.text.SimpleDateFormat 클래스를 이용하면 된다. Date now = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy 년 MM월 dd일 hh시 mm분 ss초"); String strNow = sdf.format(now); System.out.println(strNow); //2022..

    [Java]Java.lang 패키지 (Object, System, Class, String, String, Pattern, Arrays, Math, Wrapper)

    [Java]Java.lang 패키지 (Object, System, Class, String, String, Pattern, Arrays, Math, Wrapper)

    📌java.lang 패키지 클래스 용도 Object -자바 클래스의 최상위 클래스로 사용 System -표준 입력 장치(키보드)로부터 데이터를 입력받을 때 사용 -표준 출력 장치(모니터)로 출력하기 위해 사용 -자바 가상 기계를 종료시킬 때 사용 -쓰레기 수집기를 실행 요청할 때 사용 Class -클래스를 메모리로 로딩할 때 사용 String -문자열을 저장하고 여러 가지 정보를 얻을 때 사용 StringBuffer, StringBuilder -문자열을 저장하고 내부 문자열을 조작할 때 사용 Math -수학 함수를 이용할 때 사용 Wrapper (Byte, Short, Character, Integer, Float, Double, Boolean -기본 타입의 데이터를 갖는 객체를 만들 때 사용 -문자열을..

    Java 스레드(Thread)

    Java 스레드(Thread)

    스레드(Thread) Java에서 Thread는 프로그램의 실행 흐름을 나타내는 독립적인 실행 단위입니다. 여러 개의 스레드가 동시에 실행될 수 있으며, 각 스레드는 독립적으로 실행될 수 있습니다. 스레드를 사용하면 동시에 여러 작업을 수행하거나 백그라운드에서 작업을 처리할 수 있습니다. ※메인 스레드 Java 어플리케이션은 메인 스레드가 main() 메소드를 실행하면서 시작됩니다. 메인 스레드는 필요에 따라 작업 스레드들을 만들어서 병렬로 코드를 실행할 수 있습니다. 즉 멀티 스레드를 생성해서 멀티 태스킹을 수행합니다. 싱글 스레드 어플리케이션에서는 메인 스레드가 종료하면 프로세스도 종료됩니다. 하지만 멀티 스레드 어플리케이션에서는 실행 중인 스레드가 하나라도 있다면, 프로세스는 종료되지 않습니다. 즉..

    [Java] 컬렉션

    [Java] 컬렉션

    📌컬렉션 프레임워크 (Collections framework) 객체들을 효율적으로 추가, 삭제, 검색할 수 있도록 java.util 패키지에 컬렉션과 관련된 인터페이스와 클래스들을 포함시켜 놓았다. 이들을 총칭해서 컬렉션 프레임워크(Collections framework)라고 부른다. 컬렉션이란 수집해서 저장하는 것이고, 프레임워크란 사용방법을 미리 정해 놓은 라이브러리를 말한다. 자바 컬렉션 프레임워크는 몇 가지 인터페이스를 통해서 다양한 컬렉션 클래스를 이용할 수 있도록 하고 있다. 컬렉션 프레임워크의 주요 인터페이스로는 List, Set, Map이 있다. 컬렉션 프레임워크의 핵심 인터페이스 List와 Set은 공통된 부분이 많아 이 인터페이스들의 공통점을 뽑아 새로운 Collection 인터페이스로..