본문 바로가기
Kotlin/Kotlin 문법

안드로이드이 문법강의1편

by MonoSoft 2020. 12. 23.
728x90
반응형

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}")
}





















728x90
반응형

댓글