프로그래밍의 처음과 끝인(?) 제어문!

JAVA와 개념적으로 다른 것은 없으나, 문법은 조금 다르므로 사용 시 헷갈릴 수 있을 것 같다.

 

1. if~else

fun main() {
    println(doIf(1))
    println(doIf("TEST"))
    println(doWhen(null))    
}

fun doIf(a:Any?):String {
    if(a == 1) {
    	return "a == 1"
    }else if(a is String) {
        return "a is String"
    }else {
        return "a is .. > " + a
    }
}
<코드 실행 결과>
a == 1
a is String
a is .. > null

if~else문은 JAVA와 별반 다르지 않다.

중간에 나오는 is 연산자는 JAVA의 instanceof 연산자와 비슷하다.

'~는 이 자료형과 호환 가능한가요' 라는 건데..

instanceof 보다 직관적인 이름이다.

 

"웰시코기 instanceof 개" 보다 "웰시코기 is 개" 가 더 알아보기 쉬우니까!

 

2. when

fun main() {
    println(doWhen(1))
    println(doWhen("TEST"))
    println(doWhen(null))    
}

fun doWhen(a:Any?):String {
    when(a) {
        1 -> return "a == 1"
        is String -> return "a is String"
        else -> return "a is .. > " + a
    }
}
<코드 실행 결과>
a == 1
a is String
a is .. > null

when은 JAVA의 switch~case와 같다고 보면 된다.

switch 대신 when을 쓰고, case ~ : 대신 -> 를 사용하는 정도의 차이.

 

차이가 있다면

여러 조건에 대해 동일한 조건으로 처리하고 싶을 때 정도일 듯

▼ 예시

더보기

[A가 1이거나 2면 "Type A"라는 문자열을 반환] 하는 경우

   1) JAVA

switch(a) {
	case 1 :
    case 2 :
    	return "Type A";
    default :
    	return "Type B";
}

   2) Kotlin

when(a) {
	1, 2 -> return "Type A"
	else -> return "Type B"
}

 


앗.. 점심시간 끝났어.. 

'개발 > Kotlin' 카테고리의 다른 글

코틀린 공부 - 함수(1)  (0) 2021.08.02
코틀린 기초 5 - object  (0) 2020.06.25
코틀린 기초 - 4(고차함수, 람다)  (0) 2020.06.24
코틀린 기초 - 2 (배열, 반복문)  (0) 2020.06.16
코틀린 기초 - 1  (0) 2020.06.16

유튜브의 '센치한개발자' 채널의 코틀린 강의를 들으면서 하는 벼락치기 공부입니다!

기본적인 부분은 유튜브 강의로 보고 나서 3년 전에 산 책 한 번 더 읽어야겠다..

 

 

 

1. 배열(listOf) + 반복문(for)

fun main() {
    var arr = listOf("가", "나")	//변경 불가능한 배열
    
    //기본 반복문
    for(item in arr) {
        println(item);
    }
}
<코드 실행 결과>
가
나

listOf로 생성한 배열은 구조를 변경할 수 없다.

즉 JAVA의 Array와 비슷하다고 볼 수 있겠다.

 

반복문의 경우 for을 사용했는데, 

자바의 foreach문(향상된 반복문)과 비슷한 모양새를 하고 있다.

 

2. 배열(mutableListOf()) + 반복문 (for ... withIndex())

fun main() {
    var arr2 = mutableListOf("A", "B")	//변경 가능한 배열

    //index 값 가져오는 배열문
    for((index, item) in arr2.withIndex()) {
        println("$index / $item");
    }
}
<코드 실행 결과>
0 / A
1 / B

mutableListOf() 로 생성한 배열은 구조를 변경할 수 있다. (add(), remove())

즉 JAVA의 LIST와 비슷하다고 볼 수 있다.

 

이 코드에서 쓰인 for문은 첫번째 것과 모양이 비슷하면서 다른데

첫 번째 반복문은 단순히 안에 들어있는 값만 가져오면 될 때 쓴다면

이건 현재 몇 번째 실행중인지에 대한 index값을 가져오려 할 때 사용할 수 있다.

 

 

 

 


