본문 바로가기

kotlin

코틀린 : 변수

Variable 
=> Variable(변수): 데이터 저장 공간에 붙인 이름val 또는 var 변수명 : 자료형 = 값
=> val 읽기 전용
=> var 읽고 쓰기 가능
=> 자료형 생략 가능 - 값을 가지고 유추 설정
=> null  저장 가능 자료형 별도 존재 > 자료형만 기재 X
=> Kotlin 의 모든 자료형 기본적으로 참조형
value type 이 없다! 
=> 정수의 기본 자료형은 Int

val n : Int = 100 
n = 200 // 에러 - val 은 변경 X

val n1 = 200 // 200 으로 자료형 유추 > int 
자료형을 기재하지 않기 때문에 동적 자료형 설정 으로 오해 하는 경우가 있는데, Kotlin Swift 는 정적 타입 결정 방식 이용
자료형을 기재하지 않으면 자료형을 유추

 

 

val n2 : Int // 에러
자료형을 null 가능 여부에 따라 optional 로 구분 > 초기값을 주지 않으려면 자료 형 ? 으로 설정

 

1. 변수의 위치 클래스 외부에서 생성 - 최상위 레벨의 변수 (Top - level )
2. 클래스 내부에 생성 - property
3. 함수 내부에 생성 - local variable

=> variable 은 말그대로 변수 자체 의미
=> property 는 변수와 getter setter 합쳐서 호칭 생성은 변수 처럼, 값을 가져올때나 설정 할때는 getter 나 setter 메소드 이용

var x : Int = 100
  get{return 100}
  set(k : Int) {
     field = k
}

fun f() {
    var y : int = 100
}

 

2. null 을 저장할 수 있는 자료형 
자료형? 으로 선언 하면 됩니다. 
=> nullable / wrapping / optional

 

3. property
=> 함수 안에서 생성되지 않은 변수
=> property 는 변수 선언 하듯이 만들지만 내부적으로 접근자 메소드 생성합니다. 
접근자 메소드는 변수에 저장된 값을 리턴하는 getter(get) 와 변수에 저장된 값을 변경하는 setter(set) 2개로 구성 됩니다.
=> val 로 선언하면 setter 가 생성되지 않아서 값을 변경하지 못합니다.

 

=> var 로 선언하면 getter 와 setter 가 모두 생성 됩니다 .
=> get과 set에서는 변수 이름을 사용하지 못하고 field 라는 이름으로 변수를 사용
=> 보통의 경우는 get 과 set 을 별도로 생성 필요 없지만 특별한 작업을 수행 시킬 때 사용

var x : Int = 100
get(){return field} : 로그 기록 시 코드 짤 수 있다. (key valur obserbing)
set(value : Int) {field = value} : 유효성 검사 시 사용 범위 밖의 값을 넣었을 때~~~ Volume 0.0~ 1.0 double 인데!
=> 변수 선언을 하면 get 과 set 이 자동 생성
println(x) // x의 값을 리턴하는 get을 호출
x = 200 // x의 값을 변경하는 set을 호출한 것입니다. 

get 이나 set을 직접 만드는 경우는 데이터를 사용할 때 로그를 기록하는 부분을 수행해야 하거나, 값을 변경 할 때 유효성 검사를 수행하기 위해서 입니다. 
=> 운영체제의 API를 사용할 때 되도록이면 값의 범위를 한정하는 View를 이용하던가 직접 입력 받을 때는 바로 사용하지 말고 유효성 검사를 수행한 후 사용하는 것이 좋다.

 

package chap02
// Kotlin 에서 java 클래스를 바로 가져다 쓸 수 있다.

import java.util.Date as UtilDate

fun main(args:Array<String>) {
    val date = UtilDate()
    println(date)
    // 명시적으로 자료형을 기재
    var x : Int = 200
    //자료형 유추
    var y = 200
    // 일반 자료형에 null 대입 에러
    // null 대입하고자 하면 자료형 뒤에 ? 를 기재
    var z : Int? = null

    //val 과 var 그리고 null을 저장할 수 있는 자료형 생성

}

Function 
=> function 은 전역에 만들어지고 method 는 class 안에 만들어져서 클래스나 인스턴스를 이용해서 접근하는 것
1. 함수를 선언 (생성)
fun 이름 (매개 변수 이름 : 자료형,...) : 리턴 타입 {
함수 내용 
return 데이터
}
=>매개 변수 없을 수 있다
=> :리턴 타입 없을 수 있다. void (리턴 하는 데이터가 없는 경우)
=> 함수의 내용이 없을 수 있다 - 학습할 때만 그렇고 tlfwofh 내용 없을 때는 abstract 메소드로 만들어야함 
=> return 도 없을 수 있다.


2. 함수를 호출 (실행)
함수 이름 (매개 변수 대입)
이 코드를 작성 하다 보면 매개 변수의 값만 대입하면 되는데 , Intelli J 나 Android Studio 에서는 값 앞에 이름을 자동으로 추가합니다.
이름을 입력할 필요가 없다.

이름을 입력하지 않고 함수를 호출하게 되면 각각의 매개 변수가 어떤 의미를 갖는지 알지를 못하지 때문에 가독성을 높이기 위해서 Intelli J 나 Android Studio 가 붙여주는 것 이다. 

함수를 만들 때 함수 이름이나 매개 변수 이름은 한번에 알아볼 수 있게 길게 만드는 것이 좋다. 

 

 

 

'kotlin' 카테고리의 다른 글

코틀린 : 메소드  (0) 2020.10.15
코틀린 : 프로퍼티  (0) 2020.10.15
코틀린: 차근 차근 시작하기 :-)  (0) 2020.10.15
코틀린 : 클래스와 인터페이스  (0) 2020.10.14
코틀린 : 제어문의 개념  (0) 2020.10.14