본문 바로가기

딥다이브3

[javascript/java] Optional Channing 옵셔널 체이닝(optional chaining) ?.을 사용하면 프로퍼티가 없는 중첩 객체를 에러 없이 안전하게 접근할 수 있다. 옵셔널 체이닝이 필요한 이유 사용자가 여러 명 있는데 그중 몇 명은 주소 정보를 가지고 있지 않다고 가정해보자, 이럴 때 user.address.street를 사용해 주소 정보에 접근하면 에러가 발생할 수 있다. let user = {}; // 주소 정보가 없는 사용자 alert(user.address.street); // TypeError: Cannot read property 'street' of undefined 또 다른 사례론 브라우저에서 동작하는 코드를 개발할 때 발생할 수 있는 문제가 있다. 자바스크립트를 사용해 페이지에 존재하지 않는 요소에 접근해 요소의 정보를 .. 2023. 9. 4.
객체화를 위한 래퍼(Wrapper) 클래스 사건의 발단 알고리즘 문제를 풀다가 문자열에 담기위해 char를 String으로 변환해주는 작업이 필요했다. 밑줄의 내용처럼 Character.toString(char a)형식의 매서드를 사용했다. 반면에 배열같은 경우에는 Arrays.toString(array)형식의 매서드를 사용했다. toString을 쓸 때, 왜 char은 char.toString(char a)으로 쓰면안되고 Character를 써야하는지, 왜 배열은 그냥 Arrays.toString(array)으로 써도되는지 궁금했다. 그 이유를 자세히 알아보자. 래퍼클래스란? 자바에서 기본 타입의 데이터를 객체로 표현해야 하는 경우 래퍼 클래스를 사용한다. 자바의 자료형은 기본 타입(primitive type)과 참조 타입(reference t.. 2023. 6. 16.
StringBuffer가 문자열 반환을 해야하는 이유(.equals() 깊게 파헤치기) 사건의 발단은 이렇다. StringBuffer를 사용하여 reverse()메서드로 문자열의 순서를 뒤집고 reversed라는 문자열에 값을 담고자 하는데, 맨 뒤에 .toString();을 왜 붙혀야 하는지 의문이 생겼다. (분명 같은 문자열이거늘... 버퍼를 사용할때는 다른 제한사항이 있는 건가?? 너무 궁금했다. ) .toString()을 제외하고 코드를 써보았지만 여지없이 오류가 떴다. StringBuffer를 사용할 때에는 왜 마지막에 항상 .toString()으로 문자열 반환을 해야 문자열에 값을 제대로 담을 수 있는지 이해해보고자 공부를 시작했다. String과 StringBuffer,StringBuilder의 차이점 String 객체는 한번 생성되면 할당된 공간이 변하지 않지만 StringB.. 2023. 6. 15.
반응형