본문 바로가기

자바17

자바 Exception 최근에 외부에 라이브러리와 API를 제공하는 작업을하다 느낀 자바 Exception에 대한 처리 방법을 정리한 글이다. 자바에는 원치않는 상황(에러 발생 상황, 예기치못한 값을 다뤄야하는 상황)을 다루기 위해 Exception이 있다. Exception은 잘 다루는것, 잘 이용하는 것 2가지 모두 중요하다고 생각한다. 우선 잘 다루는 것이란 다른 사람이 만든 라이브러리나, 메소드를 이용하려하는데 거기서 Exception이 발생했을시 어떤식으로 처리할지에 대한 것이다 다름으로 잘 이용하는 것은 라이브러리, 메소드를 직접 만들어서 다른사람에게 제공할 때 그곳에서 Exception을 던질것인지, 혹은 로직처리도중 Exception이 발생할 경우 이를 잡아서 에러코드를 만들것인지에 대한 것이다. 그럼 2가지를 .. 2021. 10. 9.
[우아한테크세미나] 190425 TDD 리팩토링 by 자바지기 박재성님 정리 https://youtu.be/bIeqAlmNRrA?list=PLWULX930b66AKch7aJm_CpcnDiz2hQwaf TDD하기 쉬운코드와 어려운 코드를 구분하는 눈 어려운 코드를 쉬운코드로 변경할 수 있는 감 목적의식이 있는 연습이 필요함 -> 무작정 많이는 아니야 의식적인 연습의 7가지 원칙 1. 효과적인 훈련기법이 수립되어 있는 기술 연마 2. 개인의 컴포트 존을 벗어난 지점에서 진행, 자신의 현재 능력을 살짝 넘어사는 작업을 지속적으로 시도 3. 명확하고 구체적인 목표를 가지고 진행 4. 신중하고 계획적이다. 즉, 개인이 온전히 집중하고 의식적으로 행동할 것을 요구 5. 피드백과 피드백에 따른 행동 변경을 수반 6. 효과적인 심적 표상을 만들어 내는 한편으로 심적 표상에 의존 7. 기존에 습.. 2021. 7. 6.
자바 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.