BigDecimal이란?
·
💻 Dev/Java
자바의 신 11장을 학습하다가 대부분 java docs 사용법? 에 대한 내용이라 어떤 걸 정리해야 할지 몰라'직접해 봅시다'파트에 BigDecimal API를 열어보라고 하길래 알아보고자 했다.결제나 큰 숫자 다룰 때 사용한다고 들어서 중요하구나~라고 듣기만 했다. BigDecimal이란?java.math 패키지에 속한 클래스로 정밀한 숫자 연산에 사용된다.주로 금융이나 과학 계산 등에서 부동 소수점 연산의 오차를 방지하고 정확한 결과를 얻고자 할 때 사용된다. 부동 소수점 연산의 오차란?public class Main { public static void main(String[] args) { double a = 0.1; double b = 0.2; doub..
Immutable(불변성), StringBuffer와 StringBuilder
·
💻 Dev/Java
String str = "Hello";System.out.println("String 객체의 주소 : "+str.hashCode());str = str + " World";System.out.println("String 객체의 주소 : "+str.hashCode()); 리터럴로 선언한 문자열 객체의 주소를 출력하고, 문자열만 더한 다음 객체 주소를 다시 출력해 보는 코드이다. 다시 변수를 만든 것도 아닌데 주소가 같지 않을까?String 객체의 주소 : 3541040String 객체의 주소 : 1758230625하지만 아니다. 왜일까?자바에서 String 객체는 기존 객체를 재사용하지 않는다, 같은 객체에 더한다고 해도 새로운 객체가 생성되고 기존 객체는 GC의 대상이 된다.즉, String 클래스는 I..
자바 코드의 메모리 영역(스택&힙)
·
💻 Dev/Java
자바 프로그램에서 코드가 컴파일되어 JVM에서 실행되기까지 과정에서 JVM은 필요한 데이터들을 용도에 따라 나누어 관리한다. JVM의 메모리 공간은 크게 Method 영역, Stack 영역, Heap 영역으로 구분되고 데이터 타입(자료형)에 따라 각 영역에 나눠서 할당된다.   메서드 영역(Method Area)메서드 영역은 JVM이 시작될 때 생성되는 곳으로 클래스 변수(Static 변수), 생성자(constructor)와 메서드(method) 등이 저장되는 공간이다.Static 영역이라고도 불리며 어느 곳에서나 접근이 가능하다.모든 스레드에서 공유되어 멀티 스레드 환경에서 동기화에 주의해야 한다.메서드 영역의 데이터는 프로그램이 종료될 때까지 메모리에 남아있다.그래서 프로그램이 종료될 때 까지 어디서..
JVM 구조와 동작 과정
·
💻 Dev/Java
자바를 공부하다 보면 Write once, run anywhere (한 번 작성하면, 어디서나 실행된다.) 라는 말을 볼 수 있다. 컴퓨터가 어떤 프로그램을 실행하려면, 컴퓨터가 읽을 수 있는 언어(기계어)로 작성되어야 한다.자바 프로그램에서는 JVM(Java Virtual Machine)이라는 가상머신이 우리가 작성한 java코드를 기계어로 변환해 주고, 어떤 운영체제에서도 이 코드가 실행될 수 있도록 도와주는 역할을 한다.즉, JVM 덕분에 OS에 독립적인 특징을 가지고 있는 것이다. JVM 작동 원리우리가 작성한 코드가 JVM에 전달되어 실행되기까지 과정은 아래와 같다. 개발자가 자바 소스코드(.java)를 작성한다.자바 컴파일러(javac)가 자바 소스코드를 자바 바이트코드(.class)로 컴파일..
예외(Checked Exception, Unchecked Exception)
·
💻 Dev/Java
예외란?자바에서 예외란 "우리가 예상한, 혹은 예상치 못한 일이 발생하는 것을 미리 예견하고 안전장치를 하는 것"을 말한다. 예외의 종류는 3가지다.checked exceptionerrorruntime exception 또는 unchecked exception2, 3번째를 제외한 모든 예외는 1번 checked exception이다. 우선 오류와 예외를 구분할 필요가 있다.오류(error)는 자바 프로그램 밖에서 발생한 예외를 말하고 시스템이 종료되어야 할 수준의 심각한 문제를 의미한다.개발자가 미리 예측하여 방지할 수 없다. ex)- StackOverflowError : 호출의 깊이가 깊어지거나 재귀가 지속되어 stack overflow 발생 시 던져지는 오류- OutOfMemoryError : JVM..
interface와 abstract(추상) 클래스
·
💻 Dev/Java
인터페이스와 abstract를 사용하는 이유인터페이스와 abstract 클래스에 대해서 제대로 이해하려면 시스템을 만드는 절차를 알아야 한다.어떤 시스템을 개발하든 간에 “방법론”이라는 것을 사용하여 개발한다. 방법론: 시스템을 어떻게 만들 것인지에 대한 절차를 설명하고 어떤 산출물을 작성해야 하는지를 정리해 놓은 공동 절차 방법론의 일반적인 절차는 아래와 같다.분석 - 요구사항 분석설계 - 어떤 메서드를 만들 것인지, 데이터는 어떻게 저장할지개발 및 테스트시스템 릴리즈 이게 인터페이스와 abstract랑 뭔 상관인데?설계 단계의 산출물을 문서에만 정리하면 나중에 메서드 관련 내용들이 변경되면 문서도 수정해야 하므로 2중 3중의 일이 된다. 이 설계 단계에서 인터페이스라는 것을 만들어 두면 개발할 때 메..