Programming Language/JAVA 5

[JAVA] Optional- of 와 ofNullable의 차이, orElse와 orElseGet의 차이

문자열을 BigDecimal 형태로 바꾸는데 Optional을 사용하다가 of, ofNullable, orElse, orElseGet을 알게되었는데 이름도 비슷하고 아무거나 쓰면 되지 않을까 싶다가 좀 찾아보니 분명한 차이가 있었다. of VS ofNullable 먼저 of와 ofNullable의 차이는 null을 허용할수 있냐 없냐이다. of를 사용할때 null이 있으면 NullPointerException이 발생한다. String str = null; BigDecimal a = new BigDecimal(Optional.of(str).orElse("0") ); System.out.println(a); of 대신 ofNullable을 써보면 String str = null; BigDecimal a = ..

[JAVA] list에 객체 add시 주의할 점

개발하다가 반복문을 사용하여 list에 객체를 추가해야 하는 코드가 있었는데, 출력해보니 모든 객체가 같은 값을 가지고 있었다. 다음과 비슷한 코드인데, List pList = new ArrayList(); Person p = new Person(); for(int i = 0; i < 3; i++) { p.setAge(30+i); pList.add(p); } for(int i = 0; i < 3; i++) { System.out.println(pList.get(i).getAge()); } 이 코드를 실행해 보면 30 31 32 로 찍히지 않고 모두 32로 찍히는 것을 볼 수 있다. 이유는 같은 메모리 주소값을 사용하기 때문이다. JAVA 소스 내에서 new Person(); 를 수행하는 순간 하나의 객체..

[JAVA] java.sql.Date vs java.util.Date

spring으로 개발하다 보면 Date 자료형을 써야할 때가 많은데, import 하려고 보면 보통 java.sql.Date와 java.util.Date 두가지 타입이 있다. 우선 java.sql.Date는 java.util.Date를 상속한 것. java.sql.Date : JDBC등을 이용해서 DB에 격납된 날짜나 시각정보를 데이터로서 추출하거나 - 데이터베이스에 격납할 때의 영역으로 사용하며, 문자열 형식이 "2008-12-30 12:30:20" 와 같은 형태의 데이터 에 특화해서 사용하는데에 적합하다. - 연월일시분초등의 요소를 따로 따로 분리하지 않고 하나의 정보로서 다룬다. - 해당 클래스의 사용 목적은 년도, 월, 일을 유지하는 SQL 데이터를 다루기 위함이다. - 시간 정보는 다루지 않고 ..

[JAVA] Stack

Stack 사용 그냥 짝맞는거 찾아서 하나하나 제거하는 식으로 풀었었는데 정확성은 100%이지만 효율성에서 다 틀렸다. 찾아보니 Stack으로 푸는 방법이 있다해서 알게 되었다. 다행히 학교다닐 때 배운 개념과 코드가 거의 유사해서 이해하는데는 어려움이 없었다. 선입선출(FIFO) 데이터 추가 : push 데이터 꺼내기 : pop (제일 나중에 추가한 것부터 꺼냄) 코드 Stack stack = new Stack(); // Stack에 데이터 추가 stack.push("A"); stack.push("B"); stack.push("C"); // Stack에서 데이터 꺼내기 System.out.println(stack.pop()); // ==> C // Stack의 최상단 값 출력(제거하지 않음) Syste..