TIL

Dart 프로그래밍 1주차 이자 2일차!

kimw746 2024. 10. 29. 21:41

 

데이터 타입, null, 연산자

 

어제 더 길게 쓰고 싶었지만 너무 길면 애매해서
오늘 2일차에 마저 정리 하며 오늘 공부했던것까지 정리 하려구여!

데이터 타입부터 설명할께요!
'타입' 이라는 말은 프로그래밍 할때 다루는 '데이터의 형태'라고 배웠어요
타입을 왜 사용해야한다는 건 어제 정리한 거에 있어요!
데이터 타입은 변수에 할당할수 있는 값의 유형이에요
변수가 데이터를 담는 상자라면 데이터타입은 그 상자가 담을 수 있는 데이터의 형태가 아닐까 생각이드네요.
종류에 따라서는 숫자형(Numbers), 문자형(Strings), 불리언형(Booleans) 이 있는데요

우선 숫자형(Numbers)!
 - int  (정수 (소수점이 없는 숫자)유형)
 int [변수 이름] = [값];

int a = 1;
int b = -5;

 - double(정수 (소수점이 있는 숫자)유형)
 double [변수 이름] = [값];

double a = 1.5;
double b = 0.1234;

 

TIP!) 값을 정수로 할당하면 자동으로 소수점을 부여해요

double z = 1; // double z = 1.0 와 같아요.
z += 2.5;
print(z); // 3.5


 - num(정수, 소수 등의 모든 숫자 유형)
   int 와 double 의 상위 클래스!!
 num [변수 이름] = [값];

num a = 1;
num b = 1.5;


 int, double 모두를 포함하기 때문에 int, double 모두 가능해요

num a = 1;
a += 2.5;
print(a); // 3.5



두번째, 문자형(Strings)

 - Strings(문자유형)
 String [변수 이름] = ‘문자’; / String [변수 이름] = “문자”;

String a = 'hello';
String b = "bye";

 

작은 따옴표 ( ’ ) 와 큰 따옴표 ( ” ) 모두 가능합니당.

좀 더 설명하자면 식별자는 $식별자 형태로, 표현식은 ${표현식} 형태로
만들면 문자열에 넣을 수 있어요.

String name = 'Bob';
print('Hello, my name is $name.'); // Hello, my name is Bob.
print('Hello, my name is ${name.toUpperCase()}.'); // Hello, my name is BOB.

 

toUpperCase() 는 문자열에 있는 모든 문자를 대문자로 바꿔줘요.

 == 연산자를 통해 두값이 같은지 판별 할수 있어요.

String word = 'HELLO';
print('hello' == word.toLowerCase()); // true

 

toLowerCase() 는 문자열에 있는 모든 문자를 소문자로 바꿔줘요.

+ 연산자를 통해 2개 이상의 문자열을 합칠 수 있어요.

 

String prefix = 'Hello, ';
String suffix = 'my name is Bob.';
print(prefix + suffix); // Hello, my name is Bob.


작은 따옴표를 3개 이어 붙인 형태 ( ’’’ ) 나 큰 따옴표를 3개 이어 붙인 형태
( ””” ) 를 통해 여러 줄의 문자열도 만들 수 있어요. 

String s1 = '''
이렇게 하면
여러 줄의 문자열을
만들 수 있어요!
''';
/*
이렇게 하면
여러 줄의 문자열을
만들 수 있어요!
*/

String s2 = """이것도 여러 줄의
문자열이에요! !""";
/*
이것도 여러 줄의
문자열이라 하네요!!
*/


세번째, 불리언형(Booleans)
 - bool (참(true) 또는 거짓(false)으로 판별할수있는유형)
 bool [변수 이름] = [값];

bool isTrue = true;
bool isFalse = false;



다음은 null 에 대해서 설명해보려고 합니다!
우선 null이 언제 사용을 하는지 알아봅시다!
사람은 값이 있는지 없는지 바로 알 수 있지만, 컴퓨터는 우리가 알려주시 않으면 몰라요!
그래서 값이 없다는 것을 컴퓨터에게 알려주기 위해 사용해요.

null 을 허용하는 변수 (Nullable 한 변수) 는 타입 뒤에 ? 를 붙이면 돼요.

int a = 3;
int? b = null;


a 는 int 뒤에 ? 가 없기 때문에 NonNullable 한 변수이고,
b 는 int 뒤에 ? 가 있기 때문에 Nullable 한 변수입니다!

특징이라면 null을 허용하는 변수는 초기값이 설정되지 않으면 기본적으로 null 을 가져요.

int? nullableInt;
print(nullableInt); // null

nullableInt = 1;
print(nullableInt); // 1

nullableInt = null;
print(nullableInt); // null

int nonNullableInt;
print(nonNullableInt); // Error: Non-nullable variable 'nonNullableInt' must be assigned before it can be used.



null 을 허용하는 변수를 사용할때는 항상 주의해야 하고, 최대한 덜 쓰려고 노력해야 한다는 점!
어제 정리한것중에 이런 말이 있었죠?
컴퓨터가 null 을 싫어하기 떄문이라고 했죠!
프로그램 실행중에 null 을 만났을 때 오류가 발생하기도 해요!

