Information Security Study

240119 회고록-리눅스(if [ 명령어 ], &&, ||), 자바(String과 StringBuffer / StringBuilder) 본문

네트워크 캠퍼스/회고록

240119 회고록-리눅스(if [ 명령어 ], &&, ||), 자바(String과 StringBuffer / StringBuilder)

gayeon_ 2024. 1. 19. 17:49

if [ 명령어 ]

리눅스에서는 if문의 조건식을 입력할 때 소괄호가 아닌 대괄호를 사용한다.

리눅스에서는 셸에서도 []가 입력 가능하기 때문에 if [ 조건식 ]이 아닌 if [ 명령어 ]라 다른 프로그래밍 언어와는 개념이 살짝 다르다.

 

&&와 ||

&&의 경우 왼쪽이 참이면 오른쪽을 수행하고

||의 경우 왼쪽이 거짓일 때 오른쪽 명령어를 수행한다.

 


 

String과 StringBuffer / StringBuilder

String 클래스는 초기화된 데이터에 변화가 생기면 새로운 객체를 매번 생성하기 때문에 메모리를 과소비한다는 문제점이 있다.

그래서 속도가 느려지는 현상이 발생할 수 있다.

String 클래스보다 StringBuffer, StringBuilder가 속도적인 측면에서 낫다.

 

StringBuffer, StringBuilder의 차이점

거의 비슷하지만 StringBuffer는 Thread safety를 보장한다. 

 

 

※ StringBuffer와 StringBuilder가 매번 할당하지 않는 원리

StringBuilder와 StringBuffer는 생성 시 할당하는 저장용량 capacity (16) 을 가지고 있고

append 연산으로 저장용량을 초과하는 경우 기존 저장용량의 1.5배가 되는 새로운 저장용량을 가진 객체를 재할당하게 된다.