본문 바로가기
728x90

java22

[Java] 얕은 복사 & 깊은 복사 & 방어적 복사 안녕하세요. 씨위드입니다. 오늘은 자바의 복사에 대하여 알아보겠습니다. 얕은 복사(Shallow Copy)란? 간단히 말하면 주소값을 복사하는 것입니다. 원본 객체를 참조하여 원본 객체에 종속적입니다. 주소값을 복사하는 방식이기 때문에 참조하고 있는 실제 데이터는 같습니다. 해서 원본 혹은 사본 변경 시 둘 다 변경되게 됩니다. 이해를 돕기 위해 간단한 코드를 작성하였습니다. 두 객체의 주소값이 같은 것을 보실 수 있습니다. 주소값을 복사하는 방식이기 때문에 빠르다는 장점을 가집니다. 이번엔 실제 데이터를 살펴볼까요? 첫 번째 프린트문에서 당연히 두 객체의 값은 같습니다. 그럼 두 개의 배열 중 하나의 값을 바꾸면 어떻게 될까요? 같은 주소값을 참조하고 있기 때문에 객체 두 개의 값 모두 변한 것을 보실.. 2023. 2. 13.
[Java] 객체 - 클래스 안녕하세요. 씨위드입니다. 오늘은 객체지향의 중요한 개념인 클래스에 대하여 알아보겠습니다. 클래스 클래스는 데이터(변수)와 함수의 집합입니다. 변수는 단순하게 말하면 데이터를 저장하는 기능을 수행합니다. 그렇다면 함수는 어떤 기능을 할까요? 함수는 주로 데이터를 이용한 작업을 수행합니다. 해서 객체지향 언어에서는 데이터와 함수를 하나의 클래스에 정의해 함께 다룰 수 있도록 하였죠. 사용자 정의 타입 클래스 우리가 자주 사용하는 String이나 Map, ArrayList 같은 자료형도 사실은 하나의 클래스입니다. String 클래스로 예를 들자면 클래스 내부에 문자열을 저장할 수 있는 배열과 문자열을 쉽게 다룰 수 있는 함수들이 정의되어 있죠. 우리도 자바의 String처럼 서로 관련된 변수를 묶어 '사용.. 2023. 2. 6.
[Java] 생성자 안녕하세요. 씨위드입니다. 오늘은 포스팅 주제로 생성자를 가지고 왔는데요. 같이 일하던 친구가 본인은 처음부터 스프링과 그루비만 사용하여 생성자를 어떻게 사용하는 건지 모르겠다는 고민을 이야기한 적이 있었습니다. 저는 퓨어 자바를 사용하여 개발 중이기 때문에 생성자를 만들 일이 아주아주 많습니다. 해서 생성자에 대하여 정리해보려고 합니다. 생성자(constructor)란? 모든 클래스에는 반드시 하나 이상의 생성자가 있어야 합니다. 그럼 생성자란 무엇일까요? 생성자란 인스턴스가 생성될 때마다 호출되는 초기화 메서드입니다. 인스턴스 변수의 초기화 또는 인스턴스 생성 시 수행할 작업에 사용하는데요. 몇 가지를 제외하고는 기본적으로는 일반 메서드와 동일합니다. 아직 이해가 조금 힘드신가요? 그럼 클래스를 하나.. 2023. 1. 31.
[CleanCode] 창발성 안녕하세요~ 씨위드입니다. 오늘은 깨끗한 코드를 작성하기 위하여 창발성이라는 개념을 가지고 돌아왔습니다. 창발성이란 무엇일까요? 저에게도 생소한 개념입니다. 검색을 통해 알아보니 아래와 같은 정의를 찾아볼 수 있었습니다. "창발은 하위 계층(구성 요소)에는 없는 특성이나 행동이 상위 계층(전체 구조)에서 자발적으로 돌연히 출현하는 현상이다. 또한 불시에 솟아나는 특성을 창발성(emergent property) 또는 emergence라고도 부른다." 그럼 창발성을 이용한 클린 코드 작성법에 대하여 알아볼까요? 창발적 설계로 깔끔한 코드 구현 간단한 규칙 네 가지만 따른다면 우수한 설계가 나온다면? 해서 SRP(SingleResponsibility Principal) 혹은 DIP(Dependency Inve.. 2023. 1. 23.
728x90