# NullPointerException

18개의 포스트
post-thumbnail

[JAVA] A.equals("B") 와 A == B의 차이

개요 개발을 하던 중 평소와 다름없이 조건에 map에 들어있는 값과 String 값을 비교하기 위해 equals를 썼는데 java.lang.NullPointerException에러가 발생하는 것이다! 오잉? 나는 객체나 문자열을 비교할때는 equals를 쓰고 문자나 숫자를 비교할때는 ==를 사용해서 비교하는것으로만 기억하고있는데 왜 오류가 나는거지? 해서 내가 실수한 부분을 찾아보고 정리하는 것이다. 자 그럼 알아보자! _여담이지만 이번에 봤던 정보처리기사 2023년 2회 실기 시험문제에서도 equals와 ==의 결과값을 쓰는 문제가 나왔다. 문제로 낼 수 있을만큼 헷갈리기 쉬운것이다. 잘 알아보자!_ equals와 == 는 뭘까? A.equals("B")와 A == B 은 기본적으로 양쪽에 있는 A,B를 비교하기 위해서 사용한다. 그렇담 차이점은 뭘까? 하나씩 알아보자 1. == == 은 비교를 위한 연산자 이

2023년 7월 29일
·
1개의 댓글
·

2023.07.09.SUN

querydsl 우아콘 강의 https://www.youtube.com/watch?v=zMAX7g6rO_Y JpaQueryFactory DI 하여 상속, 구현 없애고 간단히 select문에서 exist 사용 금지(querydsl에서는 count 사용되어 성능 저하). -> 대신 직접 구현하기. limit 이용. cross join 회피 for 성능 변경 필요시 Entity, 대량 조회시 DTO 활용 OneToOne 관계는 Lazy 로딩이 되지 않아 N+1 문제 무조건 발생 MySQL에서 group by 실행하면 인덱스 아닌 경우 filesort 무조건 발생. -> order by null 이용하면 filesort 지워지나, querydsl에서는 order by null 지원 안 함. -> 직접 구현 커버링 인덱스 : 쿼리에 사용되는 모든 컬럼이 포함된 인덱스. **페이징 성능

2023년 7월 9일
·
0개의 댓글
·

23.04.27 JAVA

예외처리 1. NullPointerException 가장 빈번하게 발생하는 실행 예외 객체 참조가 없는 상태의 참조 변수로 객체 접근 연산자 도트를 사용할 경우 발생 public class NullPointerExceptionExample { public static void main(String[] args) { String data = null; System.out.println(data.toString()); } } > 출력결과 Exception in thread "main" java.lang.NullPointerException at NullPointerExceptionExample.main(NullPointerExceptionExample.java:6) 2. ArrayIndexOutOfBoundsException 배열에서 인

2023년 4월 27일
·
0개의 댓글
·
post-thumbnail

2023.04.19

