부트캠프/Study
C# 문법 1강 - 연산자 / 문자열
Jya_o_o
2023. 11. 6. 20:49
//출력
// 줄바꿈
{
Console.WriteLine("Hello World!");
Console.WriteLine("My Name is Ju");
Console.WriteLine(10);
Console.WriteLine(3.141592);
Console.WriteLine(3 + 3);
}
// 한줄 출력
{
Console.Write("Hello! ");
Console.Write("We are Learning ");
Console.WriteLine("at TeamSparta");
}
// 입력
{
Console.Write("Enter your name: ");
string name = Console.ReadLine();
Console.WriteLine("Hello, {0}!", name);
}
// Split 함수 문자열 나누기 + 형변환
{
Console.Write("Enter two numbers: ");
string input = Console.ReadLine(); // "10 20"과 같은 문자열을 입력받음
// { "10", "20" }
string[] numbers = input.Split(' '); // 문자열을 공백으로 구분하여 배열로 만듦
int num1 = int.Parse(numbers[0]); // 첫 번째 값을 정수로 변환하여 저장
int num2 = int.Parse(numbers[1]); // 두 번째 값을 정수로 변환하여 저장
int sum = num1 + num2; // 두 수를 더하여 결과를 계산
Console.WriteLine("The sum of {0} and {1} is {2}.", num1, num2, sum);
}
// var 키워드
{
var num = 10; // int 자료형으로 결정됨
var name = "kero"; // string 자료형으로 결정됨
var pi = 3.141592; // double 자료형으로 결정됨
}
// 산술 연산자
{
int num1 = 20, num2 = 10;
Console.WriteLine(num1 + num2);
Console.WriteLine(num1 - num2);
Console.WriteLine(num1 / num2);
Console.WriteLine(num1 * num2);
Console.WriteLine(num1 % num2);
}
// 관계 연산자
{
int num1 = 20, num2 = 10;
Console.WriteLine(num1 == num2);
Console.WriteLine(num1 != num2);
Console.WriteLine(num1 > num2);
Console.WriteLine(num1 < num2);
Console.WriteLine(num1 >= num2);
Console.WriteLine(num1 <= num2);
}
// 논리 연산자
{
int num3 = 15;
0 <= num3 <= 20
Console.WriteLine(0 <= num3 && num3 <= 20); // 0과 20 사이에 포함되면
Console.WriteLine(0 > num3 || num3 > 20); // 0 ~ 20 사이에 포함되지 않으면
Console.WriteLine(!(0 <= num3 && num3 <= 20)); // 0과 20 사이에 포함되어있지 않으면
}
// 비트 연산자
{
int a = 0b1100; // 12 (2진수)
int b = 0b1010; // 10 (2진수)
int and = a & b; // 0b1000 (8) 두 비트 값이 모두 1일 때 1을 반환
int or = a | b; // 0b1110 (14) 두 비트 값 중 하나라도 1일 때 1을 반환
int xor = a ^ b; // 0b0110 (6) 두 비트 값이 서로 다를 때 1을 반환
int not = a; // 0b0011 비트 값의 보수(complement)를 반환
int c = 0b1011; // 11 (2진수)
int leftShift = c << 2; // 0b101100 (44) 비트를 왼쪽으로 이동
int rightShift = c >> 1; // 0b0101 (5) 비트를 오른쪽으로 이동
int d = 0b1100; // 12 (2진수)
int bit3 = (d >> 2) & 0b1; // 0 (3번째 비트)
d |= 0b1000; // 0b1100 | 0b1000 = 0b1100 (12)
}
// 연산자 우선순위
{
1.괄호(): 괄호로 감싸진 부분은 가장 높은 우선순위로 먼저 계산됩니다.
2.단항 연산자: 단항 연산자들(++, --, +, -, !등)은 괄호 다음으로 높은 우선순위를 가집니다.
3.산술 연산자: 산술 연산자들(*, /, %, +, -)은 단항 연산자보다 우선순위가 낮습니다.
4.시프트 연산자: 시프트 연산자(<<, >>)는 산술 연산자보다 우선순위가 낮습니다.
5.관계 연산자: 관계 연산자들(<, >, <=, >=, ==, !=)는 시프트 연산자보다 우선순위가 낮습니다.
6.논리 연산자: 논리 연산자들(&&, ||)는 관계 연산자보다 우선순위가 낮습니다.
7.할당 연산자: 할당 연산자들(=, +=, -=, *=, /= 등)는 논리 연산자보다 우선순위가 낮습니다.
}
// 문자열 처리 기능 메서드
// 문자열 생성
{
string str1 = "Hello, World!"; // 리터럴 문자열 사용
string str2 = new string('H', 5); // 문자 'H'를 5개로 구성된 문자열 생성
}
// 연결 - 포멧팅을 더 자주 사용한다
{
string str1 = "Hello";
string str2 = "World";
string str3 = str1 + " " + str2;
}
// 분할
{
string str = "Hello, World!";
string[] words = str.Split(','); // str 문자열을 쉼표(,)로 구분
}
// 검색
{
string str = "Hello, World!";
int index = str.IndexOf("World"); // str 문자열에서 "World" 문자열의 첫 번째 인덱스를 찾아 index 변수에 저장
}
// 대체
{
string str = "Hello, World!";
string newStr = str.Replace("World", "Universe"); // str 문자열에서 "World" 문자열을 "Universe" 문자열로 대체한 새로운 문자열 newStr을 생성
}
// 변환
{
string str = "123";
int num = int.Parse(str);
}
{
int num = 123;
string str = num.ToString();
}
// 비교
{
string str1 = "Apple";
string str2 = "Banana";
int compare = string.Compare(str1, str2); // 사전식 비교. str1이 str2보다 작으면 음수, 크면 양수, 같으면 0이 나온다.
}
// 포멧팅
// 형식화
{
string name = "John";
int age = 30;
string message = 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.";
}
Parse랑 Convert의 차이
파싱 실패했을 때, Parse는 FormatException을 내보내고 Convert는 기본값(int같은 경우 0)을 내보낸다.즉, Parse는 예외처리가 되고 Convert는 안된다. 데이터가 항상 명확하고 원하는 값이라면 Parse를 사용하고 불확실할 때는 Covert를 사용한다.