본문 바로가기
Kotlin 공부 노트

코틀린의 기본 문법(Toast,변수선언,출력,Null,형 변환)

by 지게요 2021. 12. 15.
728x90
반응형

# 버튼을 클릭했을 시 Toast 메시지 띄우기

화면에 잠깐 나타났다가 없어지는 text를 띄우는 코드는

Toast.makeText(applicationContext,"입력할text",Toast.LENGTH_LONG).show() 이렇게 사용한다

만약 메시지를 짧게 띄우고 싶으면 LENGTH_LONG 부문을 LENGTH_SHORT으로 바꿔준다

※코틀린에서는 ";"를 끝에 안 붙여도 실행이 가능하다

button.setOnClickListener {
Toast.makeText(applicationContext,"입력할 text",Toast.LENGTH_LONG).show() //메시지를 길게
Toast.makeText(applicationContext,"입력할 text",Toast.LENGTH_SHORT).show() // 메시지를 짧게
}

# kotlin의 변수 선언 방식(자바와 비교)

코틀린 변수 선언 방식은 var과 val이 있다 val은 var과 다르게 읽기 전용 변수이다(한 번 값을 넣으면 빼는 것만 가능함)

var<변수이름>:<자료형>=<초기값> , val<변수이름>:<자료형>=<초기값>

<예제>

var name:String="홍길동"

val name:String="홍길동"

자바의 경우 int count = 0;이지만 코틀린은 var count:Int = 0 이런 식으로 자료형을 명시하는 방식이 다르고

코틀린은 선언과 동시에 초깃값을 넣어주면 자료형을 명시하지 않아도 된다 왜나하면 타입 추론이란 걸 하기 때문에 자동으로 들어가기 때문에

var name = "홍길동" 이런 식으로 자료형을 명시하지 않아도 된다

변수의 초깃값을 주지 않았을 때는 var name:String 이런 식으로 자료형만 명시해 줘도 된다.

코틀린의 경우 전역변수로 변수를 선언할 때는 초깃값을 정해줘야 한다 var name:String="" 이런 식으로 해줘야 오류가 안 난다

※ lateinit 이란 걸 var 앞에 붙여 주게 되면 초깃값을 안정해 줘도 된다. 하지만 나중에 값을 넣어주지 않으면 문제가 생긴다

하지만 여기서 var [변수명]:Any를 붙여 주게 되면 어떤 것이나 다 들어갈 수 있다 (String, Int 등)

 

class MainActivity : AppCompatActivity() {
var name:String // 이것만 입력하면 오류
var name:String=""//이렇게 해주거나
lateinit var name:String //이렇게 해줘도 오류가 안난다
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main) 

	var name:Any = "홍길동" //자동으로 String 으로 인식
	var name:Any = 123 //자동으로 Int 로 인식

	var name //이것만 입력하면 오류가 됨
	var name:String //이런식으로 입력을 해줘야 오류가 안뜸
	name = "홍길동" //바로위에서 선언을 해줬기 때문에 바로 name만 써줘도 된다

	var name = "홍길동" //초기값을 지정해줬기 때문에 자료형을 명시 하지 않아도 됨(자동으로 String로 인식)

	var name:String="홍길동"
	val name:String="홍길동"//읽기 전용 변수(상수)

	String name = "홍길동"; //자바의 경우

 }
}
​

# kotlin의 문자 출력

자바에서는 출력문을 System.out.println("안녕");을 입력을 해줘야 하는데 코틀린에서는 println("안녕")만 적어줘도 문자가 출력이 된다 엄청 편리한 거 같다

Logcat이라는 창에 출력이 된다

그리고 출력문 안에서 변수랑 같이 출력을 하고 싶을때는 println("안녕 $변수명") 이렇게 입력을 해줘도 가능하고 println("안녕 ${표현식}") 이렇게 입력을 해줘도 가능하다.

System.out.println("안녕"); //일반적인 자바 출력
println("안녕") //코틀린의 출력문
println("안녕 $name") //이런식으로도 가능하다
println("안녕 ${name + name2}") //이런것도 가능

# 널 허용 자료형(Nullable Type) 이해하기

변수 상자를 만들었는데 값이 들어있지 않은 경우 null이라고 한다. 이경우 null인 경우에 접근하면 프로그램에 오류가 발생한다

이러한 문제를 줄이기 위해 변수에 null을 직접 할당하지 못하게 하고 널 허용 자료형을 만들도록 했다.

널 허용 자료형을 만들라면 변수 선언할 때 자료형 뒤에 ? 기호를 붙이면 그 자료형에 대한 널 허용 자료형이 된다 이걸 래핑이라고 한다

<예제> var name:String? 이런식으로 ?을 붙여준다

널 허용 자료형을 원래의 자료형으로 바꾸기 위해서는 변수명 뒤에 !!만 붙여주면 언래핑이 된다

<예제> name!! 이런식으로 !!을 붙여준다

또한 엘비스 연산자를 이용해 null 경우 디폴트 값을 넣어줄 수 있다.

※ 엘비스 연산자란 : "?:"식으로 표현되며 코틀린은 null 대신 사용할 디폴트 값을 지정할 때 편리하게 사용할 수 있는 연산자를 제공합니다

var name:String? = null //이런식으로 하면 null자료형이 만들어진다

var nameLength = name!!.length //!!을 쓰면 언래핑을 하는데 만약 name이 null이라면 오류가 난다

var nameLength = name?.length //오류가 날때는 ?를 붙여준다

var nameLength = name?.length ?: 0 //또한 엘비스연산자인"?:" 0 를 붙여주면 name이란 변수가 null이면 0을 넣어주라는 의미

# 형 변환하기!

문자열을 숫자로 바꾸는 법 <문자열 변수>.toInt() 이렇게 하면 문자열 변수를 숫자로 변환이 된다

반대로 숫자를 문자열로 바꾸는 법은 <숫자 변수>.toString() 이렇게 하면 숫자 변수를 문자열 변수로 변환이 가능하다

 

var temp:Int
var temp2:String
var Str:String="10" //문자열변수 "10"이 들어있는 str변수 생성
var int:Int=10 //숫자변수 10이 들어있는 int변수 생성

temp=Str.toInt() //temp에는 숫자로된 10이 들어간다
temp2=int.toString() //temp2에는 문자로된 "10"이 들어간다
반응형