본문 바로가기

Java15

자바 Exception 최근에 외부에 라이브러리와 API를 제공하는 작업을하다 느낀 자바 Exception에 대한 처리 방법을 정리한 글이다. 자바에는 원치않는 상황(에러 발생 상황, 예기치못한 값을 다뤄야하는 상황)을 다루기 위해 Exception이 있다. Exception은 잘 다루는것, 잘 이용하는 것 2가지 모두 중요하다고 생각한다. 우선 잘 다루는 것이란 다른 사람이 만든 라이브러리나, 메소드를 이용하려하는데 거기서 Exception이 발생했을시 어떤식으로 처리할지에 대한 것이다 다름으로 잘 이용하는 것은 라이브러리, 메소드를 직접 만들어서 다른사람에게 제공할 때 그곳에서 Exception을 던질것인지, 혹은 로직처리도중 Exception이 발생할 경우 이를 잡아서 에러코드를 만들것인지에 대한 것이다. 그럼 2가지를 .. 2021. 10. 9.
자바 Optional Optional Optional 이란? 자바 개발을 하다보면 항상 격는 문제중 하나는 nullPotinterException이다. 이 예외는 참조변수가 사용될때 참조하고 있는 것이 없이 null인 상태를 의미한다. public class Main { public static void main(String[] args) { Person person = new Person("jjang gu"); person=null; person.print(); } } 위 코드는 인위적으로 nullPointerException을 일으킨 것이다. 예제가 단순하지만 우리는 개발을 하다 보면 null값을 제대로 처리하지 않아서 에러를 일으키는 경우를 많이 보았을 것이다. 자바에서는 이런 null을 다루기 위해 Optional이라.. 2021. 5. 3.
String,StringBuilder,StringBuffer 자바에서 문자열 처리는 주로 String과 StringBuilder를 이용한다. 이번에는 2가지를 각각 알아보고, 비교를 해본다. String 우선 String이다. String은 자바에서 문자열을 다룰때 가장 기본적인 형태이다. String의 생성방식에는 literal,new 2가지 방식이 있다. String str="string!!"; String str2=new String("string !!"); 2방식 모두 heap에 저장이된다. 그렇지만 차이점이 있는데 literal같은 경우 string constant pool이라는 공간에 들어간다. string constant pool에 해당 literal을 넣고 String 변수가 가르키고 있는 형태인것이다. 이렇게 string constant poll에.. 2021. 3. 10.
Collection Framework 정리표 자바 Collection Framework는 크게 List,Set,Map으로 분리가 된다. 그리고 List,Set은 공통분모가 많아서 Collections라는 인터페이스로 묶인다. List 순서가 있는 집합, 중복 허용 ArrayList,LinkedList,Stack,Queue 등 Set 순서가 없고 중복을 허용하지 않음 HashSet,TreeSet 등 Map Key,Value쌍으로 구분, 순서없음, 중복허용하지 않음 HashMap,TreeMap,HashTable,Properties 등 대부분의 자료구조들은 위 3가지 분류에 포함이 되기 때문에 3가지 분류의 특징들을 잘 알아두고 사용하는 것이 중요하다. Collections 인터페이스 메소드 설명 boolean add boolean addAll(Coll.. 2021. 2. 25.
자바 synchronized 이해 synchronized 메소드 public class Test { public synchronized void foo(){ for(int i=0;i{ test.voo(); }).start(); } } 위처럼 실행하면 첫번째 쓰레드가 작업(foo 메소드 실행)을 모두 마칠때까지 두번째 쓰레드는 voo를 호출하지 못한다. static synchronized 메소드 그럼 여기서 한가지 생각이 든다 static 메소드는 어떻게 될까? static 메소드는 heap영역에 할당되지 않고 static영역에 들어간다. 그러므로 static synchronized 메소드는 인스턴스의 lock이 아닌 클래스의 lock을 가지게 된다.. public class Test { public static void foo(){ sy.. 2021. 2. 24.
JVM JVM jvm(java virtual machine)은 자바를 실행하는데 필수적인 것이다. 한글로 말하면 자바 가상 기계인데, 여기서 기계라는 말때문에 좀 다르게 이해할 수 있는데 여기서 기계는 컴퓨터에서 실행되는 프로그램으로 의미하면 편하다. 그렇기 때문에 jvm은 컴퓨터에서 자바 파일을 실행하기 위한 프로그램으로 생각하면 된다. JVM의 역할 JVM은 크게 2가지 역할을한다. 첫째, 자바 프로그램을 실행되는 기계에 관계없이 실행되도록 한다.(플랫폼 독립적) 둘째, 자바 프로그램이 실행되면서 메모리관리, 최적화등의 역할을 한다. 첫번째 역할을 보면 실행되는 플랫폼에 상관없이 실행되도록한다고 했는데 좀 더 풀어서 설명하면 우리가 작성한 자바 프로그램을 실행파일로 만든다음 이것을 배포하는 경우를 생각해보자.. 2021. 2. 14.