fun main(){
println("안드로이드를 위한 코틀린 연습")
}
main()
fun main(){
var var1 : Int =10
var var2 : Float = 10.1f
var var3 : Double = 10.2
var var4 = '안' <- 데이터 형식 생략가능 (암시적 선언)
var var5 = "안드로이드"
println(var1)
println(var2)
println(var3)
println(var4)
.
.
}
var(variavle)
val(value)
문자형100을 정수형으로 변환
var a : Int = "100".tolnt()
null 사용
null이 아니라고 표시는 !!로나타냄
if문은 java와 같음
if(조건문){
true 일때 여기 실행
}
else{
false일때 여기 실행
}
< 간결문 >
if(조건문)
true일때
else
false일때
when 문
- java의 switch문의 역활을 함
- 여러 가지 경우에 따라서 어떤 작업을 할 것인지를 결정
- 다중 분기라고도 부름
when(식){
값1-> 값이 1이면 실행
값2-> 값이 2이면 실행
.
.
.
else->어디에도 행당하지 않으면 실행
}
var count : Int = 85
var jumsu : Int = (count /10)*10
when(jumsu) {
100 -> println("when문 : 합격(장학생)")
90 -> println("when문 : 합격(장학생)")
80, 70, 60 -> println("when문 : 합격")
else -> println("when문 : 불합격")
}
.. 을사용하여 범위지정
var jumsu : Int = count
when(jumsu) {
in 90 .. 100 -> ("when문 : 합격(장학생)")
in 60 .. 89 ->("when문 : 합격")
else -> println("when문 : 불합격")
}
1.일차원 배열
-선언
var 배열명=Array <데이터 형식>(개수,{초기값})
-값 대입
var one = Array< Int>(4,{0})
one[0]=10
one[3]=20
2.이차원 배열
-선언
var 배열명 = Array<데이터 형식>(행개수,{배열 데이터 형식(열개수)})
-값 대입
var two = Array< IntArray >(3,{IntArray(4)})
배열 선언하면서 값 대입가능
var three : IntArray = intArrayOf(1,2,3)
ArrayList
var one = ArrayList< Int>(4)
one.add(10)
one.add(20)
var hap=one.get(0) + one.get(1)
for(변수 in 시작..끝 step 증가량){
//반복문
}
or
for(변수 in 배열명.indices){
//반복문
}
while(조건식){
//조건식이 true인 동안이 부분 실행
}
fun main1(){
var one : IntArray = intArrayOf(10,20,30)
//indices = 배열의 index
for (i in one.indices){
println(one[i])
}
for (value in one){
println(value)
}
// 변수 in 시작..끝 step 증가량
var two : Array<String> = arrayOf("하나","둘","셋")
for (i in 0..2 step 1){
println(two[i])
}
var k : Int = 0
while (k< two.size){
println(two[k])
k++
}
}
//전역변수
var myVar : Int = 100
fun main(){
//지역변수
var myVar : Int = 0
println(myVar)
var sum : Int = addFunction(10,20)
println(sum)
}
fun addFunction(num1: Int ,num2 : Int): Int{
var hap : Int
hap = num1 + num2 + myVar
return hap
}
< 참고 >
매개변수 구분
- -Call-by-Value
단순히 실 매개변수를 형식 매개변수에 복사함으로 구현한다.
함수가 실행 중 매개변수 값이 변경하여도 변경 되지 않는다.- -Call-by-reference
참조에 의한 호출, 주소 값을 인자로 전달하는 호출 방식을 말한다.
주소 값을 인자로 전달하기에 값 변경 시 ,실 매개변수의 원본 값이 변경 됨
클래스 생성
class Car{
var color = ""
var speed = 0
fun upSpeed(value: Int){
if (speed + value>=200)
speed=200
else
speed = speed-value
}
}
인스턴스생성(myCar1,myCar2)
fun main(){
var myCar1 : Car = Car()
myCar1.color = "빨강"
myCar1.speed = 0
var myCar2 : Car = Car()
myCar2.color = "파랑"
myCar2.speed = 0
}
main()
constructor로 생성
constructor(color : Stirng, speed: Int){
this.color = color
this.speed = speed
}
constructor(color : Stirng, speed: Int){
this.color = color
this.speed = speed
}
constructor(speed : Int){
this.speed = speed
}
constructor(){
}
companion object{
var carCount : Int=0
//const = final같음
const val MAXSPEED : Int=200
const val MINSPEED : Int=0
fun currentCarCount():Int {
return carCount
}
}
슈퍼클래스(superclass, 또는 부모 클래스)
서브클래스(subclass, 또는 자식 클래스)
메소드 오버라이딩(overriding)- 1:1로 대칭해 덮어씌우기(=재정의 한다)
//open으로 상속 할수있게 열어줌
open class Car{
var color = ""
var speed = 0
open fun upSpeed(value: Int){
if (speed + value>=200)
speed=200
else
speed = speed-value
}
// :Car 로 부모클래스를 상속받음 이때 생성자를 적어주지않으면 오류
//:Car()= 생성자도 부모클래스에서 상속받아옴
class Automobile : Car{
var seatNum : Int =0
constructor(){
}
fun countSeatNum() : Int{
return seatNum
}
//override로 메소드 재정의
override fun upSpeed(value: Int){
if (speed + value>=300)
speed=300
else
speed = speed-value
}
abstract class Animal{
var name =""
abstract fun move()
}
class Tiger : Animal(){
var age : Int=0
//오버라이딩해서 사용
override fun move(){
println("날개로 날아간다")
}
}
abstract class Animal{
var name =""
abstract fun move()
}
interface iAnimal{
abstract fun eat()
}
class Tiger : Animal(),iAnimal{
var age : Int=0
//오버라이딩해서 사용
override fun move(){
println("날개로 날아간다")
}
override fun eat(){
println("멧되지를 잡아먹는다")
}
}