상황헤더파일(MyString.h), 구현 파일(MyString.cpp), 그리고 이를 이용해서 프로그램을 실행하는 파일(Ex0301_StringAbstractDataType)이 나눠져있는 구조로 실습을 하던 중 clang: error: linker command failed with exit code 1 (use -v to see invocation) 에러가 발생했다. 원인구글링으로 찾은 에러의 원인은 두 가지가 있다. 1. vscode가 mac에서 자동으로 파일을 링크해주지 않은 것 (https://stackoverflow.com/questions/66502205/mac-os-vs-code-insiders-code-runner-undefined-symbols-for-architecture-arm6) ..
string 클래스를 사용하지 않고, C++에서 문자열을 구현하는 방법은 다음의 두 가지가 있다. (1) 문자 자료형(char) 배열을 이용 (2) 문자 자료형(char) 포인터 이용 그런데 문자열의 문자를 하나씩 출력하는 코드를 짜는데, 두 가지 방법에 큰 차이가 없는 것 같이 느껴졌다.그리고 생각을 해보니 배열 = 시작하는 주소를 저장 / 포인터 = 주소를 저장 이라면 배열 == 포인터 ? 라는 신기한 논리가 완성되었다. 공부한 내용배열을 사용하면1. 문자열의 크기와 상관없이, 고정된 "배열의 크기"만큼의 공간을 차지한다2. 데이터가 메모리의 stack 영역에 저장된다3. 초기화 이후에 다른 문자열을 대입할 수 없다4. 문자열 내 각각의 문자에 접근하고 변경할 수 있다. 포인터를 사용하면1. "..
연산 등을 목적으로 서로 다른 타입을 가진 값의 자료형을 변환하는 것 1. 형 변환 1.1 형 변환 boolean을 제외한 다른 자료형끼리 변환이 가능하다. 소수형의 값을 정수형으로 형 변환할 경우 소수점 부분의 값은 내림되어 계산된다. [ 기본 자료형 → 참조 자료형 ] 혹은 [ 참조 자료형 → 기본 자료형 ]의 변환은 되지 않는다. 1.2 형 변환의 종류 크기가 작은 자료형에서 큰 자료형으로 갈 때(ex. int→long)는 변환 중 문제될 것이 없으므로 따로 해줄 것이 없다. (묵시적 형변환) 하지만 크기가 큰 자료형에서 크기가 작은 자료형으로 갈 때(ex. long → int)는 범위 밖의 값이 저장될 위험이 있으므로 자바가 자동으로 자료형을 바꿔주지 않는다. 사용자가 직접 범위가 작은 타입을 앞..
자바의 자료형은 크게 두 가지, 기본 자료형(Primitive data type)과 참조 자료형(Reference data type)으로 나눌 수 있다. 1. 기본 자료형 자바의 기본 자료형은 총 8개로, 정수형, 소수형, 논리형으로 구분할 수 있다. - 정수형 : byte, short, int, long, char - 소수형 : float, double - 논리형 : boolean 1.0 기본값 인스턴스 변수/클래스 변수/매개 변수 는 사용 전 초기화해주지 않으면 자동으로 기본값이 저장된다. 하지만 지역 변수는 기본값이 저장되지 않으므로 사용하기 전 꼭 초기화해주어야 한다. 사실 어떤 변수를 사용하더라도 초기화하는 습관을 들이는 것이 좋은데, javadoc에서도 기본값에 의존하는 것은 좋지 않은 프로그..
1. 변수 명명 규칙 (naming convention) 대소문자가 구별되고, 길이의 제한이 없다. 예약어를 사용하면 안된다. 숫자로 시작할 수 없다. 특수문자는 달러 사인($)과 언더스코어(_)만 사용할 수 있다. 규칙 3, 4번을 종합하면, 변수명 첫 글자로는 유니코드 문자, 알파벳, $, _가 올 수 있고, 두 번째 문자부터는 숫자도 사용할 수 있다. 파스칼 표기법(PascalCase)과 카멜 표기법(camelCase)를 사용한다. 주로 클래스명에는 파스칼 표기법을, 변수명과 함수명은 카멜 표기법을 사용한다. 반의어는 반드시 대응하는 개념으로 사용한다. 2. 변수의 종류 지역 변수(local variables) - 메소드 안에서 선언된 변수 - 선언된 중괄호 안에서만 유효 매개 변수(paramete..
클래스 객체 지향 프로그래밍(OOP)에서 특정 객체를 생성하기 위해 변수와 메소드를 정의하는 일종의 틀이다. 객체를 정의하기 위한 메소드와 변수로 구성된다. - 위키피디아 객체(인스턴스) 객체는 클래스로 규정된 인스턴스로서, 변수 대신 실제값을 가진다. - 위키피디아 위키백과에서 가져온 각각의 정의이다. 쉽게 생각하자면 클래스는 상태와 행동을 갖는 '개념'이고 객체(인스턴스)는 클래스를 바탕으로 만들어진 '실제 사물'이다. 예를 들어, "고양이(cat)"를 떠올려보면, 고양이는 몸무게, 길이, 털의 색깔, 털의 길이 등 다양한 특성(=상태)을 가진다. 짖거나, 밥을 먹거나, 뛰어다니거나 물을 마시는 등 여러 행동도 할 수 있다. 고양이가 가지는 다양한 특성(=상태)들은 변수에 저장하고, 고양이가 할 수 ..