변수와 상수

1
2
var temp = 5
var temp : Int = 5

(변수의 자료형은 “ : 자료형 “ 형태로 표현이 가능하나 생략도 가능하다. – 대입 값으로 자동인식)

(변수만 선언 후 향후 값을 받아올 때는 자료형까지 변수를 선언해주어야 한다.)

(한 번 정해지면 다른 자료형 값 넣을 수 없음)

  • val : 상수

    1
    2
    
    val c = Constant
    (향후 변경 불가)
    
  • Any

    1
    2
    3
    
    var everything : Any = 1
    // (향후 다른 자료형 넣기 가능 , 어떤 값이든 가능 , == Java의 Object)
    
    
  • [“, ‘ , “””]

    • “”” : \n을 쓸 필요없이 들어간 내용 그대로 대입
    • ‘ : 문자
    • “ : 문자열
  • Null

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var a : Int? = 5
//(기본적으로 NULL값은 허용하지 않는다. 허용하고 싶으면 자료형 뒤 “?” 붙어야 함!)

a?.let { println(NULL값이 아닙니다 }  // - let함수를 이용

a?.length  // - ?.은 만약 NULL값이라면 바로 NULL을 반환

var stringVar = a ?: “값이 NULL입니다” // (왼쪽이 NULL이라면 오른쪽 값 대입)

var stringVar = a!!  // (변수!! : 절대 null이 아님을 보장하는 표현 , null이면 오류 발생)

// [타입 변환의 경우 실패했을 떄 null반환]
var wrong = “숫자아님”

var value:Int = wrong.toInt() // case1 : -> 오류 발생
var value:Int? = wrong.toIntOrNull()  // case 2:- > null값 대입
  • 문자열의 템플릿 기능

    1
    2
    3
    4
    5
    
     var temp= “안녕 $name? 
     println(“두 수를 더한 값은 ${num1+num2}야”)
     var message = error Code : ${greeting.trim( )}
    
     //(문자열 안에 특정 값이나 계산 값을 그대로 삽입 – 마치 유닉스의 Today is `date` !
    

배열

1
2
var arr : Array<Int> = Array<Int>(3){0}
var arr = Array<Int>(3){NULL}
  • 자료형은 생략이 가능하다.

  • ( = Array<자료형> (크기) {초기값} )

  • 초기값은 0번째가 아니라 모든 인덱스에 적용

  • 배열 관련 메소드

    1
    2
    3
    4
    5
    6
    7
    
    arrayof
    var arr2 = arrayof(10,5,6,7,9) = 초기값을 10,5,6,7,9로가지는 int형 배열 생성
    var intarr2 = arr2.toIntArray()
    // = 원시 타입의 배열로 변환
    // (자바에서 배열 타입을 인자로 요구할 때 arrayof로만 쓰면 안되는 듯!)
    
    ```
    

타입변환

1
2
3
4
5
6
var intTemp=1
var doubleTemp : Long = intTemp //오류 발생 코틀린에서는 자동형변환이 이루어지지 않는다.
var doubleTemp : Long = intTemp.toDouble //다음과 같은 형 변환이 필요하다.


doubleTemp = intTemp (x) // 다른 자료형의 값을 대입하는 것이 불가능하다. 자동형변환이 ㄴㄴ

연산자

1
2
3
4
var value=6/5 // 1

var value = 6/5.0 // 1.2
//(모두 정수타입이라면 소수점 날라감 – 타 언어와 같은 특징)
  • 단항연산자 – “-“

    1
    2
    3
    4
    5
    6
    7
    
    var temp=100
    
    var test = -temp //-100대입
    
    var test = -(-temp) //100대입
    
    // ( “-“ : 값의 부호 변경)
    
  • 연산자 “=== / !== “

    • 값의 참조가 같은지 비교 – 두 객체가 같은 메모리 주소를 점유하고 있는가?)
  • in 연산자

1
2
3
4
5
6
7
8
9
var arr = arrayOf(1,2,3,4,5)

println(5 in arr) // TRUE

var list = listOf(a, b, c)

println(z in list) // FALSE

//(특정 값이 배열/리스트/집합 등에 포함이 되어있는지 확인)
  • 연산자 “..”
1
2
3
4
5
6
7
8
9
10
11
12
13
14
println(1 in 1..10) //1 2 3 4 5 .. 10

println(a in a..z) // a b c d e ... z

//(범위 객체를 생성)

for(num in 1..5) { println(num) }  // -> 1,2,3,4,5 출력
var items = arrayOf(a , b , c)
for((index, itemName) in items.withIndex( ) ) {
    println(“$index번째  : $itemName)
}

//(for문의 값을 순회할 때 사용하기도 한다)
// (withIndex메소드와 함깨 위치정보 포함 2개의 변수를 순회할 수도 있다)

제어문

1
2
3
if(temp.startsWith(Hello)) println(Hello 시작합니다.)
(startsWith메서드 : 문자열의 시작이 ~~”인지 확인)

  • 범위 객체의 생성
1
2
3
4
5
6
7
8
if(I in 0 until array.size() ) // until : a~b-1 – 배열에서 자주 쓰입니다.

for( i in 100 downTo 1) // 100부터 1까지 순회(역순)

for( i in 1 .. 100 step 2) //1 , 3, 5, 7 , 9 ….

var arrangeValue = ‘가’ until ‘나’ // 가,각,갂,갃. …. 낗 까지 범위 객체를 변수에 저장

  • if표현식과 삼항자
1
2
3
4
5
6
7
8
9
10
11
var bigger = if(num1>num2) num1 else num2

var grade = if(score==100) A else if(score in 90 until 100) B else C

var grade = if(score==60) ABCD.get(2) //해당 식과 같이 최종반환값을 메서드로 표현 가능(B)

//(자바의 삼항식과 같은 표현은 사용불가 // int a = (2>1) ? 100 : 200

// (if표현식으로 비슷하게 표현 할 수 있다.)
// (특징은 변수 값 = if ( ) { } , 변수 값에 if문을 넣는다? 되게 특이한 표현 방식인데 깔끔)

  • when-case “조건식 -> 일치할 경우 실행할 명령어”
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
   when(num) {
      (1\*3) -> { print(num값은 3!) print(“두 명령어 묶을때는 { }")

      (2,3,4,5,6,7) -> print(num값은 2,3,4,5,6,7  하나입니다)

      in 90 .. 100 -> A //식과 같이 범위 표현도 가능

      else -> println(“예외”) // 어떠한 조건에도 일치하지 않는다면 else

   }

   var x : Any = StringValue

   when(x) {
      is String -> print(string 자료) //is 연산자를 통해 타입확인도 가능
      is Int -> print(Int 자료)
      else -> 
   }

   var temp = when {
      (socre == 100) -> A
      (score % 3 == 0) -> 3의배수”)
   }   //변수의 값 지정도 when 사용 가능


   (when 마치 case 같은 느낌!)

   (특정 값을 when인자에 넣고 해당 값과 일치   구문을 실행)

   (if표현과 같이 변수값 = when() { } …형태로 사용 가능

   (when 인자를 생략  경우 조건식을 직접 입력하는 형태로도 사용 가능)

카테고리:

업데이트:

댓글남기기