목록Language (49)
devseop08 님의 블로그
얕은 복사(Shallow Copy)얕은 복사: 참조의 대상은 복사해서 늘리지 않고 참조자만 늘리는 형태사이드 이펙트 발생의 원인이 된다.대상 인스턴스는 그대로 두고 참조만 늘어나는 경우참조자에 참조자를 대입하여 두 개의 참조자가 동일한 하나의 인스턴스를 참조하게 하는 방식참조자가 참조하는 인스턴스 안의 값(내용)을 복사해오는 것이 아니다.여러 참조자가 하나의 인스턴스를 공유하게 된다. => 공유하는 하나의 인스턴스 상태를 변경 시 변경으로 인한 영향이 전파된다.얕은 복사 예시class Address { public String addr; public String phone; public Address(String addr, String phone) { this.addr = ..
변수와 타입변수는 데이터가 저장되는 메모리 공간이고, 변수의 형태, 즉 메모리 공간의 형태를 메모리 공간 타입, 변수의 타입이라 한다.자바는 정수, 실수, 문자, 논리값 데이터를 저장할 수 있는 메모리 공간의 기본 타입을 제공한다.정수 타입 : byte, char, short, int, longbyte크기 : 8비트, 1바이트값의 저장 범위: -2^7 -1 ~ 2^7 -1short크기 : 16비트, 2바이트값의 저장 범위: -2^15-1 ~ 2^15-1char => 유니코드(문자)에 해당하는 이진수 데이터들을 저장할 수 있다.크기 : 16비트, 2바이트값의 저장 범위 : 0~ 2^16-1int크기 : 4바이트값의 저장 범위: -2^31-1 ~ 2^31-1long크기: 8 바이트값의 저장 범위: -2^63..
기초 클래스와 파생 클래스객체지향 언어에서 상속은 계층관계를 사용하여 클래스 간의 속성 및 함수를 공유할 수 있도록 지원하는 매우 중요한 개념이다.객체지향 언어에서는 하나의 클래스를 다른 클래스의 속성을 상속받아 정의하는 기능을 제공한다.한 클래스가 다른 클래스의 한 가지 구체적인 예에 해당할 때 이 클래스 간에 'is-a' 관계가 있다고 말한다.상속하는 클래스들의 공통된 특징을 모두 보유하고 있는 클래스를 기초 클래스라고 한다.기초 클래스보다 더 자세한 속성을 갖는 클래스를 파생 클래스라고 한다.파생 클래스는 기초 클래스의 특성을 모두 포함하고 있으며 자신의 고유 특성을 추가로 갖고 있을 수 있다.파생 클래스를 표현할 때 기초 클래스의 특성들을 반복하여 표현할 필요가 없다.상속은 프로그램의 비슷한 특성..
1. 스코프블록복합 명령문이라고도 불리는 블록은 마치 한 명령문같이 보이는 명령문의 그룹이다.블록은 { 기호로 시작하고, } 기호로 끝나며, 기호 사이에 실행할 명령문을 배치한다.블록은 단일 명령문이 허용되는 모든 위치에서 사용할 수 있고, 블록 끝에는 세미콜론(;)이 필요하지 않다.int add(int x, int y){ // 시작 블록 (start a block) return x + y;} // 끝 블록 (end a block)int main(){ // start a block // 여러 명령문 (multiple statements) int value(0); add(3, 4); return 0;} // end a block (no semicolon)블록은 다른 블록 내부에 ..
연산자연산자의 우선 순위 및 결합 방향산술 연산자사칙 연산자나머지 연산자증감 연산자증감 연산자와 사이드 이펙트전위 증감 연산자는 값을 증가 또는 감소시킨 후에 값을 평가한다.int x = 5;int y = ++x; // x = 6, y =6후위 증감 연산자를 사용하는 경우엔 컴파일러가 변수의 임시 복사본을 만든 후에 원래 변수를 증가 또는 감소시키고 변수의 임시 복사본을 평가한다.평가가 종료되면 임시 복사본을 삭제시킨다.int x = 5;int y = x++; // x = 6, y = 5int x = 5, y = 5;std::cout 사이드 이펙트사이드 이펙트란, 함수나 표현식이 자신의 본래 목적(값 반환) 외에 프로그램의 상태나 외부 세계에 영향을 미치는 모든 행위를 말한다.즉, 사이드 이펙트란 함수 ..
1. 구조체구조체, structstd::string myName;int myBirthYear;int myBirthMonth;int myBirthDay;int myHeightInches;int myWeightPounds;자신에 대한 정보를 함수에 전달하려면 각 변수를 개별적으로 전달해야 한다.또한, 다른 사람에 대한 정보를 저장하려면 추가된 사람마다 6개의 변수를 추가로 선언해야 한다.다행히도 C++ 에서는 고유한 사용자 정의 집계 데이터 유형(user-defined aggregate data type)을 생성할 수 있다.집계 데이터 유형(aggregate data type)은 여러 개별 변수를 함께 그룹화하는 데이터 유형이다.가장 단순한 집계 데이터 유형 중 하나는 구조체(struct)다.즉, 구조체(s..
기초 클래스와 파생 클래스객체지향 언어에서 상속은 계층관계를 사용하여 클래스 간의 속성 및 함수를 공유할 수 있도록 지원하는 매우 중요한 개념이다.객체지향 언어에서는 하나의 클래스를 다른 클래스의 속성을 상속받아 정의하는 기능을 제공한다.한 클래스가 다른 클래스의 한 가지 구체적인 예에 해당할 때 이 클래스 간에 'is-a' 관계가 있다고 말한다.상속하는 클래스들의 공통된 특징을 모두 보유하고 있는 클래스를 기초 클래스라고 한다.기초 클래스보다 더 자세한 속성을 갖는 클래스를 파생 클래스라고 한다.파생 클래스는 기초 클래스의 특성을 모두 포함하고 있으며 자신의 고유 특성을 추가로 갖고 있을 수 있다.파생 클래스를 표현할 때 기초 클래스의 특성들을 반복하여 표현할 필요가 없다.상속은 프로그램의 비슷한 특성..
언어의 어떤 기능과 미리 정해진 이름의 함수를 연결해주는 기법을 코틀린에서는 관례라고 부른다.코틀린이 지원하는 여러 관례와 그 관례의 사용법을 살펴본다.언어의 기능을 타입에 의존하는 자바와 달리 코틀린은 관례에 의존한다.기존 자바 클래스가 구현하는 인터페이스는 이미 고정돼 있고 코틀린 쪽에서 자바 클래스가 새로운 인터페이스를 구현하게 만들 수는 없다.확장 함수 메커니즘을 이용하면, 기존 클래스에 새로운 메서드를 추가할 수 있다.따라서 기존 자바 클래스에 대해 확장 함수를 구현하면서 관례에 따라 이름 붙이면 기존 자바 코드를 바꾸지 않아도 새로운 기능을 쉽게 부여할 수 있다.9.1 산술 연산자를 오버로딩해서 임의의 클래스에 대한 연산을 더 편리하게 만들기코틀린에서 관례를 사용하는 가장 단순한 예는 산술 연..