이전부터 생각했지만 코틀린이라는 녀석.. 굉장히 대충대충(?)인 느낌인 게..

String이든 Int든 일단 val아니면 var로 때웠는데

이번에 배열 선언할 때도 기대를 저버리지 않고(?) var 또는 val를 이용하여 선언할 수 있다는 걸 볼 수 있다.

게으른 개발자를 위해서인걸까...?

'개발 > Kotlin' 카테고리의 다른 글

코틀린 공부 - 함수(1)  (0) 2021.08.02
코틀린 기초 5 - object  (0) 2020.06.25
코틀린 기초 - 4(고차함수, 람다)  (0) 2020.06.24
코틀린 기초 - 3 (if~else, when)  (0) 2020.06.23
코틀린 기초 - 1  (0) 2020.06.16

코틀린이 나오고 안드로이드의 공식 언어로 채택된 지도 꽤 시간이 흘렀으나 이제야 공부하게 된 나 자신을 반성 또 반성.. 늦게나마 공부를 시작하게 되었다.

일단 올해 내로 공공 API를 사용하는 앱을 만들어 서비스하는 것을 목표로 열심히 해 보기로..

------------

이번 시간에는 기본 변수형의 차이에 대한 차이를 학습하였다.

 

1. val 변수 (value)

fun main() {
    val first = "Hello"	//변경 불가능한 변수
    
    println(first)
	//first = "Hello2"	//변경 불가(에러)

}
<코드 실행 결과>
Hello

val 은 Java의 fianl 변수와 대응하며, 값이 한 번 할당되면 이를 변경할 수 없다.

위의 코드에서 fist = "hello2" 부분을 주석해제하면 에러가 발생하게 된다.

 

2. var 변수 (variable)

fun main() {
    var second:String = "TEST";
    var third:String? = null
    
    println(second)
    second = "WORLD"
    println(second)

    println(third)
}
<코드 실행 결과>
TEST
WORLD
null

var 은 일반적인 변수로, 값을 여러 번 할당할 수 있다.

자료형 뒤에 ? 가 붙으면 해당 변수에 null을 할당할 수 있다는 것을 의미한다.

 

사실 꼭 초기값을 할당해주지 않고 var {변수명}:{자료형} 으로 쓸 수 있다.

var number:Int

 

3. 함수(function)

fun main() {
    var third:String? = null
    
    println(third)
    third = getString()
    println(third)
    third = getSum(2, 5)
    println(third)

    end()
}

fun getString() : String {
    return "GET STRING FROM METHOD";
}

fun getSum(i : Int, i2 : Int) : String {
    return "get Sum (" + i + " + " + i2 + " = " + (i+i2) + ")"
}

fun end() {
    println("end of line")
}
<코드 실행 결과>
null
GET STRING FROM METHOD
get Sum (2 + 5 = 7)
end of line

함수 선언 시 fun 이라는 키워드를 사용한다.

반환값이 있는 경우 (getString(), getSum()) 변수 선언 시와 마찬가지로 함수명 뒤에 자료형을 적어주고, 반환값이 없는 경우에는 이를 생략할 수 있다. 

JAVA와의 차이라면 자료형이 앞에 위치하냐 뒤에 위치하냐의 차이가 아닌가 싶다.

'개발 > Kotlin' 카테고리의 다른 글

코틀린 공부 - 함수(1)  (0) 2021.08.02
코틀린 기초 5 - object  (0) 2020.06.25
코틀린 기초 - 4(고차함수, 람다)  (0) 2020.06.24
코틀린 기초 - 3 (if~else, when)  (0) 2020.06.23
코틀린 기초 - 2 (배열, 반복문)  (0) 2020.06.16

* 청년 재직자 내일채움공제는 회사에서 먼저 신청을 한 뒤 재직자가 청약을 하는 방식으로 진행됩니다 *

* 인터넷은 크롬이나 엣지를 사용하시길 추천드리고, 4대사회보험 정보연계센터 접속 시에는 인터넷 익스플로러를 이용해주세요. (저는 마이크로소프트 엣지를 이용하여 진행하였습니다.)

 

1. 준비 : 

