출처 : 깡샘의 코틀린프로그래밍
반복문
for 반복문
fun main(args: Array<String>) {
var sum: Int=0
for(i in 1..10) {
sum += i
}
println(sum)
}
val list = listOf("Hello", "World", "!")
val sb=StringBuffer()
for(str in list) {
sb.append(str)
}
- 인덱스 값을 획득하고자 한다면 indices를 사용
val list = listOf("Hello", "World", "!")
for (i in list.indices) {
println(list[i])
}
- withindex()를 이용하여 index 와 value를 획득할 수 있다.
val list = listOf("Hello", "World", "!")
for ((index, value) in list.withIndex()) {
println("the element at $index is $value")
}
for문의 조건
- for(i in 1..100){//...} // 100까지 포함
- for (i in 1 until 100) { //... } // 100은 포함되지 않음
- for (x in 2..10 step 2) { //... } //2씩 증가
- for (x in 10 downTo 1) { //... }//숫자 감소
for(i in 1 until 11 step 2){
println(i)
}
while 반복문
fun main(args: Array<String>) {
var x=0
var sum1=0
while (x < 10) {
sum1 += ++x
}
println(sum1)
}
- break와 continue문, 그리고 라벨
fun main(args: Array<String>) {
var x2=0
var sum2=0
while(true){
sum2 += ++x2
if(x2==10) break
}
println(sum2)
}
for (i in 1..3) {
for (j in 1..3) {
if (j>1) break
println("i : $i , j : $j")
}
}
aaa@ for (i in 1..3) {
for (j in 1..3) {
if (j>1) break@aaa
println("i : $i , j : $j")
}
}
연산자
대입연산자
연산자 | 상용법 | 설명 |
= | A=B | B값을 A에 대입 |
산술연산자
연산자 | 사용법 | 설명 |
+ | A+B | 2개의 값을 더함 |
- | A-B | A에서 B를 빼기 |
* | A*B | A와 B를 곱함 |
/ | A/B | A에서 B를 나눔 |
% | A%B | A를 B로 나눈 나머지 |
전개연산자
연산자 | 사용법 | 설명 |
* | *A | A배열의 데이터를 나열 |
fun main(args: Array<String>) {
val array1= arrayOf(10, 20, 30)
val list1= asList(1, 2, array1[0], array1[1], array1[2], 100, 200)
list1.forEach({println(it)})
}
val array1= arrayOf(10, 20, 30)
val list2=asList(1, 2, *array1, 100, 200)
list2.forEach({println(it)})
- 개발자가 직접 정의한 함수를 이용할때도 사용
fun some(vararg a: String){
val iterator=a.iterator()
while(iterator.hasNext()){
println(iterator.next())
}
}
fun main(args: Array<String>) {
val array3= arrayOf<String>("hello","world")
some(*array3)
}
- 전개 연산자는 배열에 적용
val list3= listOf<String>("a","b")
some(*list3.toTypedArray())
복합 대입 연산자
연산자 | 사용법 | 설명 |
+= | A+=B | A와 B의 값을 더한 값을 A에 할당 |
-= | A-=B | A에서 B를 뺀 값을 A에 할당 |
*= | A*=B | A와 B를 곱한 값을 A에 할당 |
/= | A/=B | A에서 B를 나눈 값을 A에 할당 |
%= | A%=B | A를 B로 나눈 나머지 값을 A에 할당 |
증감 연산자
연산자 | 사용법 | 설명 |
++ | A++, ++A | A값에 1을 더해 결과 값을 A에 할당 |
-- | A--, --A | A값에서 1을 빼 결과 값을 A에 할당 |
fun main(args: Array<String>) {
var data=10
var result1 = data++
println("result=$result1, data=$data")
}
var data3=10
var result3 = ++data3
println("result3=$result3, data3=$data3")
논리 연산자
연산자 | 사용법 | 설명 |
&& | A&&B | A와 B가 모두 true라면 결과값이 true, |
|| | A||B | A와 B가 하나라도 true이면 결과값은 true |
! | !A | A가 true이면 결과값은 false, false이면 결과값은 true |
범위 연산자
연산자 | 사용법 | 설명 |
.. | A..B | A부터 B까지의 수를 묶어 범위 표현 |
Null 안전 관련 연산자
연산자 | 사용법 | 설명 |
? | val a: Int? | a 변수를 nullable로 선언 |
?: | A ?: B | A가 null이면 B 실행 |
?. | A?.length | A가 null이면 결과 값이 null, null이 아니면 length |
!! | A !! B | A가 null 이 아닌경우만 B 실행. null이면 Exception 발생 |
연산자 재정의
- 연산자 재정의는 함수의 재정의를 통해 작성
fun main(args: Array<String>) {
val a: Int = 10
val b: Int = 5
val result1: Int = a + b
val result2: Int = a.plus(b)
println("result1 : $result1 ... result2 : $result2")
}
data class MyClass(val no: Int){
operator fun plus(arg: Int): Int {
return no - arg
}
}
operator fun MyClass.minus(arg: Int): Int{
return no + arg
}
class Test(val no: Int) {
operator fun plus(arg: Int): Int {
return no - arg
}
}
fun main(args: Array<String>) {
val obj: MyClass = MyClass(10)
val result1 = obj + 5
val result2 = obj - 5
println("result1 : $result1 .. result2 : $result2") //result1 : 5 .. Result2 : 15
println("${Test(30) + 5}") //25
}
'Backend > Kotlin' 카테고리의 다른 글
[Kotlin] 흐름 제어 구문과 연산자(1/2) (0) | 2022.09.05 |
---|---|
[Kotlin] 데이터 타입 (0) | 2022.09.05 |
[Kotlin] 변수와 함수 (0) | 2022.09.01 |
[Kotlin] 코틀린 이해 (0) | 2022.08.31 |