[C# 입문] 데이터 형과 변수 (하)
앞서 데이터 형과 변수 (상)편에 이은 포스팅입니다. 이전 글에 대한 정보는
[C# 입문] 데이터 형과 변수 (상) 에 있습니다.
문자를 다루는 방법에는 문자 자체를 다루는 문자 형식과 문자로 이루어진 문자열 형식으로 문자들을 다룰 수 있습니다. char과 string입니다.
char
문자 형 char는 1개의 문자를 다루는 데이터 형입니다. 우리가 Hello, World를 입력한다고 생각합시다. 그러면 char형으로는 하나하나 입력해주어야 하는 것이죠.
using System;
namespace MyFirstApp
{
class Program
{
static void Main(string[] args)
{
char a = 'H';
char b = 'e';
char c = 'l';
char d = 'l';
char e = 'o';
char f = ',';
char g = ' ';
char h = 'W';
char i = 'o';
char j = 'r';
char k = 'l';
char l = 'd';
Console.Write(a);
Console.Write(b);
Console.Write(c);
Console.Write(d);
Console.Write(e);
Console.Write(f);
Console.Write(g);
Console.Write(h);
Console.Write(i);
Console.Write(j);
Console.Write(k);
Console.WriteLine(l);
}
}
}
이렇게 하나의 문자를 담을 수 있는 것을 char형이라 합니다. 이러한 char형을 모아두면 string이라고 하는 문자열이 됩니다.
using System;
namespace MyFirstApp
{
class Program
{
static void Main(string[] args)
{
string a = "Hello, World!";
Console.WriteLine(a);
}
}
}
위의 문자로 이루어진 복잡한 형태가 문자열로 깔끔한 형태로 바꾸어주었습니다. 이러한 문자열 string은 정해진 데이터 범위가 없습니다. 데이터가 저장될 수 있는 양이 그때마다 다르기 때문이죠.
그렇다면 여기서 또 생각해볼 수 있는 형태가 있습니다. 만약 문자열과 문자열을 더하게 되면 어떻게 될까요?
using System;
namespace MyFirstApp
{
class Program
{
static void Main(string[] args)
{
string a = "Hello, World!";
string b = " 안녕 세상!";
string c;
c = a + b;
Console.WriteLine(c);
}
}
}
출력 결과를 확인하면
두 개의 문자열이 더해져서 나오는 것을 확인할 수 있습니다. 이렇듯 문자열은 다양한 상태로 사용될 수 있습니다. 그렇다면 여기서 문자의 갯수를 세고 싶다면 어떻게 해야할까요? 직접 하나하나 세야 할까요? 그렇지 않습니다. 우리에게는 강력한 메소드가 있으니까요!
using System;
namespace MyFirstApp
{
class Program
{
static void Main(string[] args)
{
string a = "Hello, World!";
string b = " 안녕 세상!";
string c;
c = a + b;
Console.WriteLine(a.Length);
Console.WriteLine(b.Length);
Console.WriteLine(c.Length);
}
}
}
실제 실행을 시켜보면 13, 7, 20이 나옵니다.
실제로 하나씩 세어보도록 하겠습니다.
H | e | l | l | o | , | W | o | r | |
l | d | ! |
총 13개의 문자가 나옴을 확인할 수 있습니다. 중간에 있는 공백을 포함해서 말이죠.
안 | 녕 | 세 | 상 | ! |
여기도 공백을 포함해서 7개임을 확인할 수 있습니다.
c는 a와 b를 합친 것이므로 총 20개의 문자를 세어준 것이죠. 실제 Length의 역할을 string에 들어있는 char 유니코드 문자수가 아니라 인스턴스의 개체 수를 반환해서 수를 세어줍니다. 일반적으로 string에는 마지막에 널문자가 들어갑니다.
H | e | l | l | o | null문자 |
이러한 형태로 마지막 부분에 널문자를 넣음으로써 컴퓨터에게 문자열의 마지막임을 알립니다. 하지만 Length는 마지막 Null 문자를 제외하고 문자의 갯수를 공백을 포함해서 세어줍니다. 아주 편리한 기능이죠?
문자열에서는 사용하고 싶은 특수한 문자가 있을 수 있습니다. 예를 들어, ", \, /이러한 형태의 문자는 이대로 사용할 수 없습니다. 그래서 이러한 특수한 문자를 사용할 수 있게 하기 위해서 이스케이프 문자를 만들어두었습니다. 이스케이프 문자를 활용하면 언제든 특수한 문자를 사용할 수 있습니다.
using System;
namespace MyFirstApp
{
class Program
{
static void Main(string[] args)
{
string a = "Hello, \t this is tab \tand space";
string b = "\" 큰 따움표를 사용하기 위해서는 \\를 입력해야 합니다.";
//우리는 \를 이스케이프 문자라 합니다.
Console.WriteLine(a);
}
}
}
이스케이프 문자는 엔터 위에 있는 ' \ ' 표시가 이스케이프 문자입니다. 사용하는 곳에 따라 다르게 보이기 때문에 키보드 자판 상 돈 표시를 하고 있습니다.
이스케이프 형태 | 문자 이름 | 유니코드 인코딩 |
\' | 작은 따옴표 | 0x0027 |
\" | 큰 따옴표 | 0x0022 |
\\ | 백 슬래시 | 0x005C |
\0 | NULL | 0x0000 |
\a | 경고 | 0x0007 |
\b | 백스페이스 | 0x0008 |
\f | 폼 피드 | 0x000C |
\n | 줄 바꿈 | 0x000A |
\r | 캐리지 리턴 | 0x000D |
\t | 탭 (시스템 설정에 따라 다름) | 0x0009 |
\v | 세로 탭 | 0x000B |
등이 있습니다.
Bool
참과 거짓으로 이루어진 논리형 입니다. 단순히 true와 false 두가지 밖에 없습니다. 간략한 형태지만 프로그래머들에게는 강력한 도구가 됩니다. bool형이 없는 프로그래밍 언어에서는 0과 1로써 참과 거짓을 표현했는데, 이는 코드를 읽을 때 가독성이 떨어지게 됩니다. 하루에도 수십 줄의 코드를 읽는 프로그래머 입장에서는 굉장히 힘든일이죠. 그래서 bool형은 프로그래머가 코드를 더 잘 읽을 수 있도록 만들어주는 큰 역할을 했습니다.
간략하게 bool형에 대해 살펴보겠습니다.
using System;
namespace MyFirstApp
{
class Program
{
static void Main(string[] args)
{
bool a = true;
bool b = false;
Console.WriteLine(a);
Console.WriteLine(b);
}
}
}
이 코드를 실행하면 treu와 false가 출력됩니다.
이렇게 기본적인 데이터형에 대해서는 마무리가 되었습니다. 아직 안한 object형도 있지만, 나중에 상속에 대한 이야기를 배운 뒤에 object를 더 자세히 다루도록 하겠습니다. 감사합니다!