이 글은 Android12 및 코틀린 완전 정복을 참고하여 작성하였습니다.
작성자 : 송가현
개발환경은 Windows, Android Studio입니다.
1. 산술 연산자와 유형의 중요성
▼ 산술 연산자 ( + , - , * , / , % )
var result= 5+3
result= result/2
print(result)
산술연산자는 우리가 흔히 알고 있는 + (더하기), - (빼기), * (곱하기), / (나누기), % (나머지) 연산자라고 할 수 있습니다.
하지만 이렇게 입력할 경우 다른 대체 방안이 뜨게 됩니다.
result= result/2
이 경우, 다른 언어들에서 살펴봤던 것과 같이 코드를 이렇게 수정할 수 있습니다.
result /= 2
나누기를 하는 경우 유의할 사항이 있습니다.
var result =5+3
val a = 5
val b =3
result = a/b
print(result)
Q. 이와 같이 /를 사용하는 경우 결과는 어떻게 될까요?
A. a와 b가 정수이기 때문에 결과 또한 정수가 됩니다.
그래서 부동 소수점으로 값이 나올 수 없습니다.
Q. 그럼 이 경우는 어떻게 될까요?
var result= 5+3
val a = 5.0
val b = 3
result = a/b
print(result)
A. type mismatch 가 나타나게 됩니다.
int 타입이 요구되는데 double 타입이 나타나는것이 관찰된다는 사항을 확인 할 수 있습니다.
즉, double 타입을 정수로 나누려니깐 맞지 않는다는 것 입니다.
이 경우에는 이렇게 해결할 수 있습니다.
var result = 5+3
val a = 5.0
val b = 3
result = (a/b).toInt()
print(result)
이 메서드는 값을 정수로 바꿔주게 됩니다.
이 방법 말고 result가 부동 소수점의 형태로 나올 수 있게 하는 방식은 이렇습니다.
var result = 5+3
val a = 5.0
val b = 3
var resultDouble : Double
resultDouble = a / b
print(resultDouble)
result 변수는 이미 생성되어 변경되었기 때문에 ( 개발을 할 경우 다른 곳에 이미 result 가 쓰일 수 있는 점을 유의하여)
resultDouble 이라는 변수를 var resultDouble : Double 로써 형태를 지정해주는 것이 좋은 방법이라고 할 수 있습니다.
이렇게 실행하면
◼출력 : 1.666666....의 값이 출력됩니다.
2. 비교연산자
▼ 비교 연산자 ( ==, !=, <, >, <=, >= )
val isEqual = 5==3
이와 같은 변수는 isEqual 이 True 또는 False 라는 것을 나타내게 합니다.
위의 코드는 isEqual= False 라는 것을 나타냅니다.
val isEqual = 5==3
println("isEqual is" + isEqual )
여기서 isEqual is false 라고 출력되는 것을 통해 이를 확인할 수 있습니다.
이 것을 실행했을 때 💡 표시가 뜨게 되는데, 무엇이 문제가 되는 것일까요?
println("isEqual is " + isEqual)
이 구문은 다음과 같이 바꿀 수 있습니다.
println("isEqual is $isEqual")
다음과 같이 작성하게 되면 원래의 결과와 같은 것을 확인할 수 있습니다.
이 외, 비교 연산자는 다음과 같이 사용 가능합니다.
val isNotEqual = 5!=5
println("isNotEqual is $isNotEqual")
println("is5greater3 ${5>3}")
! 는 다른 언어와 같이 부정의 뜻을 가진다고 할 수 있습니다.
여기서 한가지 유의할 점은 두 번째 코드블럭에서 보이는 것처럼 즉각적으로 println이나 print 구문에서 값을 비교하고 싶을 경우에 ${ 비교 } 형식으로 써줘야한다는 것 입니다.
3. 증감연산자
▼ 증감 연산자 ( ++, -- )
증감 연산자 또한 다른 언어들과 유사한 부분의 문법이라 이해가 쉬웠습니다.
일단 설명하기에 앞서 강의 앞 부분에서 이 부분을 짚고 넘어갔습니다.
var myNum = 5
myNum += 3
println("myNum is $myNum")
흔히 알고 있듯, myNum +=3 은 myNum= myNum+3 이라는 것을 아실텐데요!
이와 같이 다른 -=, *-, /= 등 모두 다른 언어에서 사용하는 것과 같이 줄일 수 있습니다.
증감연산자를 살펴보겠습니다.
myNum++
println("myNum is $myNum")
이렇게 코드를 작성하는 경우, 값이 1 증가하게 됩니다.
++, --는 이렇게 1씩 증가 , 1씩 감소를 얘기하는데요.
여기서는 앞에서 ++/--를 붙이느냐, 뒤에 ++/-- 를 붙이느냐를 구분해야합니다.
println("myNum is ${myNum++}")
println("myNum is ${++myNum}")
일단 증감연산자를 바로 넣어 printn / print 할 경우에도 ${ } 를 사용함에 유의해야합니다!
1) 앞에 ++를 붙이는 경우
2) 뒤에 ++을 붙이는 경우
이 두개의 경우에서, 2)는 코드가 끝난 후에 변수를 증가시키는 것입니다. 1)은 2)의 반대라는 것을 알 수 있죠
따라서 myNum이 33일때
코드 블럭을 실행시키면
myNum is 33
myNum is 35 가 됩니다.
이유: 33에서 println을 한 뒤 ++ 하기 때문에 출력 후에 34가 된다. 이후 출력 전에 myNum을 다시 ++ 먼저 하므로, 35가 된 채 출력된다.
4. If문
파이썬에서의 if문과 같은 느낌으로, 코틀린에서의 조건문도 if / else if / else로 구성됩니다.
if 와 else if의 개수는 정해져 있지 않지만, else는 1개만 쓰도록 해야합니다.
if문은 다음과 같이 사용할 수 있습니다.
var heightperson1= 170
var heightperson2= 189
if( heightperson1 > heightperson2){
println("use raw force")
}else if(heightperson1==heightperson2){
println("use your power technique 1337")
}
else{
println("use technique")
}
다음의 출력은 use raw force 가 됩니다.
if의 () 안 조건은 boolean형식을 사용해도 무방합니다.
EX) if(name=="Denis")
이렇게 범위에 따라 if문을 구성하게 되면, 💡 표시를 또 만나게 됩니다!
바로, when 을 사용할 수 있다는 것인데요, 이는 5.When 식 에서 볼 수 있습니다.
if문을 사용하면서 중요한 것은 무엇일까요??
✨ if문은 항상 첫 평가식만 본다는 점 입니다.
거짓일 경우 다음 실행으로 넘어가지만, 참일 경우 끝나게 됩니다.
5. When 식
When 식은 python의 어떤 문과 비슷할까요?
👉 바로 python의 switch 와 유사하다는 것을 코딩실습을 통해 느낄 수 있었습니다.
When 식을 사용해보겠습니다.
var season = 3
when(season){
1->println("Spring")
2->println("Summer")
3->{
println("Fall")
println("Autumn")
}
4->println("Winter")
else -> println("Invalid Season")
}
여기서 when( ) 안에 들어가는 변수는 string 형태일 수도 있습니다!
정해진 값에 따라 코드가 실행되는데 확인할 것이 한 가지 더 있습니다.
👉 바로 ! 여러 실행문을 쓸 경우
3->{
println("Fall")
println("Autumn")
}
중괄호 { } 를 꼭 써야한다는 점 입니다.
if 문에서도 마찬가지로 한가지 구문을 실행할 것이 아니라면 { } 를 잊지 말아야합니다 !
여기서 좀 더 나아가 다음 코드를 살펴봅시다.
var month = 3
when(month){
in 3..5 -> println("Spring")
in 6..8 -> println("Summer")
in 9..11 -> println("Fall")
// in 12 downTo 2 -> println("Winter")
12,1,2 -> println("winter")
else -> println("Invalid Season")
}
아마 이 부분도 많이 생소하실겁니다. 🤔 ( 제가 생소하게 느꼈어요 )
여기서 .. 부분은 뭘까요?
3 부터 5라고 생각하시면 됩니다. month가 3부터 5일 경우에 spring 을 출력하라는 것으로 볼 수가 있죠.
in을 꼭! 붙여주셔야합니다.
🤔 근데 겨울은 12월 부터 2월인데 이건 어떻게 해야할까요?
주석에 나온 것처럼 in 12 downTo 2를 사용하면, 12부터 2까지 사이에 있는 모두 수가 포함이 될텐데 말이죠!
🤔 in 12..2는 또 말이 안되지 않나요?
👉 이 경우에는, 12, 1, 2-> 실행할 코드 를 써주면 해결됩니다!
단, in은 쓰지 않도록 해요!!!
👉 in앞에 !를 사용해도 됩니다. (이 경우 부정을 나타냄)
다음 코드를 또 살펴봅시다.
var x : Any =13.37
when(x){
is Int -> println("$x is an Int")
is Double -> println("$x is a Double")
is String -> println("$x is a String")
else -> println("$x is none of the above")
}
◾출력값: 13.37 is a Double
여기서
var x:Any = 13.37f
f를 붙이면, float 가 되므로 13.37 is none of the above 가 출력됩니다.
is 역시 !is를 통해 부정을 나타낼 수 있습니다.
is 또한 위에서 아래로 수행되므로 한가지에 걸리게 되면 아래 코드는 실행되지 않습니다.
if . else if 와 같습니다!
코틀린 기본 문법이 다른 언어들과 비슷한 부분이 많은데요 !
마지막으로 공부하며 알게 된 것은
🎵 오늘의 알아두면 좋은 Point
print() 는 한 줄 띄기 없이 출력이 되지만
println() 을 사용하면 이를 가능하게 할 수 있습니다.
-> 두가지 모두 사용은 가능하며, 활용하는 목적에 맞게 사용할 수 있습니다.
( 마치 c++을 배웠을 때와 유사합니다 ㅎㅎ)
이렇게 티스토리 블로그 포스팅을 마치도록 하겠습니다.
'GDSC HUFS 4기 > Kotlin Team #3' 카테고리의 다른 글
[3팀] Android-12-kotlin Interface and Abstract class (1) | 2022.10.07 |
---|---|
[3팀] Android-12-Kotlin: Conditions and Loops (0) | 2022.10.03 |
[3팀] Android-12-Kotlin: 변수설정과 데이터 유형 (0) | 2022.10.03 |
[3팀] Android-12-Kotlin: QUIZ (0) | 2022.10.02 |
[3팀] Android-12-Kotlin: Nullable (0) | 2022.10.02 |