목록Language (42)
OneDev

1. Object 클래스란 무엇인가요?자바에서 모든 클래스의 최상위 부모 클래스부모가 없으면 묵시적으로 Object 클래스를 상속받는다자바가 extends Object 코드를 넣어준다따라서 extends Object는 생략하는 것을 권장 2. 자바에서 Object 클래스가 최상위 부모 클래스로서 가지는 역할→ JAVA 의 핵심인 상속, 다형성 등을 제공하고 공통 기능을 제공공통기능 제공다형성 지원 □ 공통기능 제공 객체의 정보를 제공하고, 이 객체가 다른 객체와 같은지 다른지 비교하고, 객체가 어떤 클래스로 만들어졌는지 확인하는 기능은 모든 객체에게 필요한 기본 기능.이런 기능을 객체를 만들 때 마다 새로운 메소드를 만들어 사용해야한다면 상당히 번거로울 것 & 만든다 해도 개발자마다 서로 다른 이름의 ..
□ java.lang 패키지는 무엇인가요 ? → 자바를 다루는 가장 기본이 되는 클래스들을 보관하는 패키지 □ java.lang 패키지의 대표적인 클래스들Object : 모든 자바 객체의 부모 클래스String : 문자열Integer, Long, Double : 래퍼 타입Class : 클래스 메타 정보System : 시스템과 관련된 기본 기능들을 제공□ import 생략 가능java.lang 패키지는 모든 자바 애플리케이션에 자동으로 import 되기 때문 package lang;//import java.lang.System;
※ 목차 - 0. 요약 - 1. Scanner 클래스 - 2. BufferedReader 클래스 - 3. Scanner 사용법 - 4. BufferedReader 사용법 ◎ 0. 요약 클래스 Scanner BufferedReader 설명 입력받은 데이터를 다양한 타입으로 변환하의 반환하는 클래스. 기본형과 String 타입을 정규표현식을 사용해 파싱한다 데이터를 한 번에 읽어와 버퍼에 보관한 후 버퍼에서 데이터를 읽어오는 방식으로 동작하는 클래스, 동작 방식 공백과 개행문자 ( '\n', '\t', '\r' , ...) 를 기준으로 입력을 받으며, 데이터를 입력받을 경우 즉시 사용자에게 전송된다. 입력받을 때마다 전송되기고, 내부적으로 정규표현식을 사용하기 때문에 BufferedReader에 비해 더 많..

◎ #pragma 란? #pragma 는 컴파일러에게 특정 작업을 수행하도록 지시한다 #pragma 는 C 언어의 기본 키워드라고 보긴 힘들고, 컴파일러에 종속적인 키워드라고 보는 것이 맞지 싶다. pragma를 사용하는 문법은 컴파일러 마다 다르고, 딱히 통일된 것이 없기 때문이다 #pragma 가 컴파일러에게 어떤 작업을 지시하는지는 #pragma 뒤에 오는 키워드에 따라 결정되는데, Microsoft Visual Studio 기준으로는 다음과 같은 것들이 있다 각각의 키워드들에 대한 설명은 아래 링크를 참조하세요. https://learn.microsoft.com/ko-kr/cpp/preprocessor/pragma-directives-and-the-pragma-keyword?view=msvc-17..
◎ volatile 키워드 해당 변수를 최적화에서 제외 하도록 명령하는 키워드 외부 하드웨어와 통신할 때 주로 사용된다 "volatile" 이란 단어는 "변덕스러운" 이라는 의미를 가지고 있는데, 변덕스럽게 변할 수 있는 값들에 대해 최적화 작업을 수행하지 말라고 컴파일러에게 명령한다고 생각하면 이해가 쉬울듯 하다 ◎ syntax volatile 키워드 사용을 위한 구문은 매우 간단한데, 변수 앞에 volatile 키워드를 붙여주기만 하면 된다 > #include typedef struct SENSOR { /* 감지 안되면 0, 감지되면 1 이다.*/ int sensor_flag; int data; } SENSOR; int main() { volatile SENSOR *sensor; // 컴파일러는 더이..

