반응형
++ 글쓴이의 공부 기록용이라 내용이 계속 수정될 수 있습니다
만약 이글에 문제점이 있다면 의견 남겨주시면 글쓴이의 공부에 도움이 될 거 같습니다!! ++
자료형이란?
데이터를 해석하는 방법을 의미
즉, 동일한 형태의 데이터라 하더라도 자료형에 의해서 데이터를 처리하는 결과가 달라질 수 있다는 것을 의미한다.
또한, 자료형은 특정 데이터를 저장하거나 읽어 들일 수 있는 공간의 크기를 제한하는 역할을 수행한다.
즉, 자료형에 따라 처리 가능한 데이터의 크기가 달라진다는 것을 의미한다.
C# 자료형은 데이터 형식에 따라 값 형식과 참조 형식으로 구분된다.
값 형식 & 참조형식
++ 값형식 ++
시스템에 의해서 자동으로 관리되는 자료형을 의미
즉, 해당 자료형의 데이터가 더 이상 사용되지 않을 경우 시스템에 의해서 자동으로 정리된다.
값 형식 자료형은 해당 데이터를 직접 처리하는 특징이 존재하기 때문에 해당 형식 자료형 데이터를 다른 공간에 할당(복사) 할 경우 사본이 만들어지는 특징이 존재
++ 참조 형식 ++
가비지 컬렉션에 의해서 관리되는 자료형을 의미
즉, 해당 자료형의 데이터가 더 이상 사용되지 않을 경우 가비지 컬렉션에 의해서 자동으로 정리된다.
참조 형식 자료형 데이터는 값 형식과 달리 데이터를 직접 처리하는 것이 아니라 해당 데이터를 지니고 있는 공간에 대한 참조 값 (메모리 주소)를 제어하는 특징이 존재
즉, 참조 형식 데이터를 다른 공간에 할당할 경우 사본이 만들어지는 것이 아니라 데이터를 지니고 있는 공간에 대한 참조 값만 복사된다는 것을 알 수 있다.
C# 자료형 종류
++ 값 형식 ++
> 정수
- byte (1 바이트)
- sbyte (1 바이트)
- short (2 바이트)
- ushort (2 바이트)
- int (4 바이트)
- uint (4 바이트)
- long (8 바이트)
- ulong (8 바이트)
> 실수
- float (4 바이트)
- double (8 바이트)
- decimal (16 바이트)
> 논리
- bool (1 바이트)
> 문자 (=정수와 같다)
- char (2 바이트)
++ 참조 형식 ++
> 문자열
- string
> 객체
- object
자료형 + 변수 = 값
byte nByte01 = byte.MaxValue;
sbyte nByte02 = sbyte.MaxValue;
short nShort01 = short.MaxValue;
ushort nShort02 = ushort.MaxValue;
int nInt01 = int.MaxValue;
uint nInt02 = uint.MaxValue;
long nLong01 = long.MaxValue;
ulong nLong02 = ulong.MaxValue;
Console.WriteLine("정수");
Console.WriteLine("byte : {0}, {1}", byte.MinValue, nByte01);
Console.WriteLine("sbyte : {0}, {1}", sbyte.MaxValue, nByte02);
Console.WriteLine("\n short : {0}, {1}", short.MaxValue, nShort01);
Console.WriteLine("ushort : {0}, {1}", ushort.MaxValue, nShort02);
Console.WriteLine("\nint : {0}, {1}", int.MinValue, nInt01);
Console.WriteLine("uint : {0}, {1}", uint.MinValue, nInt02);
Console.WriteLine("\nlong : {0}, {1}", long.MinValue,
Console.WriteLine("ulong : {0}, {1}", ulong.MinValue, nLong02);
---결과---
정수
byte : 0, 255 sbyte : 127, 127
short : 32767, 32767 ushort : 65535, 65535
int : -2147483648, 2147483647
uint : 0, 4294967295
long : -9223372036854775808, 9223372036854775807
ulong : 0, 18446744073709551615
float fFloat = float.MaxValue;
double dblDouble = double.MaxValue;
decimal dmDecimal = decimal.MaxValue;
Console.WriteLine("\n실수");
Console.WriteLine("float : {0}, {1}", float.MinValue, fFloat);
Console.WriteLine("double : {0}, {1}", double.MinValue, dblDouble);
Console.WriteLine("decimal : {0}, {1}", decimal.MinValue, dmDecimal);
---결과---
실수
float : -3.402823E+38, 3.402823E+38 # E+38 = 10의 38승이라는 뜻, 여섯째 자리까지 정확한 숫자(그 뒤로는 오차발생)
double : -1.79769313486232E+308, 1.79769313486232E+308 # 15째 자리까지 정확한 숫자(그 뒤로는 오차발생)
decimal : -79228162514264337593543950335, 79228162514264337593543950335
bool bIsBool = true;
# 참 또는 거짓 표현용
char chLetter = 'A';
# 1개의 문자만 표현 # string 보다 포퍼머스가 좋다
string oStr = "Hello, World!";
# 여러문자(문장)를 표현
object oObj = 10 ;
# C#의 모든 자료형은 직접적 or 간접적으로 object 클래스를 상속하고 있어 모든 자료형의 데이터를 넣을 수 있다.
# 내부적으로 박싱과 언박싱의 퍼포머스를저하시킴
Console.WriteLine("\n기타");
Console.WriteLine("bool : {0}", bIsBool);
Console.WriteLine("char : {0}", chLetter);
Console.WriteLine("string : {0}", oStr);
Console.WriteLine("object : {0}", (int) oObj);
Console.WriteLine("object : {0}", oObj);
---결과---
기타
bool : True
char : A
string : Hello, World!
object : 10
정수 자료형 & 실수 자료형
++ 정수자료형 ++
소수점이 포함되어있지 않은 숫자 데이터를 처리할 수 있는 자료형을 의미
> signed 자료형
양수 / 음수를 모두 처리할 수 있다
> unsigned 자료형
양수만을 처리하는 것이 가능하다
음수에 대한 처리가 불필요할 경우 사용
signed 자료형에 비해 처리할 수 있는 양수의 크기가 2배 더 크다
++ 실수 자료형 ++
소수점이 포함되어있는 수자 데이터를 처리할 수 있는 자료형을 의미
float와 double 자료형은 부동 소수점 방식으로 실수 데이터를 처리하기 때문에 처리되는 데이터는 미세한 오차를 지나고 있으며 해당 오차를 부동 소수점 오차라고 한다.
decimal 자료형은 고정 소수점 방식에 비해 높은 정밀도를 자랑하지만 부동 소수점 방식에 비해 처리되는 속도가 떨어지는 단점이 존재한다.
정수 자료형 데이터는 소수점을 처리할 수 없는 대신 빠른 속도로 데이터를 처리하는 것이 가능하기 때문에 정수 자료형과 실수 자료형 모두 사용할 수 있는 상황이라면 장수 자료형을 사용하는 것이 좀 더 좋은 성능을 지니는 프로그램을 제작할 수 있다.
반응형
'언어 C#' 카테고리의 다른 글
연산자 (2) | 2023.01.07 |
---|---|
변수 & 상수 (0) | 2023.01.03 |
Visual Studio 기본설정 & 폴더 생성 | 작은 팁 (0) | 2023.01.03 |
프로그래밍_C#기초 (0) | 2023.01.02 |