Software engineer/Java
-
[Java] #10 Java 8에서 추가된 기능 소개 - 현대적인 개발 경험을 위한 힘든 시간에서 효율적인 코드 작성으로!Software engineer/Java 2023. 6. 28. 10:51
이번 블로그 글에서는 Java 8에서 추가된 기능에 대해 소개하려고 합니다. Java 8은 기존 Java 프로그래밍의 패러다임을 크게 바꾸어주는 중요한 업데이트였습니다. Java 8은 강력한 기능과 문법적 개선을 통해 개발자들에게 현대적이고 효율적인 개발 경험을 제공합니다. Java8 추가된 기능 람다 표현식 함수형 인터페이스 스트림 날짜와 시간 API 기본 메서드 Optional 클래스 1. 람다 표현식 (Lambda Expressions) 람다 표현식은 익명 함수를 생성하기 위한 간단한 문법을 제공합니다. 함수형 인터페이스를 구현하는 객체를 생성하지 않고도 코드 블록을 전달할 수 있습니다. List numbers = Arrays.asList(1, 2, 3, 4, 5); // 람다 표현식을 사용하여 리..
-
[Java] #9 네트워크(Network)Software engineer/Java 2023. 5. 4. 13:43
네트워크(Network) Java Networking은 Java에서 제공하는 네트워크 프로그래밍 API입니다. Java에서는 네트워크 프로그래밍을 위한 클래스와 인터페이스를 제공하여 TCP/IP, UDP, HTTP, FTP, SMTP/POP3 등 다양한 프로토콜을 사용하는 네트워크 애플리케이션을 개발할 수 있습니다. Client/Server Java Networking에서는 클라이언트(Client)와 서버(Server) 모델을 사용하여 네트워크 프로그래밍을 구현합니다. 클라이언트(Client)는 서버에 요청을 보내는 역할을 하며, 서버(Server)는 클라이언트의 요청에 대해 응답을 반환하는 역할을 합니다. 이 모델을 사용하여 네트워크 애플리케이션을 구현할 때는 다음과 같은 순서로 작업을 진행합니다. 서..
-
[Java] #8 입출력(Input/Output)Software engineer/Java 2023. 5. 3. 21:50
입출력(Input/Output) Java I/O(Input/Output)는 Java에서 데이터를 읽고 쓰는 기능을 제공하는 API입니다. Java I/O는 java.io 패키지를 통해 제공되며, 파일, 네트워크, 키보드, 마우스 등 다양한 소스에서 데이터를 읽고 쓸 수 있습니다. Java I/O는 다음과 같은 종류의 스트림(Stream)을 제공합니다. 바이트 스트림: 바이트 단위로 데이터를 처리하는 스트림으로, InputStream과 OutputStream 클래스를 사용합니다. 문자 스트림: 문자 단위로 데이터를 처리하는 스트림으로, Reader와 Writer 클래스를 사용합니다. 객체 스트림: 객체를 직렬화하여 데이터를 처리하는 스트림으로, ObjectInputStream과 ObjectOutputStr..
-
[Java] #7 스레드(Thread)Software engineer/Java 2023. 5. 2. 22:52
스레드(Thread) Java에서 스레드(Thread)는 프로그램의 실행 흐름을 분기하여 동시에 처리할 수 있도록 하는 기능입니다. Java에서 스레드를 사용하면 여러 작업을 동시에 실행할 수 있으므로, 병렬성(parallelism)을 구현할 수 있습니다. Java에서 스레드를 사용하기 위해서는 다음과 같은 방법들이 있습니다. Thread 클래스 상속 Thread 클래스를 상속받아 run() 메소드를 오버라이딩하여 스레드 동작을 구현합니다. class MyThread extends Thread { @Override public void run() { // 스레드 동작 구현 } } MyThread thread = new MyThread(); thread.start(); Runnable 인터페이스 구현 Ru..
-
[Java] #6 람다(Lambda), 스트림(Stream)Software engineer/Java 2023. 5. 2. 16:24
람다(Lambda) Java 8에서 추가된 람다(lambda)는 익명 함수(anonymous function)를 정의하는 방법입니다. 한마디로 함수의 표현 형식입니다. 람다를 사용하면 코드를 간결하게 작성하고, 코드의 가독성과 유지보수성을 높일 수 있습니다. 람다는 다음과 같은 문법으로 정의됩니다. // return이 없는 경우 (parameters) -> expression (parameters) -> { statements; } // return문의 경우 중괄호(Braces)와 함께 생략 가능 // (parameters) -> { return result; } (parameters) -> result; 위 문법에서, parameters는 메서드의 매개변수를 나타내며, expression 또는 stat..
-
[Java] #5 제네릭(Generics), 이넘(Enum), 어노테이션(@, Annotation)Software engineer/Java 2023. 5. 1. 11:26
제네릭(Generic) 제네릭은 클래스나 메서드에서 사용할 데이터 타입을 컴파일 시에 지정할 수 있도록 하는 기능입니다. 제네릭을 사용하면 클래스나 메서드를 재사용하기 쉬워지며, 타입 안정성(type safety)을 보장할 수 있습니다. 컬렉션(Collection) Java에서 제공하는 대부분의 컬렉션은 제네릭을 사용합니다. 제네릭을 사용하지 않은 컬렉션은 Object 타입으로 요소를 저장하기 때문에, 요소를 꺼낼 때 타입 캐스팅이 필요합니다. 이렇게 타입 캐스팅을 하면 코드의 가독성과 안정성이 떨어지며, 오류 발생 가능성도 높아집니다. List list = new ArrayList(); list.add("hello"); String str = (String) list.get(0); // 타입 캐스팅 필..
-
[Java] #4 배열(Array), 컬렉션(Collection), 맵(Map)Software engineer/Java 2023. 4. 30. 15:55
개발을 하다 보면 많은 양의 데이터를 다뤄야 한다. 그럴 경우 굉장히 유용한 방법은 배열과 컬렉션 그리고 맵을 사용하는 방법이다. 배열(Array) 배열이란 기본형과 참조형 타입의 데이터를 순서대로 저장하고 처리하는 자료구조입니다. 만약 10명의 나이를 저장하고 처리해야한다고 했을 때 10개의 변수를 선언하고 그들의 평균을 구한다고 하면 10개 변수를 모두 더하고 나누는 귀찮은 작업을 해야 한다. 배열을 이용하면 손쉽게 처리가 가능하다. int totalAge = 0; int[] ageArray = new int[]{12, 23, 31, 21, 22, 28, 19, 18, 22, 41 }; for(int age:ageArray){ totalAge+=age; } System.out.println("avgA..
-
[Java] #3 제어문(Control statements)Software engineer/Java 2023. 4. 28. 21:59
제어문(Control statements) 제어문은 프로그램의 흐름을 제어하는 경우에 사용하는 실행문으로 조건문, 반복문, 분기문 등이 포함되어 있다. 조건문(Conditional statements) 비즈니스 로직을 구현하는 경우 필수적인 요소이다. 조건문을 통해 수많은 조건에 따라 실행하거나 아니거나 또는 서로 다른 기능을 실행하도록 구현할 수 있다. 하지만 오래된 레거시 프로젝트에 경우 수많은 조건문이 코드 곳곳에 숨어 있어 유지보수하는데 큰 어려움을 주기도 하기 때문에 한번 사용할 때도 신중하게 고려하는 마음을 길러보자. 조건문 종류 if/ if-else/ if-else if if(조건){ // 코드 } if문 문법은 조건부에는 true or false가 올 수 있으며, 조건부가 true이면 {}..