전체 글(94)
-
[Java] 자바에서 예외(Exception) 처리를 하는 이유
프로그램을 만들다 보면 많은 오류가 발생한다. 자바는 안정성을 중요시하는 언어로 프로그램이 정상적으로 작동하게 하기를 위하는 것이다. 하지만 때로는 이러한 오류를 무시하고 싶을 때도 있고, 오류가 날 때 그에 맞는 적절한 처리를 하고 싶을 때도 있다. 그래서 자바는 try_catch, throw 구문을 이용해 오류를 처리한다. 프로그램 오류 컴파일 오류(compile error) : 프로그램 코드 작성 중 발생하는 문법적 오류 - 최근에는 개발 환경(IDE)에서 대부분의 컴파일 오류를 알려준다 실행 오류(runtime error) : 실행 중인 프로그램이 의도하지 않은 동작을 하거나 프로그램이 중지되는 오류 - 프로그램이 비정상적으로 종료되는 경우 시스템에 심각한 장애를 발생시킬 수 있다 예외 처리의 중..
2022.02.26 -
[Java] 스트림(Stream) 활용 예제
자바 스트림을 활용하여 간단한 코드를 작성해보자 예제 정의 어떤 온라인 게임에 전투력 10,000을 넘어야 입장할 수 있는 던전이 있다. 그리고 여러 명의 유저가 파티를 맺으면 전투력을 합칠 수 있다. 유저 세명이 파티를 맺었다고 했을 때 전투력 계산과 유저 검색 등에 대한 연산을 스트림을 활용하여 구현해보자. 유저에 대한 클래스를 만들고 배열로 유저를 관리한다. 파티를 맺은 유저 세명의 정보는 다음과 같다. user1 name : 몰입맨 level : 10 power : 3000 user2 name : 코딩맨 level : 20 power : 4000 user3 name : 코딩걸 level : 15 power : 3500 유저 클래스 public class User { private String na..
2022.02.26 -
[Java] 스트림(Stream) - reduce()
reduce() 연산 정의된 연산이 아닌 프로그래머가 직접 구현한 연산을 적용한다 최종 연산으로 스트림의 요소를 소모하며 연산을 수행한다 // 배열의 모든 요소의 합을 구하는 reduce() 연산 구현 Arrays.stream(arr).reduce(0, (a, b) -> a + b)); reduce() 메서드의 두 번째 요소로 전달되는 람다식에 따라 다양한 기능을 수행할 수 있다 람다식을 직접 구현하거나 람다식이 긴 경우 BinaryOperator를 구현한 클래스를 사용한다 배열 안에 있는 문자열 중 가장 긴 문자열 찾기 import java.util.Arrays; import java.util.function.BinaryOperator; // BinaryOperator를 구현한 클래스 class Com..
2022.02.26 -
[Java] 스트림(Stream)
스트림(Stream)이란? 자료의 대상과 관계없이 동일한 연산을 수행한다 배열, 컬렉션을 대상으로 연산을 수행한다 일관성 있는 연산으로 자료 처리를 쉽고 간단하게 한다 자료 처리에 대한 추상화가 구현되어있다 한번 생성하고 사용한 스트림은 재사용할 수 없다 자료에 대한 스트림을 생성하여 연산을 수행하면 스트림은 소모된다 다른 연산을 수행하기 위해서는 스트림을 다시 생성해야 한다 만약 한번 사용한 스트림을 재사용하면 java.lang.IllegalStateException: stream has already been operated upon or closed (스트림이 이미 작동되었거나 닫혔습니다) 이렇게 에러가 나는 것을 확인할 수 있다 int[] arr = {1,2,3}; int sum = Arrays...
2022.02.24 -
[Java] 객체 지향 프로그래밍 vs 람다식
객체 지향 프로그래밍과 람다식(함수형 프로그래밍)을 비교해보자. 문자열을 연결하는 예제로 두 가지 방식을 구현해 보면서 비교해보자 인터페이스 생성 public interface StringConcat { public void myString(String str1, String str2); } 인터페이스를 구현하는 클래스 생성 public class StringConcatImpl implements StringConcat { @Override public void myString(String str1, String str2) { System.out.println(str1 + str2); } } 메인 클래스 생성 public class StringConcatTest { public static void ma..
2022.02.23 -
[Java] 함수형 인터페이스로 람다식 구현
자바에서 함수형 인터페이스로 간단한 람다식을 구현해보자. 자바 인터페이스를 생성 package lambda; @FunctionalInterface public interface MyNumber { int getMin(int num1, int num2); } 함수형 인터페이스를 사용하려면 @FunctionalInterface 어노테이션을 붙여줘야 한다. 자바 클래스 생성 package lambda; public class MyNumberTest { public static void main(String[] args) { MyNumber myNumber = (x, y) -> x > y ? y : x; // 삼항 연산자 : (조건 ? true : false) System.out.println(myNumber...
2022.02.22