Problem 본격적으로 코딩 공부를 시작한지 어느덧 19일차이지만, 여전히 개념적인 부분에서 너무나 부족하다. 그래서 아래와 같이 오늘 공부한 것들을 적어서 정리를 해보았다. What I learned ERD (Entity Relationship Diagram) ERD는 정보 기술 시스템 내에서 사람, 개체, 장소, 개념 또는 이벤트 간의 관계를 나타내는 그래픽 표현이다. ERD는 비지니스 프로세스를 정의하고 관계형 데이터베이스의 기반이 될 수 있는 데이터 모델링 기술을 사용한다. Peter Chen Notation을 사용하여 아래 사용 방법 및 의미를 확인해보자. 수정이 필요하지만 오늘 처음으로 첫 프로젝트에 필요한 ERD를 작성해보았다. ![](https://v

2023년 4월 19일
·
0개의 댓글
·
post-thumbnail

참조 타입과 참조 변수

자바의 데이터 타입 - 기본 타입, 참조 타입 자바의 타입은 크게 기본타입과 참조타입으로 분류된다. 기본타입에는 정수, 실수, 논리가 있고 참조 타입에는 배열, 열거(enum),클래스, 인터페이스가 있다. 기본 타입은 변수에 값을 직접 저장하지만 참조 타입은 메모리의 주소를 변수에 저장한다. 주소를 참조한다고 하여 참조 타입이다. 그렇다면 String은 어떤 타입일까? String은 클래스이므로 참조 타입이다. 메모리 사용 영역 JVM이 운영체제에서 할당받아 사용하는 메모리 영역은 다음과 같이 나누어 진다. 1. Method Area 메소드 영역은 JVM이 시작될 때 생성되고 모든 스레드가 공유한다. 여기서 사용되는 클래스들은 (.class) 클래스 로더로 읽고 클래스별로 정

2023년 2월 1일
·
0개의 댓글
·
post-thumbnail

Java String의 특이한 합연산 -(null + "str")에 대하여-

일반적으로 객체 생성이 되지 않은 인스턴스와 연산을 하게 된다면 NullPointerException(이하 NPE)을 맞닥뜨리게 될 것이다. 예를 들어 wrapper class의 Integer로만 계산하더라도 그렇다 하지만 String의 경우 값이 null인 변수와 합연산을 시도할 경우, NPE가 아닌 "null" + "str"의 결과값이 도출되는데 왜 그런 것일까? 풀이 String valueOf() \+ 연산을 시도할 경우 내부적으로 String.valueOf()를 호출하여 연산을 시도하는데 이때, valueOf()의 반환값은 다음과 같다 즉, 값이 null이면 그냥 "null"이라는 문자열로 반환해준다. 실제로

2023년 1월 5일
·
0개의 댓글
·
post-thumbnail

객체 배열(Object Array)

💁‍♀️ 객체 배열(Object Array)이란, 레퍼런스 변수에 대한 배열. 생성한 인스턴스도 배열을 이용해서 관리하면 동일한 타입의 여러 개 인스턴스를 연속 처리할 수 있어 편리함. 또한 반환값은 1개의 값만 반환할 수 있어 동일한 타입의 여러 인스턴스를 반환해야 하는 경우도 객체 배열을 이용할 수 있음 객체 배열을 생성하는 것은 객체를 다루기 위한 참조변수들을 만든 것일 뿐, 객체가 저장되어있지는 않음. 따라서 객체 배열 생성 후, 추가적으로 객체를 저장해야 함 👀 객체 배열의 할당 및 초기화 ◼ Car Class ◼ Application Class 💻 Mini Console 👀 DTO를 활용한 간단한 회원 관리용 프로그램 DTO를 활용한 간단한 회원 관리용 프로그램 여러 명의 회원 정보를 받아 한 번에 여러 회원 정

2022년 12월 31일
·
0개의 댓글
·
post-thumbnail

다차원 배열(Dimensional Array)

💁‍♀️ 다차원 배열(Dimensional Array)이란, 다차원 배열은 2차원 이상의 배열을 의미하며, 배열의 인덱스마다 또 다른 배열의 주소를 보관하는 배열 즉, 2차원 배열은 1차원 배열 여러 개를 하나로 묶어서 관리 👀 배열의 선언 및 할당 1) 배열의 주소를 보관할 레퍼런스 변수 선언 (stack) 2) 여러 개의 1차원 배열의 주소를 관리하는 배열을 생성 (heap) 3) 주소를 관리하는 배열의 인덱스마다 배열을 할당 (heap) > #### 🙋‍ 잠깐! 2차원 배열의 생성 및 할당을 동시에 할 수 있을까? <span style="colo

2022년 12월 29일
·
0개의 댓글
·
post-thumbnail

배열(Array)

💁‍ 배열(Array)이란, 동일한 자료형의 묶음(연속된 메모리 공간에 값을 저장하고 사용하기 위한 용도) 배열은 heap 영역에 new 연산자를 이용하여 할당 > 🙋‍ 잠깐 ! 왜 배열을 사용해야하나요? 만약 배열을 사용하지 않는다면 변수를 여러 개 사용해야함 연속 된 메모리 공간으로 관리할 수 없음 (모든 변수의 이름을 사용자가 관리해야함) 반복문을 이용한 연속적인 처리가 불가능 👀 배열의 선언 및 할당 자료형[] 배열명 = new 자료형[배열크기(변수갯수)] int[] arr = new int[5]; 👀 배열의 사용 방법 1) 배열의 선언 자료형[] 배열명; > 💁‍ 선언은 stack에 배열의 주소를 보관할 수 있는 공간을 만드는 것 <span style="color:#A9A

