
위의 코드는 내가 풀고 있는 문제의 메서드 중 일부다.
간단하게 배열 내에 존재하는 문자열의 최대 길이를 구하는 스트링을 이용해서 max 길이를 구한 뒤
해당 길이의 배열을 선언 해주고 거기다가 제공된 배열의 값들을 문자 하나하나 쪼개서 넣어준 뒤 StringBuilder를 이용해서 하나로 합쳐준 뒤 반환해주는 로직이다.
위의 로직에서 사용했던 특이한 점은 1가지 / 오류도 1가지다.
특이한점 1. StringBuilder 의 사용
왜 나는 String 이 아닌 StringBuilder를 사용했을까?
이유는 정말 단순하다. (인텔리제이가 바꿔줘서) String 이라는 객체의 특성을 이해한다면 쉽게 이해가 가능할 것이다.
String 객체는 모두 Immutable 객체다.
그게 뭔데? 라고 생각하는 사람이 있을 것이다.
Immutable 객체란
한번 선언되면 다시 변경이 불가능한 객체를 의미한다.
위의 로직을 한번 보자.
String에 반복문을 줘서 계속해서 값을받아야한다.
그렇다면 반복되는 횟수만큼 String 객체를 생성해야된다. 이것은 프로그램의 속도나 비용적인 측면에서 심각한 낭비가 될 것이다. 그렇기 때문에 나는 StringBuilder를 이용한 것이다.
오류 1. NPF
위의 로직 중 조건을 비교하는 if문을 한번 보자.

tmp 배열의 요소에 비어있는지를 check하는 조건문디ㅏ.
그렇다면 tmp의 요소가 무엇인지 확인해 보자.

단순하게 빈배열만 줬다.
즉 안에 들어가 있는 요소들은 모두 null 이다.
이를 종합해서 말하자면
나는 null에 isEmpty() 메서드를 실행하고자 한것이다.
이를 컴파일러가 확인하고 NPF 를 던져주면서 당신이 지금 잘못하고 있어라는 것을 알려준 것이다.
오늘 찾아본 내용은 단순하고 쉬운 내용일 수도 있다.
그러나 초보 개발자인 내 입장에서는 아무 생각없이 하다 왜 틀렸는지 다시 한번 고민해보고 찾아보는 등 생각보다 오래 걸렸다.
이론을 몰랐는가??? NO 이론은 알고 있었다.
그 이론을 실제로 사용하는데 조금 많이 어려운 것 같다.
오늘도 열심히 코딩을 두드려야겠다.
끝
'이전 학습 내용' 카테고리의 다른 글
| 띠용~~~ 같은 클래스의 메서드에 값을 전달 하는방법 (2) | 2022.12.04 |
|---|---|
| 오늘의 띠용@!@(네스트 클래스 테스트) (0) | 2022.12.02 |
| 당신이 넣은 값이 이상하게 마지막 반복 결과로 바뀐다면>?(얕은복사 깊은복사) (0) | 2022.11.27 |
| 오늘의 배움 코드를 쓰는 줄이 중요하다. (0) | 2022.11.25 |
| 오늘의소소한 고민 getName이 오류가 뜬 이유는? (0) | 2022.11.23 |