만약에 컴퓨터가 싫어하든 말든 null 을 오류없이 안전하게 쓰고 싶다면
 ?. 연산자를 사용 하면 돼요.
 어떤 변수가 null 이면 ?. 이 포함한 표현식 전체가 null 이 됩니당.

String? name;
print(name?.length); // null

name = 'Bob';
print(name?.length); // 3


String? name; 까지만 있을 때는 name 에 기본값으로 null 이 들어가기 때문에 name?.length 가 null 로 반환돼요.
하지만 name 에 ‘Bob’ 을 넣어주면 더 이상 name 은 null 이 아니기 때문에 name?.length 가 null 이 아닌 값이 반환돼요.

다음으로는 연산자(Operators)
 - 프로그램 내에서 데이터를 조작하거나 처리하기 위해 사용하는 기호 또는 키워드
 - 수학적인 계산뿐만 아니라 논리적인 비교, 데이터 조합 등 다양한 작업에 사용한다.

종류에는 산술연산자, 비교연산자, 타입체크연산자, 대입연산자, 논리연산자 가 있어요!

산술연산자 (Arithmetic Operators) <- 기본 연산 (ex. 덧셈, 뺄셈, 곱셈, 나눗셈, 나머지) 을 수행할 때 사용해여

1. + (기본연산시 사용)
2. - (하나의 값에서 다른 하나의 값을 뺄 때 사용)
3. * (2개의 값을 곱할때 사용)
4. / (하나의 값에서 다른 하나의 값을 나눌때 사용)
5. ~/ ( '/' 는 정수든 소수든 상관없이 값을 나누지만 ~/ 는 나오는 값의 정수부분만 반환합니당)
6. % (하나의 값에서 다른 하나의 값을 나누었을 때 나오는 나머지를 구할 때 사용)


비교연산자 (Comparison Operators) <- 2개의 값을 비교할때 씁니당

1. == (2개의 값이 같으면 true, 다르면 false 를 반환)
2. != (2개의 값이 다르면 true, 같으면 false 를 반환)
3. > (> 기준으로 왼쪽에 있는 값이 오른쪽에 있는 값보다 크면 true, 작거나 같으면 false 를 반환)
4. < (< 기준으로 왼쪽에 있는 값이 오른쪽에 있는 값보다 작으면 true, 크거나 같으면 false 를 반환)
5. >= (>= 기준으로 왼쪽에 있는 값이 오른쪽에 있는 값보다 크거나 같으면 true, 작으면 false 를 반환)
6. <= (>= 기준으로 왼쪽에 있는 값이 오른쪽에 있는 값보다 크거나 같으면 true, 작으면 false 를 반환)


타입체크연산자 (Type Test Operators) <- 프로그램 실행중에 타입을 검사할때 사용

1. as (타입을 변환 할때 사용)
2. is (특정타입을 가지고 있는지 판별할때 사용)
3. is! (특정타입을 가지고 있지 않은지 판별할때 사용 2번과 반대!)

 

대입 연산자 (Assignment Operators) <- 값을 변수에 대입할때 사용

1. = (= 기준으로 오른쪽 값을 왼쪽에 대입)
2. ??= (??= 기준으로 왼쪽에 있는 것이 null 일 때 오른쪽 값을 대입)
3. += (+= 기준으로 왼쪽에 있는 것과 오른쪽에 있는 것을 더해서 왼쪽에 대입)
4. -= (-= 기준으로 왼쪽에 있는 것에서 오른쪽에 있는 것을 빼서 왼쪽에 대입)
5. *= (*= 기준으로 왼쪽에 있는 것과 오른쪽에 있는 것을 곱해서 왼쪽에 대입)
6. /= (/= 기준으로 왼쪽에 있는 것에서 오른쪽에 있는 것을 나눠서 왼쪽에 대입)
7. ~/= (~/= 기준으로 왼쪽에 있는 것에서 오른쪽에 있는 것을 나누었을 때 나온 값의 정수 부분을 왼쪽에 대입)
8. %= (%= 기준으로 왼쪽에 있는 것에서 오른쪽에 있는 것을 나누었을 때 나온 나머지를 왼쪽에 대입)


논리 연산자 (Logical Operators) <- 참 또는 거짓으로 판별할수 있는 표현식을 반전하거나 결합할때 사용

1. ! (! 기준으로 오른쪽에 있는 판별식을 반전)
2. || (|| 기준으로 왼쪽 판별식과 오른쪽 판별식 중 하나라도 참이면 참을 반환하고, 모두 거짓이면 거짓을 반환)
       또는 (or) 과 같은 의미라고 생각하면된당
3. && (&& 기준으로 왼쪽 판별식과 오른쪽 판별식 모두 참이면 참을 반환하고, 하나라도 거짓이면 거짓을 반환)
         그리고 (and) 와 같은 의미라고 생각하면 됩니당.

 

'TIL' 카테고리의 다른 글

3주차..!  (0) 2024.11.04
Dart문법1주차이자 4일차!!  (0) 2024.10.30
Dart 문법 강의 1주차 입니다요!  (3) 2024.10.28
Flutter 앱 개발 4일차!  (0) 2024.10.24
Flutter 앱 개발 3일차!  (0) 2024.10.23