2022년 12월 26일
·
0개의 댓글
·

Optional 사용하기 및 메서드 정리

public class Person{ private Otional car; public Optional getCar() P return car; } 사람이 차를 소유할 수도 없을 수도 있으니 Optional로 정의했다. public class Car { private Optional insurance; //자동차 보험에 가입되어 있을 수도 없을 수도 있으므로 Optional로 정의한다. public Optional getInsurance() { return insurance; } } public class Insurance{ private String name; // 보험회사마다 이름이 무조건 있으니까 public String getName() { return name; } } Optional클래스를 사용하면서 사람은 차를 참조하며

2022년 12월 25일
·
0개의 댓글
·

[오류] 세션값 java.lang.NullPointerException

해당 페이지에 접속할 때 찜하기 값 검증결과를 화면단으로 넘겨주기 위해 코드를 작성했다. 세션값을 불러와서 회원번호, 룸번호를 파라미터로 검증 결과를 int형으로 받은 후 세팅해준 후 화면을 확인했다. 결과는 500 에러 화면이였다. java.lang.NullPointerException 기능들을 구현하면서 많이봤던 오류다. 오류를 불러일으킨 코드는 밑의 코드다. 회원번호가 0보다 클 때만, 찜하기 검증코드를 실행하도록 작성했지만.. 검색도 해보고 고민해보니 원인을 찾았다. 원인은 세션값이 null 인데 if문 조건의 세션을 int로 형변환하여 처리했다. int는 null일 수가 없다. 그래서 코드를 다음과 고쳤더니 비로그인 상황에서도 해당페이지 접속이 아주 잘되었다.

2022년 12월 12일
·
0개의 댓글
·
post-thumbnail

[Spring-Data-Elasticsearch] spring 버전업에 따른 update() 메소드 NPE 이슈

Spring-boot 버전 업 Spring-boot 의 버전을 2.3.4 RELEASE -> 2.7.3 으로 업데이트 했다. 이에 따라, Spring-Data-Elasticsearch 의 버전도 4.0.4 -> 4.4.2 로 업데이트 됐다. elasticsearch-sources.jar 도 7.6.2 -> 7.17.4 업데이트 됐다. 에러 로그 기존 MySQL -> ES로 데이터를 옮기는 마이그레이션 배치를 실행 중에 에러 로그가 올라왔다. 로그를 찍어보니 NPE네! 스프링 버전업은 예전에 했는데,, 스프링 버전업은

2022년 11월 27일
·
0개의 댓글
·

Java8, Optional 이란?

📌 Optional JAVA8 부터 생긴 새로운 기능 Optional 클래스를 사용하여 *NPE(NullPointerException)를 방지 Optional 클래스는 Null이 올 수 있는 값을 감싸는 래퍼(Wrapper) 클래스 Optional 클래스는 제너릭(Generic)으로 값의 타입을 지정 클래스이기 때문에 다양한 메서드들을 제공 Optional은 값을 Wrapping 하고 다시 풀때 null일 경우 대체하는 함수를 호출 → 오버헤드 발생 할 수 있으므로 잘 못 사용 시 시스템 성능 저하 → 메서드의 반환 값이 절대 null이 아니라면 Optional 사용을 권장하지 않음 *NPE(NullPointerException) 개발을 할 때 많이 발생하는 예외 중 하나로 NPE를 피하려면 Null 여부를 검사해야하는데, 검사해야하는 Null이 많을수록 코드가 복잡해지고 예외처리가 번거로워진다. Optional 생성 -

2022년 11월 8일
·
0개의 댓글
·

[ 자료구조 ] 스택구현

개념 후입선출 함수에서 함수를 호출하는 기능을 구현 하기 위해 stack()이 나왔다 실현코드 Main() 이전 main() 🚨 디버그 사항 NullPointerException 🔽 에러 뜬 부분의 코드 NullPointerException은 RuntimeException이다. 프로그램에 null값을 가지는 객체 참조를 사용하려고 하면 NullPointerException이 throw 된다. 에러에 대한 설명을 보니, 모든 참조유형에 대한 기본 값이 null이라는걸 생각해 보면, 내가 객체.메서드를 사용한 부분에서 에러가 난것으로 보아 객체 생성이 제대로 되지 않았나? 하는 의문점이 들었다. 실제로 구글링을 해보니 이 예외가 발생하는 경우로는, null 객체에서 metho

2022년 9월 28일
·
0개의 댓글
·

20220810

출처:https://opentutorials.org/course/2517/14145 try{실행코드}catch(예외유형){예외 발생시 실행코드} try 안에는 예외 상황이 발생할 것으로 예상되는 로직을 위치시킨다. catch 안에는 예외가 발생했을 때 뒷수습을 하기 위한 로직이 위치한다. 오류가 발생하면서 try 내의 실행이 중단되고 catch 구문 안의 내용이 실행된다. 예외 클래스와 인스턴스 } catch(Exception e){ System.out.println("오류가 발생했습니다 : "+e.getMessage()); } e는 변수다. 이 변수 앞의 Exception은 변수의 데이터 타입이 Exception이라는 의미다. Exception은 자바에서 기본적으로 제공하는 클래스로 java.lang에 소속되어 있다. 예외가 발생하면 자바는 마치 메소드를 호출하듯이 catch를 호출하면서 그 인자로 Exception 클래스의 인스턴스를 전달하는

2022년 8월 10일
·
0개의 댓글
·
post-thumbnail

NullPointerException을 예방하자

NullPointerException 우리가 개발을 하며 흔히 볼 수 있는 에러로 이름부터 알 수 있듯 Null 로 인해 나타나는 에러이다. > 위 에러는 자주 보는 에러로 코드의 양이 적을 때는 금방 찾을 수 있기 때문에 대부분 null에 대해 무신경한 경우가 많다. 하지만 만약 코드의 양이 방대하다면 어떨까? 대부분이 null이 발생하는 지점을 쉽사리 발견하지 못할 것이다. 때문에 우린 위 에러를 예방하고 올바른 대처를 해야 한다. 지금부터 NullPointerException를 예방해보자 우선 NullPointerException이 발생하는 이유 - 원인 null 객체에서 method를 호출

2022년 1월 18일
·
0개의 댓글
·
post-thumbnail

TIL 2021.03.24

Optional.get() 첨에 Optional.get()을 사용하지마라는 말을 듣고 한동안 이게 무슨 말인지 이해가 안됐는데. 지금은 어렴풋이 이해가 되는것 같다. Optional은 null값을 피하기 위해서 나온 래퍼클래스이다. Optional을 통해 객체를 래핑하면 null값이어도 NullPointerExcption이 안나고 그것을 여러 메서드(api?)를 통해 안전하게(?) 다룰 수 있게 된다. 그럼 selectedQuestion을 어떻게 받아야할까? [Jane의 코드](https://github.com/codesquad-members-2021/spring-boot-qna/pull/43/files#diff-30156d0138194914281f7f72ffda9930f14b

2021년 3월 24일
·
2개의 댓글
·
post-thumbnail

[KOSTA JAVA] #Day 3 (Memory using structure, Heap, Stack, 참조 변수, null, String, Array, 열거타입, Exam Quiz)

신용권님의 "이것이 자바다" 공부 기록 책을 보면서 내용을 정리했습니다. 이것이 자바다 커뮤니티 : https://cafe.naver.com/thisisjava 데이터 타입 분류 메모리 사용 영역 참조 변수의 ==, != 연산 null과 NullPointerException String 타입 배열 타입 열거 타입 #Day 2 Review img Scanner, 형변환, 반복문, 조건문 복습 1. 데이터 타입 분류 img 1-1. 변수의 메모리 사용 기본 타입 변수 - 실제

2021년 2월 19일
·
0개의 댓글
·