1. typedef 선언 이란? typedef 선언이란 typedef를 스토리지 클래스로 사용하는 선언으로, 선언자는 새 형식이 된다 typedef 선언을 사용하여 C에서 이미 정의된 형식이나 사용자가 선언한 형식에 대한 보다 짧거나 의미 있는 이름을 생성할 수 있다 (특정 형식에 대한 별칭 부여) 불필요한 타이핑을 줄이고 소스코드 작성의 효율을 올려준다 배열, 구조체, 열거형, 함수 등에도 사용 가능하다 2. typedef 선언 방법 → typedef 선언 방법은 다음과 같다 > typedef struct Human human → 구조체 [struct Human] 을 [human] 으로 대신 부르겠다는뜻 /* 다양한 typedef 사용 예시 */ #include int add(int a, int b) ..

※ 목차 ▣ 매크로함수 (0) 매크로 함수란? (1) 매크로 함수 정의 방법 (2) 매크로 함수와 실제 함수와의 차이점 (3) # 과 ## ▣ 인라인 함수 (1) 인라인 함수 정의 방법 (2) 인라인함수 vs 매크로함수 ▣ 매크로함수 0. 매크로 함수란? → C 에서 매크로 함수란 #define 전처리 지시자를 이용해 함수처럼 동작하는 매크로를 말한다 → 이러한 매크로를 "함수 같은 매크로(function-like-macro)" 또는 "매크로 함수" 라 한다 1. 매크로 함수 정의 방법 (예시) #define square(x) x*x 2. 매크로 함수와 진짜 함수의 차이점 → 매크로 함수의 동작 방식은 #define 문을 통한 치환과 동일하다 → 즉 매크로 함수는 컴파일 되기 전에 치환을 수행한다 #de..

◎ memcpy 포함 헤더 : ( C++에서는 ) 메모리의 일부분을 복사한다 기본형 : void* memcpy(void* destination, const void* source, size_t num); soure 가 가리키는 곳 부터 num 바이트 만큼을 destination이 가리키는 곳에 복사한다 리턴값 : destination 단순히 이진데이터를 복사하는 함수기 때문에 destination 과 source 의 타입은 함수와 무관하다 source 의 널 종료 문자를 검사하지 않고, 언제나 정확히 num 바이트 만큼을 복사한다 오버플로우를 방지하기 위해 destination 과 source 가 가리키는 배열의 크기는 반드시 num 바이트 이상이어야 하고, 서로 겹치면 안된다 ( 만일 두 메모리 블록이..
◎ 동적 할당(Dynamic Memory Allocation) "동적 할당" 이란 → 프로그램이 실행단계에서(프로그램 실행중에) 사용할 메모리 공간을 직접 할당하는 것 컴파일 단계에서 메모리를 할당하는 정적(static) 할당과 비교된다 상황에 따라 원하는 만큼 메모리를 할당할 수 있고, 이미 할당된 메모리라 해도 크기를 조절할 수 있다 malloc 함수를 이용해 메모리를 할당하고, free 함수를 이용해 할당을 해제해줘야 한다 ◎ malloc, free 함수 에 정의되어 있다 ( 를 include 해줘야 한다) malloc 함수의 리턴형 : (void *) 형 malloc 함수를 이용해 메모리를 할당받은 메모리는 이후에 free 함수를 이용해 해제해주어야 한다 ( 해제하지 않을 시 메모리 누수 memo..
▣ 전처리기 (preprocessor) → 소스코드의 특정 부분을 컴파일 이전에 처리하도록 컴파일러에게 알려주는 텍스트 처리기. (전처리기문 끝에는 세미콜론 (;) 을 붙이지 않는다) ◎ #define 상수, 함수 등을 매크로로 정의할 수 있다 [ #define 매크로이름 값 ] 의 형태로 사용한다 소스코드에서 "매크로이름" 에 해당하는 부분을 "값"으로 대체하게 된다 #define VAR 10 ◎ #undef #define 을 통해 정의한 매크로를 해제 ◎ #include 지시문이 표시되는 지점에 지정된 파일의 내용을 포함하도록 지시하는 기능 로 감싸는 헤더 파일 → 컴파일러에서 기본으로 지원하는 헤더파일인 경우 ( , 등) " " 로 감싸는 헤더파일 → 사용자가 직접 제작한 헤더파일인 경우 #..