728x90

 

1. 패키지 정의 가져오기 

 

주의) 패키지는 소스코드의 맨위에 있어야함

다른 언어들과 패키지정의나 다른라이브러리를 참조하는 import가 같음

 

package com.dowellcomputer.myapplication0316
import kotlin.text.*

 

2. 기본 출력함수

 

package com.dowellcomputer.myapplication0316

fun main(){
    println("안녕하세요")
}

 

코틀린의 메인함수는 fun main(){ } 형태를 지니고있으며

println함수는 출력을하고 줄바꿈을 해줌

 

3. 함수이용

 

package com.dowellcomputer.myapplication0316

fun main(args : Array<String>){
    println(sum(5,4))
    println(sub(5,4))
}

fun sum(a: Int , b: Int): Int {
    return (a+b)
}

fun sub(a : Int , b: Int) = a-b

 

sum함수는 Int(정수)형을 반환하는 함수이며

메인함수에서 println(sum(5,4))부분에서 5와4를 넘겨줬으므로 반환값 5,4의 합 9가 출력이됩니다

sub함수처럼 간단하게 표현할수도있습니다 .

 

4. 변수선언

 

fun main(args : Array<String>){
    
    var age : Int  = 5
    var a  = 6
    val name: String = "jinsol"
    val id = "201921263"
}

 

재정의가 가능한 변수를 var

재정의가 불가능한 변수를 val 

 

변수명뒤에 : 타입 이 오게됩니다

( var or val ) 변수명 : 타입명 

하지만 파이썬과 마찬가지로 타입명을 생략하고 바로 값을넣어줄수도있습니다

var a = 6 부분은 a는 정수형타입이 될것이며

vall id 는 String(문자열) 타입이 될것입니다

 

5. 클래스와 객체

 

class HelloCLass{
    var age:Int = 0
    
init{
    println("hi2")
}

    constructor() //값을 넘기지는 못하지만 초기화 가능
    constructor(age:Int)  { // constructor(age:Int ) // 보조생성자 값을 넘기면서 초기화가능 set
        this.age = age
    }

   
}

클래스 선언은 class 클래스명 {   } 을통해 선언합니다

클래스안에 init는 클래스가 호출됐을떄 최초로 초기화되는 부분이며

constructor() 과 constructor(age:Int)가 두개가 존재하는 이유는 매우 중요합니다.

 

만약 메인함수에서 


1번 ) var cls = HelloCLass()
2번 ) var cls2 = HelloCLass(1)

이런식으로 호출했을때

1번은 init이 된후에 age 에 0이 담기게 됩니다. 여기서 중요한점은

constructor()이 없을경우 빌드에러가 납니다

2번은 1번과마찬가지로 constructor(age:Int) { this.age = age ) 코드가 없을경우 빌드에러가 납니다.

 

메인함수에서 사용법은 아래와 같은방식으로 사용됩니다.

fun main(){
    var cls = HelloCLass(1)
    println(cls.age)
}

 

 

class Rectangle(var height: Double, var length: Double) {
    var perimeter = (height + length) * 2
}

val rectangle = Rectangle(5.0, 2.0)
println("The perimeter is ${rectangle.perimeter}")

 

이런식으로 간단하게 표현할수도있습니다.

 

open class Shape

class Rectangle(var height: Double, var length: Double): Shape {
    var perimeter = (height + length) * 2
}

 

클래스 간의 상속은 콜론 ( :)으로 선언됩니다 . . 클래스를 상속 가능하게 만들려면 open.을 키워드로 붙여줍니다.

 

6.문자열 문제


    var a = 1
    val s1 = "a is $a"
    println(s1)
    a = 2
    println(s1)
    val s23 = "${s1.replace("is", "was")}, but now is $a"
    println(s23)

 

해당코드의 실행결과는?

 

실행결과 : a is 1
	  a is 1
  	  a was 1, but now is 2

 

7. 조건문과 반복문

 

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

 

fun maxOf(a: Int, b: Int) = if (a > b) a else b

kotlin에서 if 조건문은 자바와 같으므로 생략하겠습니다.

 

 

val items = listOf("apple", "banana", "kiwifruit")
for (item in items) {
    println(item)
}

listOf는 재정의가 불가능한 list입니다.

mutableListOf()은 재정의가 가능한 list입니다.

해당 for루프에서 출력결과는 items리스트의 각각 요소들이 출력될것입니다.

 

for(i in 1..10 step 2)
            Log.d("test","반복문 i = ${i}입니다")
for(i in 10 downTo  1 step 2 )
            Log.d("test","-반복문  i = ${i}입니다")

 

val items = listOf("apple", "banana", "kiwifruit")
var index = 0
while (index < items.size) {
    println("item at $index is ${items[index]}")
    index++
}

 

var i : Int


    for(i in 1 .. 10) println("counting : {$i}")

 

※ kotlin에서 null값

 

var a : Int = null은 틀린 문법입니다

변수에 null값을 넣으려면 타입명뒤에 ?를 붙이고 null값을 넣어줘야됩니다.

    var nu : Int? = 10
    var nul : Int? = null

    println("nu : $nu   nul : $nul")
728x90

+ Recent posts