본문 바로가기

개발언어/Java : 자바22

자바 쉽게 배우기 22 - 입출력 스트림 스트림 스트림은 물줄기를 의미합니다. 입출력 스트림 또한 입출력을 위한 흐름을 의미합니다. 데이터는 출발지에서 목적지로 향합니다. 이 향하는 길을 이어주는 것이 입출력 스트림입니다. 프로그램이 입력을 받을 때 입력 스트림을, 프로그램에서 출력을 할 때 출력 스트림을 사용합니다. 입출력 스트림은 java.io 패키지에서 사용할 수 있습니다. 스트림은 바이트 단위의 전송이 이뤄지는 바이트 기반 스트림과 문자 단위의 전송이 이뤄지는 문자 기반 스트림으로 구분됩니다. 바이트 기반 스트림 바이트 단위의 데이터 전송이 이뤄지는 스트림입니다. 입력 : InputStream 바이트 기반 입력 스트림의 최상위 클래스입니다. 주요 메서드 메서드 설명 abstract int read () 1byte를 읽고 읽은 byte를 .. 2023. 9. 19.
자바 쉽게 배우기 21 - 람다 잠시 쉬어가는 글로 람다에 대해서 설명드릴까 합니다. 사실 람다가 자바에 도입된 것은 jdk1.8부터(2014년)입니다. 비교적 최근에 추가된 것이죠. 람다가 도입되면서 객체 지향 언어인 자바가 함수형 언어로의 성격까지 갖게 되었습니다. ❓ 함수형 언어란 무엇인가요? 함수형 언어는 함수형 기능들을 사용해 변수의 사용을 최소화한 프로그래밍에 사용되는 언어입니다. 람다 람다가 무엇이기에 함수형 언어로의 성격을 더해준 것일까요? 람다란 메서드를 하나의 식으로 표현한 것입니다. 람다를 사용하면 메서드를 간략한 방식으로 표현할 수 있습니다. 또한 람다식을 매개변수로 전달하거나 메서드의 결과로 반환하는 것도 가능합니다. 메서드를 람다식으로 변환하기 일반 메서드 반환타입 메서드명 (매개변수) { ... return .. 2023. 9. 18.
자바 쉽게 배우기 20 - 스레드 스레드 스레드를 이해하기 위해서는 프로세스를 알아야 합니다. 자바 쉽게 배우기 1 - 자바란 무엇인가? 에서 멀티 스레드와, 프로세스, 스케쥴링에 대해 설명드렸었는데 기억하시는 분이 있으실까요? - 자바의 멀티스레드는 시스템과 관계없이 구현이 가능합니다. - 멀티 스레드 라이브러리를 제공합니다. - 여러 스레드에 대한 스케쥴링을 자바 인터프리터가 담당합니다. ❓ 멀티스레드란 무엇인가요? - 멀티스레드는 한 프로세스 안에서 여러 개의 일이 동시에 진행되는 것을 의미합니다. ❓ 스케쥴링은 무엇인가요? - 스케쥴링이란 프로세스가 생성되어 실행될 때 필요한 자원들을 할당하는 작업을 뜻합니다. ❓ 프로세스란 무엇인가요? - 일반적으로 실행 중인 프로그램을 의미하고, 작업(Job) 혹은 태스크(Task)라고 불리기.. 2023. 9. 15.
자바 쉽게 배우기 19 - 열거형 (Enum) jdk 1.5부터 추가된 열거형은 관련된 여러 상수를 한 데 모아 정의할 때 사용하는 타입입니다. 자바의 열거형 타입을 사용하면 상수의 값 비교 시 타입까지 비교합니다. 또한 열거형의 상수 값을 바꿀 때 기존의 소스를 다시 컴파일하지 않아도 된다는 장점이 있습니다. 열거형 선언과 사용 선언 enum 열거형이름 { 상수1, 상수2, ... , 상수n } 열거형 이름은 첫 글자를 대문자로 하는 것이 관례입니다. 상수는 모두 대문자로 작성하고, 여러 단어로 구성된 경우 단어 사이를 밑줄_로 연결합니다. 선언된 상수들은 순서에 따라 0부터 1씩 증가하는 값을 가집니다. 선언된 상수들은 하나하나가 모두 객체입니다. enum 열거형이름 { 상수1(값1), 상수2(값2), ... , 상수n(값n); // 하나의 상수.. 2023. 2. 21.
자바 쉽게 배우기 18 - 지네릭스 지네릭스, 제네릭스 (Generics) 이번 글에서는 지네릭스에 대해 알아보겠습니다. 사실 이전에 컬렉션 프레임워크에서 지네릭스를 한 번 언급했던 적이 있습니다. 추후에 설명하겠다고 하고 넘어왔었는데요. 바로 이번 글에서 설명드립니다. 제네릭이라고도 불리는 지네릭스는 jdk 1.5부터 도입되었습니다. 타입을 미리 지정하지 않고 컴파일할 때 체크할 수 있도록 하는 기능입니다. 미리 타입을 지정해 두면 타입을 형변환하거나 체크해야 하는 번거로움이 있습니다. 지네릭스를 사용하면 이와 같은 부담에서 벗어날 수 있습니다. 지네릭스는 클래스와 메서드에 선언할 수 있습니다. 어떻게 선언하고 사용하는지 살펴봅시다. 1. 지네릭 클래스 지네릭스는 대부분 Type의 첫 글자 T를 사용해 표시하지만 다른 기호를 사용해도 상.. 2023. 2. 20.
자바 쉽게 배우기 17 - Arrays Arrays 클래스 배열을 다루는 Arrays 클래스에 대해 알아봅시다. Arrays는 java.util패키지의 속하는 클래스입니다. Arrays 클래스의 메서드는 전부 static 메서드이므로 Arrays.메서드명()을 사용해 호출할 수 있습니다. 복사 리턴타입 메서드명 설명 배열 copyOf(배열) 배열을 복사하여 새로운 배열로 반환 배열 copyOfRange(배열, int from, int to) 배열의 일부를 복사하여 새로운 배열로 반환 (from 이상 to 미만) 채우기 리턴타입 메서드명 설명 void fill(배열, 채울 값) 배열의 모든 요소를 지정한 값으로 채움 void setAll(배열, 함수형 인터페이스를 구현한 객체 or 람다식) 배열의 요소들을 객체, 혹은 람다식에 맞게 채움 정렬과.. 2023. 2. 14.
자바 쉽게 배우기 16 - 컬렉션 프레임워크(3) : Map, Iterator 이전글 보러 가기 자바 쉽게 배우기 14 - 컬렉션 프레임워크(1) : List 컬렉션 프레임워크 컬렉션 프레임워크는 배열처럼 다수의 데이터를 한 묶음으로 보관, 처리할 수 있는 구조를 의미합니다. 배열보다 많은 기능을 가지고 있어 자주 사용됩니다. jdk1.2에 등장했 devdharu.tistory.com 자바 쉽게 배우기 15 - 컬렉션 프레임워크(2) : Set, Queue 이전글 보러 가기 자바 쉽게 배우기 14 - 컬렉션 프레임워크(1) : List 컬렉션 프레임워크 컬렉션 프레임워크는 배열처럼 다수의 데이터를 한 묶음으로 보관, 처리할 수 있는 구조를 의미합니다. 배 devdharu.tistory.com 인터페이스 특징 List 순서가 있는 데이터의 집합으로 순서로 구분이 가능하기 때문에 데이.. 2023. 2. 10.
자바 쉽게 배우기 15 - 컬렉션 프레임워크(2) : Set, Queue 이전글 보러 가기 자바 쉽게 배우기 14 - 컬렉션 프레임워크(1) : List 컬렉션 프레임워크 컬렉션 프레임워크는 배열처럼 다수의 데이터를 한 묶음으로 보관, 처리할 수 있는 구조를 의미합니다. 배열보다 많은 기능을 가지고 있어 자주 사용됩니다. jdk1.2에 등장했 devdharu.tistory.com 인터페이스 특징 List 순서가 있는 데이터의 집합으로 순서로 구분이 가능하기 때문에 데이터의 중복을 허용합니다. 구현 클래스 : ArrayList, LinkedList, Stack, Vector 등 Set 순서가 없는 데이터의 집합으로 List와 달리 데이터의 중복을 허용하지 않습니다. 구현 클래스 : HashSet, TreeSet 등 Map 키(key)와 값(vallue)의 쌍(pair)으로 이루.. 2023. 2. 8.
자바 쉽게 배우기 14 - 컬렉션 프레임워크(1) : List 컬렉션 프레임워크 컬렉션 프레임워크는 배열처럼 다수의 데이터를 한 묶음으로 보관, 처리할 수 있는 구조를 의미합니다. 배열보다 많은 기능을 가지고 있어 자주 사용됩니다. jdk1.2에 등장했으며 자바는 컬렉션 프레임워크를 위한 다양한 인터페이스와 클래스들을 제공하고 있습니다. 인터페이스와 클래스들은 java.util 패키지에 포함되어 있으며 핵심 인터페이스는 List, Set, Map입니다. 사용하려면 해당 클래스를 import 해주어야 합니다. 컬렉션 프레임워크의 큰 틀은 모두 인터페이스로 설계되어 있고 이를 구현한 클래스들을 인스턴스화해 사용합니다. 각 인터페이스와 클래스들의 주요 메서드 위주로 알아봅시다. 인터페이스 특징 List 순서가 있는 데이터의 집합으로 순서로 구분이 가능하기 때문에 데이터의.. 2023. 2. 3.
자바 쉽게 배우기 13 - 날짜와 시간(2) 날짜와 시간 지난 글의 Date와 Calendar 클래스에 이어 time 패키지에 대해 알아봅시다. Java.time패키지 Java.time패키지는 jdk1.8부터 Date, Calendar 클래스를 보완하기 위해 추가되었습니다. time 패키지의 클래스들은 Calendar클래스와 달리 불변의 특성을 가지고 있어 멀티스레드 환경에서도 안전합니다. 핵심 클래스와 인터페이스 인터페이스 구현클래스 내용 Temproal, TemporalAccesser, TemporalAdjuster LocalDate 날짜 LocalTime 시간 LocalDateTime 날짜, 시간 ZonedDateTime 날짜, 시간, 시간대 클래스 내용 TemporalAdjusters 자주쓰는 날짜 계산 메서드들 정의 인터페이스 구현클래스 .. 2023. 1. 30.
자바 쉽게 배우기 12 - 날짜와 시간(1) 날짜와 시간 자바의 날짜와 시간은 Date와 Calendar 클래스, time패키지를 사용해 나타냅니다. Date, Calendar, time 패키지 순으로 발전되어 왔으며 최근에는 Date, Calendar를 대신하여 time 패키지를 사용하는 추세입니다. 날짜와 시간에 관해서는 관련 업무가 아니라면 깊게 이해할 필요는 없습니다. 백과사전이라고 생각하고 필요한 부분만 찾아 사용해 보세요. 이 글에서는 우선 Date와 Calendar 클래스에 대해 알아봅니다. 다음 글에서 time 패키지에 대해 다루겠습니다. Date 클래스와 Calendar 클래스 Date 클래스와 Calendar 클래스는 Java.util 패키지에 포함되어 있습니다. Calendar 클래스의 인스턴스 생성 Calendar Class는.. 2023. 1. 27.
자바 쉽게 배우기 11 - 예외 처리 예외 한 번에 완벽한 코드를 짤 수 있다면 얼마나 좋을까요? 하지만 그것은 환상에 가깝습니다. 항상 수많은 에러들이 프로그래머들을 기다리고 있습니다. 에러를 수정하는 일은 프로그래머들의 숙명입니다. 조각가들처럼 큰 형태를 만들고 세밀하게 깎아나가듯 에러를 잡아가며 프로그램을 완성합니다. [예외]는 프로그램 에러 중 런타임 에러의 한 종류입니다. 그럼 프로그램 에러부터 자세히 들어가 봅시다. 프로그램 에러 프로그램을 오작동시키는 에러에는 3가지 종류가 있습니다. 컴파일 에러 컴파일 시에 발생하는 에러로 컴파일러에 의해 어느 부분이 문제가 있는 지 알 수 있다. 예시) 오타, 구문오류, 자료형오류 런타임 에러 실행 시에 발생하는 에러 예시 ) 에러, 예외 논리적 에러 실행은 되지만, 의도와는 다르게 동작하는.. 2023. 1. 23.