3/14 TIL 오늘의 회고

송은혜·2022년 3월 14일
0

항해99 6기

목록 보기
11/34

💡새롭게 알게 된 것💡

반복문이나 조건문을 쓸 때, 해당 반목문 조건문 안에 들어가는 바디코드가 한 줄로 끝나면 중괄호를 생략해도 된다고 한다..!

알고리즘 문제를 풀며 다른 사람들이 푼 코드에서 중괄호가 없는 걸 종종 보았었는데 , 팀원 분들과 풀이해석을 하며 왜 중괄호가 없는지 이야기를 하다가 알게 되었다.

직접 실행을 시켜보니 코드가 두 줄이상이 되면 중괄호를 붙여주어야 했다.
한 줄이면 생략이 가능하고 , 두 줄 이상이면 중괄호를 붙여줘야한다.



String에 담기는 값은 불변하기 때문에, String 변수의 내용을 수정하게 되는 코드는 그 과정이 내 생각보다 훨씬 복잡하고 비효율적이여 보였다.

만약에 특정 문자열을 추가를 한다면, 실제로는 기존 문자열에 추가가 되는 것이 아니라, 새로운 저장 공간을 만들고 기존 문자열과 추가하려는 문자열이 합해진 새로운 문자열을 생성하는 것이다.

"하이!" + "반가워!"
이렇게 문자열을 추가하려고 하는것은,

"하이!"
기존 문자열은 버려지고,

"하이!반가워!"
라는 문자열만큼의 메모리를 새로 할당하여 새로운 문자열이 생성이 되는 것.


이런 작업들을 반복해서 하게 되면 아무래도 메모리 소요도 늘어나고, 과정이 길어지고 시간도 그만큼 소요가 되서 상당히 비효율적일 것이다. 그래서 StringBuffer와 StringBuilder 클래스가 있다. 이 두 클래스들은 기존에 사용하던 char 배열이 확장되므로 추가적인 메모리를 소모할 필요가 없다.

StringBuffer 클래스는 문자열의 안정성이 보장되지만 그만큼 StringBuilder클래스 보다는 무겁다. 하지만 그 안정성 덕분에 멀티 쓰레드 환경에서 사용하기 좋다.
StringBuilder는 StringBuffer처럼 안정성이 보장 되진 않지만, 그만큼 무게감이 적기 때문에 StringBuffer보다 실행 속도가 빠르다.

멀티쓰레드 환경이 아니라면, StringBuilder를 사용해 주는 것이 좀 더 효율적이다.

StringBuilder strBuilder = new StringBuilder();
//이렇게 선언이가능하다.

String str = "Hello!";
StringBuilder strBuilder = new StringBuilder(str);
//이렇게 문자열을 받아서 생성할 수도 있다. 



오늘부터 cs 스터디가 추가로 진행되었다. 항해에서 제공해주신 CODE라는 책을 매주 주어진 분량을 읽으면서 완독을 목표로 하는데, 매일매일 스터디원들이 돌아가며 맡은 분량의 내용을 정리해서 발표하는 시간을 갖는다.

앞 챕터를 조금 읽었는데, 책의 내용은 결국 컴퓨터지식을 알려주는 거지만, 쓰여진 방식이 약간 에세이같은 느낌이나서 어렵지 않게 읽혔다.
이 책도 아마 알고리즘 처럼 뒤로 갈수록 점점 모르는 단어들도 나오고 어려워지겠지 ㅎㅎ
모르는게 나오면 메모도 하고 찾아보면서 머리에 남기기 위해 책을 읽을 계획이다.

내일은 알고리즘 모의고사가 있다. 시험 전에 테스트식으로 하는 느낌인데 괜히 긴장이 된다.

해야할 건 점점 늘어나고, 나는 늘 새벽까지 공부를 하는데 이렇게 TIL을 쓰며 생각해보면 막상 한 건 많이 없는 것 같다. 공부 방식이 알차지 못한 걸까?

이렇게 매일 생각하고 신경쓰고 있으니 학습방식도 차근차근 정리가 되리라 생각한다.

내일도 화이팅이다 !

0개의 댓글