[Java] JDK와 JRE의 차이점
2023. 6. 7. 20:22
프로그래밍/JAVA
JDK와 JRE JDK는 JRE를 포함하고 있으며, JRE는 JDK의 일부 따라서 개발자는 JDK를 다운받으면 됨 JDK(Java Development Kit) Java 개발 도구 모음으로, Java 개발에 필요한 모든 도구와 라이브러리를 포함함 JDK는 JRE를 포함 주요 구성 요소 컴파일러(Compiler): Java 소스 코드를 컴파일하여 기계어로 변환하는 도구. 컴파일된 코드는 JVM(Java Virtual Machine)에서 실행. 디버거(Debugger): 애플리케이션의 실행 중에 버그를 찾고 수정하는 도구 개발 도구(Development Tools): Java 개발에 도움이 되는 다양한 도구들이 포함. 예를 들어, 개발 환경을 설정하는 도구, 성능 분석 도구, 문서화 도구 등. 라이브러리(L..
[Java] @NoArgsConstructor @AllArgsConstructor 비교
2023. 6. 1. 20:51
프로그래밍/JAVA
@NoArgsConstructor @AllArgsConstructor 비교 롬복(Lombok) 라이브러리에서 제공하는 어노테이션 개발자는 생성자 관련 코드를 직접 작성하지 않고도 편리하게 객체를 생성하고 초기화할 수 있음 @NoArgsConstructor 매개변수가 없는 기본 생성자를 자동으로 생성 이를 통해 객체를 생성할 때 매개변수를 전달하지 않고도 기본 생성자를 사용할 수 있음 @NoArgsConstructor public class MyClass { // 필드, 메서드 등 클래스의 내용 } @AllArgsConstructor 모든 필드를 인자로 받는 생성자를 자동으로 생성 이를 통해 객체를 생성하고 필드 값을 한 번에 초기화할 수 있음 @AllArgsConstructor public class M..
[Java] 컴파일 에러와 런타임 에러
2023. 5. 31. 20:57
프로그래밍/JAVA
컴파일 에러와 런타임 에러 컴파일 에러는 프로그래밍 단계에서 발생하며, 컴파일러가 코드를 분석할 때 확인 가능 대부분의 통합 개발 환경 (IDE)에서는 컴파일 에러를 강조 표시하고 오류 메시지를 제공하여 실시간으로 확인할 수 있음 반면, 런타임 에러는 프로그램이 실행 중에 발생하므로 디버깅 도구와 예외 처리를 통해 해결해야 함 런타임 에러는 프로그램의 실행 상태, 데이터 입력, 외부 환경 등 다양한 요소에 따라 발생할 수 있음 컴파일 에러 (Compile Error) 컴파일러는 소스 코드를 분석하고 변환하는 과정에서 발생하는 에러 일반적으로 문법 오류, 타입 불일치, 잘못된 메서드 사용 등으로 인해 발생 컴파일 에러는 소스 코드를 컴파일하기 전에 발생하며, 프로그램이 실행되기 전에 수정되어야 함 컴파일 ..
[Java Error] class java.lang.Integer cannot be cast to class java.lang.Long 해결 방법
2023. 5. 23. 20:47
프로그래밍/JAVA
class java.lang.Integer cannot be cast to class java.lang.Long 에러 원인 java.lang.Integer 타입을 java.lang.Long 타입으로 캐스팅할 수 없다는 에러 Integer와 Long은 서로 다른 클래스이기 때문에 직접적인 캐스팅은 불가능 나의 경우 직접 캐스팅 할 수 없음에도 캐스팅 하려고 해서 에러 발생 if((Long) obj.get("input")) == longValue) { ... } 해결 방법 JSON 객체에서 가져온 "input" 값이 Number 타입으로 캐스팅 후, 이를 long 타입으로 변환하여 사용 long input = ((Number) obj.get("input")).longValue(); if(input == lo..
[Java] 개선된 Switch문 (Switch Expression)
2023. 5. 22. 20:23
프로그래밍/JAVA
Switch Expression Java 12 버전에 preview에 소개된 Switch Expression은 Java 14 버전에서 표준화 됨 기존의 Switch문과 비교하여 몇 가지 특징이 있음 화살표(->) 연산자 int day = 1; String dayOfWeek = switch (day) { case 1 -> "Monday"; case 2 -> "Tuesday"; case 3 -> "Wednesday"; case 4 -> "Thursday"; case 5 -> "Friday"; default -> "Unknown"; }; System.out.println(dayOfWeek); // 출력: "Monday" 각 case 문의 실행 코드 뒤에 화살표(->) 연산자를 사용하여 실행할 블록을 지정함. ..
[Java] Stream에서 index 사용하기
2023. 5. 19. 20:27
프로그래밍/JAVA
Stream에서 index 사용하기 Stream은 index를 알 수 없지만 AtomicInteger를 사용하여 index 생성하여 사용 가능함 AtomicInteger는 원자적인 연산을 제공하는 클래스임 여러 스레드에서 동시에 접근하는 경우 데이터의 일관성이 보장됨 연산을 통해 증가, 감소, 비교 및 교환 연산 가능 주요 메서드 get() 객체의 현재 값을 반환 set(int newValue) 객체의 값을 주어진 newValue로 설정 getAndSet(int newValue) 객체의 현재 값을 반환하고, 동시에 값을 주어진 newValue로 설정 incrementAndGet() 객체의 값을 1 증가시킨 후, 그 증가된 값을 반환 decrementAndGet() 객체의 값을 1 감소시킨 후, 그 감소된..
[Java] LocalDate 해당 월의 마지막 날짜 구하기
2023. 5. 18. 20:12
프로그래밍/JAVA
LocalDate 해당 월의 마지막 날짜 구하기 lengthOfMonth()withDayOfMonth() 메서드와 lengthOfMonth() 메서드를 사용한 첫 번째 방법 //기준일자 LocalDate date = LocalDate.parse("2023-05-16"); //해당 월의 첫째 날 LocalDate firstDate = date.withDayOfMonth(1); // 2023-05-01 //해당 월의 마지막 날 LocalDate lastDate = date.withDayOfMonth(date.lengthOfMonth()); // 2023-05-31 YearMonth 타입을 활용한 두 번째 방법 //기준일자 LocalDate date = LocalDate.parse("2023-05-16"); ..
[Java] Stream sorted 여러개 정렬하기
2023. 5. 10. 20:50
프로그래밍/JAVA
Java Stream sorted 여러개 정렬하는 방법 여러 방법이 있지만 간단한 방법은 정렬 순서대로 작성하여 + 로 연결해주기 List sortedList = orderList.stream() .sorted(Comparator.comparing(item -> item.getOrderNo() + item.getSeq())) .collect(Collectors.toList());