정리용으로 작성한 코틀린 문법입니다.
틀린정보임이 틀림없으니 무시하고 다른 블로그가서 보세요
코틀린 공식 사이트: https://kotlinlang.org/
//변수
//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(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{
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)
}
//결과 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)
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 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 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객체가 생성되었습니다.")
}
}
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
// 정지함수 TODO 추가해야함