키워드는 특별한 의미가 부여된 예약어로 식별자로 사용할 수 없음
키워드 종류
abstract as base bool break byte case catch char
checked class const continue decimal default delegate do
double else enum event explicit extern false finally
fixed float for foreach goto if implicit in int
interface internal is lock long namespace new null object
operator out override params private protected public
readonly ref return sbyte sealed short sizeof stackalloc
static string struct switch this throw true try typeof
uint ulong unchecked unsafe ushort using virtual void
volatile while
리터럴의 개념과 역할
: 프로그램에서 직접 사용되는 상수 값, 소스코드에 직접 기록되어 있는 값. 컴파일러에 의해 상수 값으로 처리되며 변수나 상수에 할당되거나 연산에 사용됨
리터럴의 종류와 예시
• 문자열변수명.Split() : 문자열을 ()내의 문자를 기준으로 나눔
string[] numbers = s.Split(' ');
// s 문자열을 공백으로 구분하여 배열로 만듦
// numbers[0] 첫 번째 값, numbers[1] 두 번째 값...
문자열.IndexOf(검색할것) : 문자열에서 ()내의 문자열 검색하여 첫번째 인덱스를 찾아 반환
string str = "Hello, World!";
int index = str.IndexOf("World");
// 이 코드는 str 문자열에서 "World" 문자열의 첫 번째 인덱스를 찾아 index 변수에 저장 함
문자열.Compare(문자열1, 문자열2) : 문자열1과 문자열2를 비교함
- 문자열1 > 문자열2 -> 0보다 작은 수 반환
- 문자열1 = 문자열2 -> 0 반환
- 문자열1 < 문자열2 -> 0보다 큰 수 반환
int compare = string.Compare(str1, str2);
// 앞에거가 크면 음수, 같으면 0, 작으면 양수
// 사전순으로 비교
string.Format("문자열 내용 {0} {1}", 변수1, 변수2) : {숫자} 순서에 맞는 변수 삽입
string name = "John";
int age = 30;
string messege = string.Format("My name is {0} and I'm {1} years old.", name, age);
string name = "John";
int age = 30;
string message = $"My name is {name} and I'm {age} years old.";
Console.Read() : 한 문자를 입력받고 문자의 int(유니코드)로 반환
Console.ReadLine() : 한 문자열을 입력받고 string으로 반환 (엔터키 입력이 트리거)
Console.Write(value) : 변수의 값을 출력
Console.WriteLine(value) : 변수 값을 출력하고 줄 바꿈
1) 문자 -> 정수
문자 - '0'
char c = '10';
int n = c - '0'; // n = 10
2) 문자열 -> 정수
int.Parse(문자열)
string s = "1000";
int n = int.Parse(s); // n = 1000
3) 숫자 -> 문자열
숫자변수.ToString()
int n = 1000;
string s = n.ToString();
4) Parse
자료형.Parse(변수)
string s = "123";
int n = int.Parse(s); // n = 123
5) Convert
Conver.To자료형.(변수)
Convert.ToString() : 문자열
Convert.ToInt() : 정수
Convert.ToDouble() : 실수
Convert.ToChar() : 문자
int a = 10;
Console.WriteLine(Convert.ToString(a)); // 문자열 10으로 변환
6) 이진수 변환
Convert.ToString(10진수변수, 2)
int n = 8;
Console.WriteLine(Convert.ToString(n, 2)); // 1000
6) 데이터 형식 알아내는 법
변수이름.GetType()
int n = 0;
Console.WriteLine(n.GetType()); // System.Int32
• 변수 선언할 때 사용
• 변수의 자료형이 컴파일러에 의해 자동으로 결정됨.
• 즉, 초기화하는 값의 자료형에 따라 변수의 자료형이 결정 됨.
int a = 10;
var b = a;
Console.WriteLine(b.GetType()); // System.Int32
자료형[] 배열변수명 = new 자료형[크기];
int[] numbers = new int[3]; // 3개의 숫자를 저장할 배열
char[] ch;
ch = new char[10]; // 두 줄로 나누어서 초기화 해도 ok
int[] item = {100, 200, 300, 400, 500}; // 배열 크기 : 5
자료형[,] 배열변수명 = new 자료형[크기,크기];
int[,] map = new int[5, 5]
{
{1, 1, 1, 1, 1},
{1, 0, 0, 0, 1},
{1, 0, 1, 0, 1},
{1, 0, 0, 0, 1},
{1, 1, 1, 1, 1}
};
foreach(자료형 내부변수이름 in 배열이름) { }
foreach (int i in list)
{
Console.WriteLine(i);
} // 배열 내부의 원소를 하나하나 접근 하여 출력문을 수행함
: 처음 초기화된 크기로 고정되는 배열과 달리 리스트의 크기는 동적으로 조정 가능. 단, 메모리 사용량 증가, 데이터 접근 시간 증가, 코드 복잡도 증가 등의 단점들이 있으므로 사용목적을 고려 하여 적절한 선택이 필요함
std::string str = "Hello";
str += " World"; // 기존 문자열을 수정
string original = "Hello";
string modified = original + " World"; // 새로운 문자열이 생성됨
std::string str = "Hello, World!";
str.replace(str.find("World"), 5, "C++");
string result = str.Replace("World", "C#");
C#은 문자열 처리에서 더 많은 추상화와 편리함을 제공하는 반면, C++은 더 많은 유연성과 성능 최적화를 가능하게 함
int array[5]; // 크기가 5인 배열 (초기화되지 않음)
int initializedArray[5] = { 1, 2, 3, 4, 5 }; // 초기값을 갖는 배열
int[] array = new int[5]; // 크기가 5인 배열
int[] initializedArray = { 1, 2, 3, 4, 5 }; // 초기값을 갖는 배열
int* dynamicArray = new int[size]; // 동적 배열
delete[] dynamicArray; // 메모리 해제
int multiArray[2][3]; // 2x3 배열
int[,] multiArray = new int[2, 3]; // 2x3 배열
C#은 메모리 관리와 배열 처리에서 더 많은 안전성을 제공하는 반면, C++는 더 많은 제어와 성능 최적화를 가능하게 함.