💻STUDY/ANDROID STUDY

[Android-Kotlin] 3주차

coldNoodlePigeon 2022. 4. 2.
  • 한빛미디어의 『이것이 안드로이드다 with 코틀린』 유튜브 강좌를 듣고 정리한 내용입니다 

변수와 상수

 

Android는 객체 지향 언어인 Java에 기초하여 만들어졌기 때문에 class 밖에서 코드를 작성하는 것은 큰 의미가 없음. 따라서 Kotlin도 class 안이나 함수 안에서 코드를 작성해야. 

android에서는 onCreate함수가 시작점이다. (코드를 작성하는 첫 부분) 

코드가 많아지면 함수를 하나 더 추가하고 그 함수안에 코드 작성 후 호출하는 방식으로. (onCreate에서!) 

 

package com.example.kotlinsyntaxvar

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        var variable="홍길동" //값 초기화, type 특정 안했지만 앞으로 String으로 받겠다는 의미와 같은 의미.
        //다른 형태의 type 넣는 것 불가능! var variable:String="홍길동" 과 같은 의미.. 

        var variable2:String //앞으로 String 타입의 값을 받겠다는 의미
        variable2="안녕하세요?"
    }
}

 

 

package com.example.kotlinsyntaxvar

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        //코틀린의 기본타입
        //실수형
        var doubleValue:Double=35.6
        var floatValue:Float=123.7f //실수형 값을 입력하면 다 double로 인식. f붙여줘야함!

        //정수형
        var intValue:Int=123456 //int 최대 범위: 2147483647
        var longValue:Long=2_147_483_647 //_로 보기 편하게 숫자 구분가능
        //예전에는 int범위 최대 넘어가면 long인것을 알려주도록 알파벳 붙였어야했는데 업데이트 이후로 안해도됨.
        var shorValue:Short=123
        var byteValue:Byte=127 //작은 수를 표현. 잘 쓰는 일은 없음. 대부분 double, long 사용.

        //문자형
        var charValue:Char='a' //char은 ''로 표현해야.
        var stringValue:String="문자열 길이에 상관없이 값을 입력할 수 있다. 크기를 특정할 수 없다."

        //불린형
        var booleanValue:Boolean=true //if문에서 분기처리할때 자주 사용.


        //상수 : val 사용
        val VALVALUE:Boolean=true //대부분 개발자들은 상수를 대문자로 표현.
        //VALVALUE=false 와 같이 값 변경 불가능!


    }
}

 

 

조건문 

 

package com.example.kotlinsyntaxvar

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        //비교연산자
        var result = 1 > 2
        Log.d("compare","1 >2 결과는 ${result}")

    }
}

다음과 같은 출력 결과를 확인 가능하다. result에 1<2를 넣으면 출력 결과는 true로 나온다. 

 

비교 연산자에는 <, >, <=, >=, ==, != 이 있고 수식뿐만 아니라 문자열도 같은지를 비교연산자를 이용해 확인 가능하다. (되도록 문자열비교는 잘 사용하지 않음) 

package com.example.kotlinsyntaxvar

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        var first=300
        var second=500
        var third=270

        //비교연산자 <, >, >=,<=,==,!=
        var result1 = first<500
        Log.d("compare","첫번째 결과는 ${result1}")

        var result2=second<500
        Log.d("compare","두번째 결과=${result2}")

        //논리연산자 : 비교연산자의 비교를 다시한번 사용하기 위해 사용
        var logic1= result1 && result2 //둘 다 true인가
        Log.d("compare","논리연산 && 결과=${logic1}")

        var logic2= result1 || result2 //둘 중 true 인게 있는가
        Log.d("compare","논리연산 || 결과=${logic2}")

        var logic3=!result1
        Log.d("compare","논리연산 ! 결과=${logic3}")

    }
}

 

 