* 3~5번은 서류를 인터넷에서 발급받을 때 필요하며, 서류를 따로 스캔한 파일이 있다면 생략해도 됩니다.

1) 공인인증서

2) 회사 사업자 등록번호

3) 모두의 프린터(https://modu-print.tistory.com/) - 프리웨어

 - 아래 서류를 인터넷에서 발급받아서 PDF로 저장하기 위해 필요함

 - 해당 블로그 포스트에 첨부된 영상을 보고 진행하기를 추천드립니다.

 - 프로그램 다운로드 버튼은 아래와 같이 생겼으니 참고하세요

4) 최신 버전의 Adobe Acrobat Reader

 - 4대 보험 가입 확인서 출력에 Adobe Acrobat Reader가 필요함.

 - Acrobat Reader X(10.0) 은 오류가 나니 그냥 최신 버전으로 설치하는 것을 권장합니다.

 - 10.0 깔면 인쇄 버튼 눌러도 Acrobat Reader 설치하라는 팝업만 나오고 진행되지 않습니다.

   ( 그런 경우 최신 버전 어도비 아크로뱃 리더 설치 필요! )

5) 인터넷 익스플로러

 - 4대 보험 가입 확인서 발급받는 사이트가 IE밖에 지원을 안 합니다.

 

 

2. 필요 서류 :

1) 4대보험 가입 확인서 (4대사회보험 정보연계센터)

- https://www.4insure.or.kr/ins4/ptl/Main.do  (IE에서만 지원)

2) 가족관계증명서 (전자가족관계등록시스템)

- http://efamily.scourt.go.kr/index.jsp
3) 주민등록 등본 (정부 24)

- https://www.gov.kr/portal/main

4) 병적증명서 (남자 한정)

 

 

 

3. 순서

1) 내일채움공제 사이트 접속 (https://www.sbcplan.or.kr/member/login.do)

 

 

 

2) 로그인 (회원가입이 되어있지 않으면 로그인 메뉴로 들어가서 맨 아래의 '회원이 아니신가요' 부분의 버튼 누르기

회원이라면 로그인, 아니라면 '가입 여부 확인'을 눌러 회원가입을 진행

 

 

 

3) 회원가입 후 상단 메뉴에서 [내일채움공제]-[청약]를 선택하고, 사업자 등록번호를 입력한 뒤 아래 나오는 목록에서 신청을 누른다. 

4) 필요한 내용과 서류를 등록하고 확인

* 최초 승인 후 3일 이내로 입력한 계좌에서 1회차 부금이 이체된다고 하니 미납되지 않도록 주의!

 

5) 근로자 정보와 연봉정보를 입력하고 최종 제출을 누른다

 

 

 

 

4. 이후..

신청 후 승인되기까지 약 7일 정도가 소요된다고 하며, 승인 후 3일 이내로 입력한 계좌에서 1회차 납부금이 나간다고 합니다. 미리 확인하셔서 미납되지 않도록 주의합시다!

문제점 : 

for문 안에서 AsyncTask.execute() 실행 시 병렬로 처리되는 게 아니라 순차적으로 실행되는 오류가 있었음.


for(int i=0;i<50;i++){

    new AsyncTask<Void, Void, Void> {

        protected Void doInBackground(Void... voids) {

            connect(view.getId() == R.id.button_release);

            return null;

        }

    }.execute();
}


그러니까 위의 코드를 실행했다고 하면



                ↗ 일1 ↘

일 3개 시작 -> 일2  → 종료

                ↘ 일3  ↗


가 아닌


일 3개 시작 ->일1->일2->일3->종료


로 진행됨.



해결 : 


for(int i=0;i<50;i++){

    new AsyncTask<Void, Void, Void> {

        protected Void doInBackground(Void... voids) {

            connect(view.getId() == R.id.button_release);

            return null;

        }

    }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}


execute();

메소드 대신 

executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);

를 사용해야 정상적으로 병렬로 처리가 된다.



참고 :


https://trend21c.tistory.com/1715

https://gist.github.com/benelog/5954649

'개발 > JAVA' 카테고리의 다른 글

JAVA SHA1 암호화  (0) 2018.07.20

+ Recent posts