window.pipedriveLeadboosterConfig = { base: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(function () { var w = window if (w.LeadBooster) { console.warn('LeadBooster가 이미 존재합니다') } else { w.LeadBooster = { q: [], on: 함수 (n, h) { this.q.push({ t: 'o', n: n, h: h }) }, trigger: 함수 (n) { this.q.push({ t: 't', n: n }) }, } } })() 불변 객체 - The Codest
뒤로 화살표 뒤로 가기

불변 객체란 무엇인가요?

불변 객체는 일단 생성된 후에는 수정할 수 없는 객체입니다. 즉, 인스턴스화된 후에는 그 상태를 변경할 수 없습니다. 값을 변경하려고 시도하면 업데이트된 값으로 새 객체가 생성되고 원래 객체는 변경되지 않습니다.

이 개념은 불변성이 핵심 기능인 함수형 프로그래밍을 지원하는 프로그래밍 언어에서 자주 사용됩니다. 변경 불가능한 객체는 변경 가능한 객체에 대한 동시 액세스로 인해 경쟁 조건 및 데이터 손상이 발생할 수 있는 멀티스레드 환경과 같이 객체의 상태가 변경되어서는 안 되는 상황에서 유용합니다.

불변 객체는 변경 가능한 객체에 비해 몇 가지 장점이 있습니다. 첫째, 스레드에 안전하며 동기화할 필요 없이 스레드 간에 안전하게 공유할 수 있습니다. 둘째, 상태가 예기치 않게 변경되지 않으므로 추론하기가 더 쉽습니다. 셋째, 해시값이 고정되어 있고 시간이 지나도 변하지 않으므로 해시 테이블과 세트의 키로 사용할 수 있습니다.

에서 불변 객체의 예 Java 문자열, 정수 및 LocalDate를 포함합니다. 일단 String 객체가 생성되면 그 값은 변경할 수 없습니다. 이를 수정하려고 하면 업데이트된 값으로 새 String 객체가 생성됩니다. 마찬가지로 Integer 객체가 생성되면 해당 값은 변경할 수 없습니다.

하지만 불변 객체가 모든 상황에 적합한 것은 아닙니다. 객체의 상태를 자주 업데이트해야 하는 경우와 같이 변경 가능한 객체가 더 적합한 경우도 있습니다. 이러한 경우에는 경합 조건과 데이터 손상을 방지하기 위해 변경 가능한 객체에 대한 액세스가 동기화되도록 하는 것이 중요합니다.

요약하자면, 불변 객체는 일단 생성된 후에는 수정할 수 없는 객체입니다. 멀티스레드 환경과 같이 객체의 상태를 변경해서는 안 되는 상황에서 유용합니다. 변경 불가능한 객체는 스레드 안전성, 추론의 용이성, 해시 테이블 및 세트의 키로 사용하기에 적합성 등 변경 가능한 객체에 비해 몇 가지 장점이 있습니다.

ko_KRKorean