package com.example.kotlinsyntaxvar

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        //if
        var month=7

        if(month>9){
            Log.d("if","가을 옷을 입습니다")
        }else if(month<9 && month>6){
            Log.d("if","해수욕장을 갑니다")
        }else{
            Log.d("if","집에 있습니다")
        }

    }
}

if-else if - else 

 

 

package com.example.kotlinsyntaxvar

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        var month = 6
        //when (kotlin에서는 if문의 확장판) - 거의 대부분의 언어는 switch

        when(month){
            5->Log.d("when","5월입니다.")
            in 6..8->{ //범위 6~8 사이일때
                Log.d("when","여름입니다.")
            }
            9,10,11-> {
                Log.d("when","가을입니다.")
            }
            else->{
                Log.d("when","집에 있습니다.")
            }
        }


    }
}

분기점이 많을 경우 if조건문보다 when이 좀 더 가독성이 좋은 편이다. 

 

 

배열과 컬렉션 

package com.example.kotlinsyntaxvar

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        var variable=157

        //배열
        //int -> IntArray
        var intArr:IntArray=IntArray(10)
        intArr[0]=10
        intArr[1]=20
        intArr[2]=30
        intArr[3]=40
        intArr[4]=50

        intArr[9]=100
        //intArr[10]=110 은 error발생

        Log.d("array","9번 인덱스의 값=${intArr[9]}")

        var weekArray=CharArray(7)
        weekArray[0]='월'
        weekArray[1]='화'
        //...
        weekArray[6]='일'

        //컬렉션
        //리스트, 뮤터블리스트
        var mutableList= mutableListOf<Int>() //Generic: 리스트에서 사용할 type을 지정
        //값 넣기
        mutableList.add(5) //0
        mutableList.add(10) //1
        mutableList.add(75) //2
        mutableList.add(36) //3

        Log.d("컬렉션","3번 인덱스의 값=${mutableList.get(3)}")

        //맵
        var mutableMap= mutableMapOf<String,String>()
        mutableMap.put("변수1","값1")
        mutableMap.put("변수2","값2")

        Log.d("컬렉션","맵 변수1의 값은=${mutableMap.get("변수1")}")


    }
}

 

 

반복문

package com.example.kotlinsyntaxvar

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        var intArray:IntArray=intArrayOf(0,10,20,30,40,50,60,70,80)

        //for
        //일반적으로 몇 번의 횟수를 반복하는 형태
        for (index in 1..10){
            Log.d("반복문","index=${index}")
        }
        for (index in 1 until 10 step 2){
            Log.d("반복문","index=${index}")
        }
        for (index in 10 downTo 1 step 2){
            Log.d("반복문","index=${index}")
        }
        for(value in intArray){
            Log.d("반복문","value=${value}")
        }

        //while
        var out=0
        while (out<3){
            Log.d("while","현재 out 카운트=${out}")
            out=out+1
        }

        do{
            Log.d("while","현재 out 카운트=${out}")
            out=out+1
        }while (out<3)


        //control loop
        for(index in 0..10){
            if (index>5) break 
            Log.d("포","현재 숫자=${index}")
        }
    }
}

 

 

함수

package com.example.kotlinsyntaxvar

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        //함수 사용 이유 -> 코드 분류 
        functionParam("값",153)
        getPI()
    }

    fun functionParam(param1:String,param2:Int):String{
        Log.d("함수","param1=${param1}, param2=${param2}")
        return "새로운 값"
    }

    fun getPI():Double{
        return 3.141592
    }
}

'💻STUDY > ANDROID STUDY' 카테고리의 다른 글

[Android-Kotlin] 6주차  (0) 2022.05.16
[Android-Kotlin] 5주차  (0) 2022.05.09
[Android-Kotlin] 4주차  (0) 2022.05.02
[Android- Kotlin] 2주차  (0) 2022.03.27
[교양과목 복습] Eclipse - Java  (0) 2022.03.12

댓글