Programming/Java

Java - BigDecimal 사용법 및 예제 최근 금융관련 프로젝트를 진행하면서 금액관련 정확한 연산을 위해 BigDecimal을 사용한 적이 있다. 오늘은 정말 간만에 BigDecimal 관련해서 기록할 것이다. 💡 BigDecimal 사용하는 이유 Java에서는 소수점을 저장할 수 있는 float과 double이라는 타입이 존재한다. 하지만 이 2가지 type의 경우는 소수점의 정밀도가 완벽하지 않아 값의 오차가 생길 여지가 존재한다. 이유는 내부적으로 수를 저장할 때 이진수의 근사치를 저장하기 때문이라고 한다. 때문에 이번 금융프로젝트는 돈과 이율 등 과 관련이 높기 때문에 미세한 숫자의 변동도 허용해서는 안되기 때문에 BigDecimal을 사용한다. 💡 BigDecimal 사용법 기본적으로 B..
StringBuilder는 무엇인가? JAVA에서 StringBuilder 와 StringBuffer 는 String 클래스 처럼 문자열을 다루는 클래스이다. String은 소위 불변(immutable) 객체라고 한다. String str1 = "abc"; String str2 = "def"; str1 + str2; // 새로운 String 객체 생성 위처럼 String 클래스가 문자열을 생성자로 넣어 인스턴스를 한 번 생성하고 나면 인스턴스가 가진 문자열 값을 변경하지 못하는 String 클래스의 단점을 보완했다. 즉, 같은 인스턴스 안의 문자열의 값을 변경할 수 있도록 되어있으며 원본 문자열을 바꿀 수 있는만큼 문자열을 다루는 메소드도 더 많이 포함되어 있다. 두 가지 클래스는 모두 쓰임과 메서드가 ..
좋은 조건문에 대해 2 - if/else문, switch/case문의 성능 차이 조건문에는 if / else 문도 있지만 switch / case 문도 있다. 개인적으로 이 둘의 '가독성' 차이는 별로 없다고 생각하여 개발자마다 취향 차이가 있을 뿐이라고 생각한다. 하지만, 위 주장은 조건문의 방법이 달라진다고 해서 '성능' 차이는 크게 발생하지 않는다는 전제가 있어야 한다. 💡 switch문 if-else문과 switch문 중 어떤 조건문이 성능적으로 좋은가를 찾아보니 switch-case문의 성능이 우수하다는 의견이 많았다. 그래서 swtich-case문의 성능을 한번 들여다 보기로 했다. if-else문 과 switch문 if-else문은 원하는 조건이 나올 때 까지 순차적으로 모든 경우를 비교하지..
좋은 조건문에 대해 1 - 왜 좋은 조건문을 작성해야 할까? 오늘은 그동안 한번씩 생각해 봤던 "좋은 조건문이란 것은 어떤 것이며, 어떻게 작성해야 할까?" 에 대해 포스팅하려고 한다. 📌 조건문은 어떠한 역할을 할까? 조건문은 프로그래밍에서 언어를 막론하고 절대 빼놓을 수 없는 간단하지만 매우 중요하다. 단순히 A조건에는 B로직, A가 아닌 조건에는 C로직이 수행된다는 개념을 떠나 새로운 조건이 계속해서 생겨난다면 그 조건 전체가 서비스의 복잡도를 결정할 만큼 중요한 요소라고 생각한다. 좋은 조건문은 이러한 요소를 좋게 만든다는 것을 말한다. 📌 그렇다면 좋은 조건문이란 어떻게 작성해야 할까? 우선적으로 고려해야 하는 것은 '가독성'이다. 모든 서비스는 개발하고 땡이 아니다. 유지보수를 필요로하고 그 ..
상속을 사용하는 이유는 무엇일까? 💡 상속을 사용하는 이유 공통적인 부분을 가지고 있는 상위 클래스를 활용해 하위 클래스는 본인 고유의 상태와 행동을 정의하기 위함 코드의 확장성, 재사용성이 용이하고 중복된 코드를 상위 클래스로 빼기 때문에 코드가 간결해짐 결과적으로 유지보수가 쉬워짐 💡 이해를 돕기 위한 예시 여러분 예를들어 자동차, 기차, 선박, 항공기, 우주선 클래스를 정의한다고 가정해봅시다. 이들의 공통점은 운반의 수단이 된다는 것입니다. 그럼 이제 항공기와 열차를 각 각 클래스 별로 정의해봅시다. ✔️ 항공기 탑승인원, 짐의 무게, 승무원의 인원 등 👉 멤버 변수 탑승하는 메서드, 짐싣는 메서드, 승무원의 탑승 등 👉 멤버 메서드 ✔️ 열차 탑승인원, 짐의 무게, 열차의 칸 수 등 👉 멤버 변수..
우리가 알고있는 일반적인 큐(Queue)는 FIFO(First In - First Out) 구조입니다. 즉, 어떤 부가적인 조건 없이 먼저 들어온 데이터가 먼저 나가는 구조였습니다. 1. 우선순위 큐 - Priority Queue 1.1 우선순위 큐 (Priority Queue)란? 우선순위 큐(Priority Queue)는 들어간 순서에 상관없이 우선순위가 높은 데이터가 먼저 나오는 구조입니다. 우선순위 큐는 힙(Heap)이라는 자료구조를 가지고 구현할 수 있습니다. 일상적인 예를 들자면, 제일 응급한 환자부터 치료하는 병원의 응급실이라고 할 수 있습니다. 즉, 우선순위가 가장 높은 환자부터 먼저 치료를 하는 것입니다. 1.2 우선순위 큐를 구현하는 방법 1.2.1 구현 방법 종류 1. 배열(Array..
HashMap 정렬하기 TreeMap을 사용하면 데이터를 저장할 때 키(key)로 자동 정렬을 해주지만 HashMap은 정렬하는 방법을 이용해야 합니다. HashMap을 정렬하기 위해 java.util.Arrays - Arrays.sort 메서드를 사용해야 합니다. HashMap 키(key) 기준으로 정렬 import java.util.Map; import java.util.HashMap; import java.util.Arrays; public class Main { public static void main(String[] args){ Map animalMap = new hashMap(); animalMap.put(3, "monkey"); animalMap.put(1, "tiger"); animalM..
Java - 현재 실행중인 클래스명 / 메서드명 추출하기 프로그래밍을 하다보면 현재 실행 중인 클래스(Class)명이나, 메서드(method)명을 추출해서 활용해야 하는 경우가 있습니다. 디버그 로그를 출력하거나 에러를 확인할 때 등등 다양한 측면에서 활용이 가능합니다. 👉 우린 이것을 자바 표준 라이브러리만으로 클래스(class)명 또는 함수(method)명을 추출하는 방법을 알아보겠습니다. 클래스(Class) 이름 추출 ✔️ 클래스가 실행될 때 추출하는 방법 public class Test { public static void main(String[] args) { String className = new Object(){}.getClass().getEnclosingClass().getName(); ..
코딩무니
'Programming/Java' 카테고리의 글 목록 (2 Page)