kotlin

nmy6452·2023년 10월 10일
0

정리용으로 작성한 코틀린 문법입니다.
틀린정보임이 틀림없으니 무시하고 다른 블로그가서 보세요
코틀린 공식 사이트: https://kotlinlang.org/

코틀린 기본 규칙

  1. 마지막에 ";" 붙이지 않음(붙여도 상관은 없음)
  2. Null Safety: 기본적으로 null이 없음 (nullable 변수 사용해야 null 대입 가능)

변수 선언

//변수
//var 변수명 : 타입 = value
var a : Int = 1
var b : Double = 3.3
var c : String = "value"
var d : Long = 10L

//상수
val 상수명 : 타입 = value

타입 케스트

//a = b.toType()
var temp = 1
var a : Int = temp.toInte
var b : Double = temp.toDouble
var c : String = temp.toString
var d : Long = temp.toLong

문자열 출력

//코틀린은 "을 세개 사용하는 방식으로 줄바꿈 문자열도 표현 가능
"""
안녕하세요 해당
문자열은 줄바꿈이
포함된 문자열입니다.
하지만 코틀린이라 한번에 표현 가능하죠
"""

print("안녕하세요 제 이름은 $name 입니다.")
print("안녕하세요 제 이름은 ${name} 입니다.")
print("1 + 1 = ${1 + 1} 입니다.") //결과 2

랜덤 출력

var num = Random.nextInt(0,100) //0~99까지의 랜덤한 숫자
print(num)

입력받기

var input = Scanner(System.`in`)
input.nextInt()

IF문

//일반적인 if문
if(i == 1){
	print(1)
}
else if(i == 2){
	print(2)
}
else{
	print("")
}

//if 문을 이용한 문자열 저장
 var result = if(i == 1){
	"1 입니다."
}
else if(i == 2){
	"1 입니다."
}
else{
	"1도 아니고 2도 아닙니다."
}

print(result);

when문

//일반적인 when문
when{
	i == 1 ->{
        print(1)
    }
    i == 2 ->{
        print(2)
    }
    else ->{
    	print("")
    }
}

//when 문을 이용한 문자열 저장
when{
var result = i == 1 ->{
        "1 입니다."
    }
    i == 2 ->{
        "2 입니다."
    }
    else ->{
    	"1도 아니고 2도 아닙니다."
    }
    print(result)
}

for문

//결과 0123
for(i in 0..3){
	print(i)
}

val items = listOf(1, 2, 3, 4, 5)
//결과 12345
for(item in items){
	print(item)
}

//결과 12345
for(i in 0..(items.size -1)){
	print(i)
}

리스트 선언

//변경이 불가능한 리스트
val items = listOf(1, 2, 3, 4, 5)

//변경이 불가능한 리스트
var items2 = mutableListOf<타입>(1, 2, 3, 4, 5)
items2.add(6)
items2.remove(3)

try catch

val items = listOf(1,2,3)
try{
	val item = items[5]
}
catch(e:Exception){
	print(e.message)
}

널러블 변수

//널변수
var name: String?= null
name = "Zl존"

//널체크 널이 아님을 체크
name?.let{
 var name2: String = name
}

함수

//알반적인 함수
fun sum(a: Int, b: Int): Int{
	return a + b
}

//간략 함수
fun sum(a: Int, b: Int): Int = a + b
fun sum(a: Int, b: Int) = a + b

//디폴트 값
fun sum(a: Int, b: Int, c: Int = 10): Int = a + b + c
print(sum(1,2)) //1 + 2 + 10 = 13
print(sum(b=2, a=1)) //1 + 2 + 10 = 13

Class

//주석
class Person(
	val name: String,
    var age: Int
    private var weight: Int
)

val nmy = Person("nmy",22 , 100) //인스턴스 생성
nmy.age = 23 // 
nmy.weight = 100 //애러 private 변수 접근 불가능

data Class

//값이 같으면 같은 객체로 판단
data class Person(
	val name: String,
    var age: Int
    private var weight: Int
)
val nmy = Person("nmy",22 , 100) //인스턴스 생성
val nmy2 = Person("nmy",22 , 100) //인스턴스 생성

print(nmy)	//Person(name=nmy, age= 22,weight= 100)
print(nmy2)	//
print(nmy==nmy2) //true

생성자

//Person객체가 생성될때 마다 print 함수 실행
data class Person(
	val name: String,
    var age: Int
){
	init{
    	print("Person객체가 생성되었습니다.")
    }
}

Class 상속

abstract class Animal{
	//open 키워드로 오버라이드 허용해야 오버라이드 가능
	 open fun move(){
    	print("이동")
    }
}

//일반 함수는 open 키워드가 있어야 상속가능
open class Person()

class Dog:Animal(){
	//override 키워드로 오버라이드
	override fun move(){
    	print("이동")
    }
}
class Cat:Animal(){
	//override 키워드로 오버라이드
	override fun move(){
    	print("이동")
    }
}

인터페이스


interface Drawable{
	fun draw(){
    	print("그리기")
    }
}

class line: Drawable{
	overridedraw(){
    	print("직선")
    }
}

타입체크

val dag:Animal = Dog()
val cat = Cat()

//dag가 Animal타입인가?
print(dag is Animal) // true

//타입케스팅
cat as dag

suspend

// 정지함수 TODO 추가해야함
profile
하꼬 개발자

0개의 댓글