Software Development

Kotlin - 기초 문법

huiyu 2022. 4. 30. 10:37

Kotlin Online Compiler : https://play.kotlinlang.org/

 

Kotlin Playground: Edit, Run, Share Kotlin Code Online

 

play.kotlinlang.org

 

var / val

- val : 상수 (불변 : immutable type)
- var : 변수 (가변 : mutable type)

-> 공통적으로 초기 값을 할당하지 않으면 반드시 타입 명시, 컴파일러가 타입을 추론할 수 있으면 생략 가능

 

String Template

fun main() {
  //String Template
  val name = "huiyu"
  val lastName = "eun"
  println("my name is ${name + lastName} ")
}

 

조건식

fun maxBy(a : Int, b : Int {
  if (a > b) {
    return a
  } else {
    return b
  }
}

//간단하게
fun maxBy2(a : Int, b : Int) : Int = if(a>b) a else b

 

when : switch 같음

fun checkNum(score : Int) {
  when(score) {
    0 -> println("this is 0")
    1 -> println("this is 1")
    2,3 -> println("this is 2 or 3")
    else -> println("I dont' know")
  }
  
  var b : Int = when(score) {
    1->1
    2->2
    else ->3
  }
  
  //90~100 -> in 90..100
  when(score) {
    in 90 .. 100 -> println("You are genius")
    in 10 ..80 -> println("Not bad")
    else -> println("okay")
  }
}

 

Array and List

// List : 값이 변경 안됨
// MutableList : 값 변경 가능

fun array() {
  val array : Array<Int> = arrayOf(1,2,3)
  Val list : list<Int> = listOf(1,2,3)
  
  val array2 : Array<Any> = arrayOf(1,"d", 3.5f)
  val list2 : List<Any> = listOf(1, "d", 11L)
  
  array[0] = 3
  var result : Int = list.get(0)//get만 가능
  
  var arrayList : ArrayList<Int> = arrayListOf<Int>()
  arrayList.add(10)
  arrayList.add(20)
  
}

 

반복문

fun forAndWhile() {
  val students : ArrayList = arrayListOf("joyce", "james", "jenny", "jennifer")
  
  for( name : String in students) {
    println("${name}")
  }
  
  var sum : Int = 0
  //step : 2칸씩 가라
  for (i : int in 1..10 step 2)
  	sum += i
  }
  println(sum)  
  
  //10부터 1로 가라
  for (i : int in 10 downTo 1){
  }
  
  for(i : int in 1 until 100) //1부터 99까지 반복, 1..100:1부터100까지 반복
  
  var index = 0
  while(index < 10) {
    println("current index : ${index}")
    index++
  }
}

 

val students : ArrayList<String> = arrayListOf("joyce", "james", "jenny", "jennifer")

for ((index, name) in students.withIndex())
{
  println("${index+1}번째 학생 : ${name}")
}

 

nonnull - nullable

fun nullCheck() {
  //NPE : Null Pointer Exception
  
  var name : String = "joyce"
  var nullName : String? = null
  
  var nameInUpperCase : String = name.toUpperCase()
  var nullNameInUpperCase : String = nullName?.toUpperCase()
  
}

 

?:

val lastName : String? = null
//lastName이 null이 아니면 사용. null이면 ?: 뒤에 내용 사용
val fullName : String = name + " " + (lastName?: "No lastName")

 

!!

fun ignoreNulls(str : String?){
  val mNotNull : String = str!! //str은 null이 아니야!!
  val upper : String = mNotNull.toUpperCase()
  
  val email : String?= "joycehongXXX@nana.com"
  email?.let{
    println("my email is ${email}")
  }
}

 

클래스

class Human(val name : String = "Anonymous") {

  constructor(name : String, age : Int) : this(name){
    println("my name is ${name}, ${age}years old")
  }
  
  init {
    println("New human has been born!!")
  }
  
  fun eatingCake() {
    println("This is so yummmmyyy")
  }
}

fun main() {
  val human = Human("minsu")
  human.eatingCake()
  println("this human's name is ${human.name}")
}

 

상속

open class Human{
  open fun singASong(){
    println("lalala")
  }
}

class Korean : Human() {
  override fun singASong(){
    super.singASong()
    println("라라라")
  }
}

 

https://www.youtube.com/watch?v=IDVnZPjRCYg 

 

728x90