package com.monosoft.monopractice
fun main() {
//helloWorld()
//println(add(4,5))
//3.String Template
//val name = "wonho"
//val name1 = "kim"
//println("안녕하세요 ${name+name1}요" )
//println("지금 달러는 \$aaaa ")
/*주석 */
//주석 블럭지정 후 컨트롤 / 키
//forAndWhile()
//nullcheck()
ignoreNulls("kimwonho")
}
//1. 함수
fun helloWorld() : Unit { //Unit은 리턴이 없을경우
println("Hello world")
}
fun add(a:Int, b:Int) : Int { //리턴이 있는경우
return a+b
}
//2. val vs var
//val = value
fun hi() {
val a : Int = 10 //상수
var b : Int = 9 //변수
var aa : String
var name :String = "kimwonho"
}
//4.조건문
fun maxBy(a:Int, b:Int) : Int {
if(a > b) {
return a
} else {
return b
}
}
//또는
fun minBy(a:Int, b:Int) = if(a>b) a else b
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 don't know")
}
//또는
var b = when (score) {
1-> 1
2-> 2
else -> 3 //꼭 써야된다
}
println("b: ${b}")
when(score) {
in 90..100 -> println("you are genius")
in 10..80 -> println("not bad")
else -> println("okay")
}
}
// Expression vs Statement
//Expression? 어떤값을 만드는것 코틀린의 모든 함수는 이것
//Statement? 모모해!! 명령을 위한것
// 5. Array and List
// Array
// List 1. List(수정이 불가능한 리스트 ) 2. MutableList (수정가능한리스트)
fun array() {
val array = arrayOf(1,2,3) //초기화
val list = listOf(1,2,3) //초괴화
val array2 = arrayOf(1,"d",3.4f)
val List2 = listOf(1,"d",11L)
array[0] = 3
//list[0] = 2 변경불가
var result = list.get(0)
var arrayList = arrayListOf<Int>()
arrayList.add(10)
arrayList.add(20)
arrayList[0] = 20
}
// 6. for / while
fun forAndWhile() {
val students = arrayListOf("kim","won","ho","kkk","www")
//for문 1
for (name in students) {
println("${name}")
}
//인덱스와 이름을 함께 사용할수있음
for((index , name ) in students.withIndex()) {
println("${index+1}번째 학생 : ${name}")
}
//for문 2
var sum : Int = 0
for (i in 1..100 ) { //step 2 (2씩더하라) , downTo 1 반대로 루프 , 1 until 100 = 1~100
sum += i
}
println(sum)
//while
var index = 0
while (index < 10) {
println("curent index = {$index}")
index++
}
}
// 7. Nullable / NonNull
fun nullcheck() {
//NPE : NULL pointer Exception
var name : String = "wonho"
var nullName : String? = null //물음표를 넣으면 null이 가능하다
var nameInUpperCase = name .toUpperCase()
var nullNameInUpperCase = nullName?.toUpperCase() //null이면 null이고 아니면 대문자로 바꿔라
// ?:
val lastName : String? = null
val fullName = name + " " + (lastName?: "No lastName") //null이면 다음문장을 실행해라
println(fullName)
}
// !! : null 아니라는걸 보증한다!!
fun ignoreNulls(str : String?) {
val mNotNull : String = str!! //null 일리 없어!!
//이후 null 처리할필요없이 처리한다.
//let함수 자신의 리시브 객체를 람다식내부로 옴겨서 실행하는 구분 = 내부로 실행시켜준다.
val email : String? = "asdfsfd@hanmail.net"
email?.let {
println("my email is ${email}")
}
}
========================================================클래스
package com.monosoft.monopractice
//클래스
open class Human (val name : String = "wwww") {
//상속 시 open 사용
constructor (name : String, age : Int) : this(name) {
println("maname ${name}, ${age}ddkdkdk")
}
//인스턴스 생성시 동작 코드블럭 무조건 먼저 실햏됨
init {
println("start init")
}
//val name = name//"wonho"
fun eatingCake() {
println("This is so Yes..")
}
open fun singAsong() {
println("lalal")
}
}
class Korean : Human() {
override fun singAsong() {
super.singAsong()
println("djdjdjdj")
}
}
fun main() {
val korean = Korean()
korean.singAsong()
// val human = Human("1111",12)
// human.eatingCake()
//
// println("this human's name is ${human.name}")
}
'Kotlin > Kotlin 문법' 카테고리의 다른 글
코틀린 POJO 데이터 클래스 (0) | 2020.12.31 |
---|---|
안드로이드이 문법강의2편 람다식 (0) | 2020.12.30 |
Android AsyncTask의 구조와 제작 사항 (0) | 2020.10.13 |
ANDROID SharedPreferences 사용 (0) | 2020.09.25 |
ANDROID 어댑터(adapter)란? (0) | 2020.09.15 |
댓글