본문 바로가기
반응형

전체 글58

스트림 (Stream) 프로그래밍에서 데이터가 흐르는 통로를 의미한다.즉, 입력(읽기)과 출력(쓰기)을 추상화한 개념이다.파일이든 키보드 입력이든 네트워크든 상관없이, “데이터가 연속적으로 흐른다” 라고 생각하면 된다. 스트림을 쓰는 이유장치 독립성키보드, 파일, 네트워크, 메모리… 어떤 대상이든 같은 방식(>)으로 다룰 수 있음. (C++ 기준)추상화하드웨어 세부사항을 몰라도, 스트림만 알면 입출력 처리 가능.유연성표준 입출력(cin, cout)뿐 아니라 파일, 문자열까지 같은 인터페이스로 처리 가능. (C++ 기준) 요약스트림(stream) = 데이터가 흐르는 추상적인 통로C++에서는 입력(istream), 출력(ostream), 양방향(iostream)으로 나뉨cin, cout, cerr, ifstream, ofstrea.. 2025. 9. 19.
Java 기본형(Primitive Types) vs 래퍼 클래스(Wrapper Class) 자바에서 타입은 기본형(Primitive)과 참조형(Reference)으로 나눌 수 있다.특히 참조형 중에서도 기본형을 객체로 다루기 위해 만들어진 클래스들을 래퍼 클래스(Wrapper Class)라고 부른다. 기본형자바 언어에 내장된 가장 단순한 타입값 자체를 저장 (스택 메모리에 저장)스택 메모리에 저장하기 때문에 빠르고 효율적.객체가 아니라서, null을 가질 수 없음. / 제네릭, 자료구조 등에서 쓰일 수 없음.총 8개정수형: byte, short, int, long실수형: float, double문자형: char논리형: boolean 참조형객체의 주소를 저장클래스, 배열, 인터페이스, 열거(Enum) 등이 포함객체니까 제네릭, 자료구조 등에서 사용가능하며, null을 가질 수 있음.단점으로 성능.. 2025. 9. 18.
강타입 (Strongly Typed) VS 약타입 (Weakly Typed) 강타입서로 다른 타입 간의 연산을 엄격하게 제한하는 타입 시스템 특징- 암묵적인(자동) 타입 변환을 거의 허용하지 않음.- 잘못된 타입끼리 연산하려고 하면 무조건 에러. 예시 언어: C++, Java, Rust 약타입서로 다른 타입 간의 연산을 느슨하게 허용하는 타입 시스템 특징- 암묵적 타입 변환을 많이 허용- 의도치 않은 버그가 생길 수 있음. 예시 언어: Python, JavaScript예시C++ (정적, 약타입)#include int main() { char *s = "3"; int x = 4; printf("%s\n", s + x); // 위험한 코드 return 0;} "3" + 4 는 문자열 "3"의 시작 주소에서 4바이트 뒤의 메모리를 가리킴.결과는 "3"이 아니라 .. 2025. 9. 18.
정적 타이핑 vs 동적 타이핑 정적 타이핑정적 타이핑: 변수나 표현식의 타입을 컴파일 시점(프로그램 실행 전) 결정하고, 이후 변경할 수 없는 타입 시스템.특징- 타입 선언이 필수적으로 필요- 컴파일러가 타입을 추론해야 함- 타입 오류가 있으면 실행 전에 컴파일 에러 발생- 성능 최적화와 안정성에 유리 대표적인 언어: C++, Java, Rust, Go, Kotlin, Swift 동적 타이핑동적 타이핑: 변수나 표현식의 타입을 런타임 시점(프로그램 실행 중) 결정하는 타입 시스템특징- 변수에 타입을 명시할 필요 없음.- 실행할 때 실제 값에 따라 타입이 정해짐.- 코드 작성이 간단하고, 유연하지만, 실행 도중 타입 오류가 발생할 수 있음. 대표적인 언어: Python, JavaScript, Ruby, PHP, Lua 정적 타이핑의 실.. 2025. 9. 18.
반응형