전체 글
-
[JAVA] null 예외를 깔끔하게 해주는 Optional 클래스Java 2022. 12. 1. 11:37
Optional을 쓰는 이유 객체를 다룰 때 언제든지 null이 발생할 일은 있다. NullPointerException이 발생하면 이것을 하나하나 try/catch문으로 예외처리를 해줘야 한다. 이런 예외처리를 다 if문, try/catch문을 남발하며 잡아주면 코드 가독성이 떨어지고 또 다른 디버깅의 위험을 초래할 수 있다. 그래서 나온 Optional은 null이 발생하는 일을 근본적으로 없애줄 대안을 제시한다. Optional을 쓰는 방식 null이 나올 수 있는 변수를 애초에 Optional 객체에 담아버림으로서, Optional 클래스의 메소드를 통해 null을 대체할 것(value)을 준비해서 리턴해준다. 메서드의 종류는 여러가지가 있다. Optional.of() : 괄호 안에 null을 대..
-
[JAVA] String 변수 값이 같은지 확인할 때는 equals()를 사용하자(쓰지마 ==)Java 2022. 11. 23. 16:22
배열을 for문 돌려서 특정 값과 같은 객체를 뽑아서 핸들링 하려는 과정이 있을 것이다. 예를 들어 아래와 같다. if(value == data.get(i).value){ return true; }else if(value != data.get(i).value){ return false; } 이런 경우 if문이 문제없이 돌아갈 때도 있지만 때때로 'value == data.get(i).value' 가 분명 맞는데도 '같지않다(!=)'라고 될 때가 있다. 그 이유는 String 변수는 그 값이 설정된 위치를 가르키는 참조형 연산자라 인스턴스가 같은지를 비교해서 그런 것이다. 그래서 값을 비교할 때는 == 보다는 equals를 이용해 String을 비교하는게 더 정확하다. if(data.get(i).value..
-
[JAVA] Scanner nextInt()는 '엔터'를 인식할 수 없다Java 2022. 11. 23. 16:15
Scanner 클래스는 콘솔의 입력값을 받기 위해 주로 사용되는데, 여기에 있는 메서드 중 next(), nextInt()를 포함한 nextXXX() 시리즈를 사용할 때, 바로 다음에 사용된 nextLine() 코드가 스킵되는 현상이 발생한다. 이는 nextInt가 '엔터'를 인식하지 못하기 때문이다. 인식하지 못한 엔터는 코드 허공에 둥둥 떠다니다가 다음 nextLint()을 만났을 때 그 안에 들어가게 된다. 그럼 nextLint()에서는 빈 스트링('') 인 상태에서 엔터를 인식하고 다음 코드로 넘어가게 되는 것이다. 해결방법 해결하려면 nextInt()를 쓰지 않는 것이 방법일 것 같다. 그럼 숫자는 어떻게 넣어야 할까? nextLine()으로 쓴 뒤 그것을 Integer.parseInt()로 감..
-
[JAVA] 변수 타입 확인하기Java 2022. 11. 23. 16:08
자바에서 변수 타입을 확인 코드 .getClass().getName() 예제 String str = "ABC"; // String Integer i = 123; // Integer ArrayList list = new ArrayList(); System.out.println(str.getClass().getName()); // java.lang.String System.out.println(i.getClass().getName()); // java.lang.Integer System.out.println(list.getClass().getName()); // java.util.ArrayList
-
Arrays.asList vs List.of 차이Java 2022. 11. 22. 11:51
Arrays.asList() / List.of 자바에서 Array를 List으로 변환하기 위해서는 Arrays.asList(array)를 사용합니다. Java 9 버전 부터는 List.of(array)라는 새로운 팩토리 메소드를 도입했습니다. 차이점은 무엇일까요 ? 뭐가 좋은 걸까? 변경 가능 여부 (Mutable / Immutable) Arrays.asList()로 반환된 list는 변경이 가능합니다. 하지만, List.of()에서 반환된 메서드는 변경이 불가능합니다. List list = Arrays.asList(1, 2, null); list.set(1, 10); // OK List list = List.of(1, 2, 3); list.set(1, 10); // Fails with Unsupport..
-
String.format()?Java 2022. 11. 21. 18:06
1. %d (= Integer Formatting) 10진수 integer의 형식을 설정할 때 이용합니다. int i = 23; System.out.println(String.format("%d_", i)); System.out.println(String.format("%5d_", i)); System.out.println(String.format("%-5d_", i)); System.out.println(String.format("%05d_", i)); 23_ 23_ 23 _ 00023_ %5d 와 같이 %와 d 사이에 정수를 설정하면, 글자 길이를 설정할 수 있습니다. 기본적으로 오른쪽 정렬이고, -를 붙일 경우 왼쪽정렬입니다.(ln 4~5) 표현할 숫자인 i의 길이가 5보다 작을 경우 0을 붙입니다..
-