Android 사전 캠프⛺-007

MunkiJeon·2024년 5월 16일

TIL

목록 보기
7/59
post-thumbnail

TIL (Today I Learned)

오늘 공부한거!

  • 코틀린 기본기 공부(2시간 짜리 영상 보기)

    연산자

    • 산술 연산자 (+, -, *, /, %)
      - 덧셈, 뺄셈, 나눗셈, 곱셈, 나머지 연산(MOD)때 사용
      • val a = 1+2 //3 
        val b = 1-2 //1
        val c = 1*2 //2
        val d = 1/2 //0
        val e = 1%2 //1
    • 대입 연산자 (=)
      • 특정 변수에 값을 넣을 때(대입) 사용.
      • var f: Int
        f = 5
    • 대입 연산자 (=)
      • 특정 변수에 값을 넣을 때(대입) 사용.
      • 처음부터 변수에 값을 넣지 않을 때는 자료형을 생략할 수 없습니다.
      • var f: Int
        f = 5
    • 복합 대입 연산자 (+=, -=, *=, /=, %=)
      • 산술 연산자와 대입 연산자를 합친 연산자.
      • var g = 5
        g += 10 // 실행되면 15
        g -= 5 // 실행되면 10
        g *= 2 // 실행되면 20
        g /= 2 // 실행되면 10
        g %= 2 // 실행되면 0
    • 증감 연산자(++, --)
      • 특정 변수에 값을 넣을 때(대입) 사용.
      • A++ 형태를 후위 증감 연산자, ++A전위 증감 연산자라고 합니다.
      • var A = 10
        print("A++: ${A++}\n") // A값 먼저 반환 = 10.
        print("++A: ${++A}\n") // 위의 연산에 의해 11, 먼저 증가 후 출력 = 12.
        print("A--: ${A--}\n") // A값 먼저 반환 후 감소 출력 = 12 (실제 값은 11)
        print("--A: ${--A}\n") // 위의 연산에 의해 11, 먼저 감소 후 출력 = 10.
    • 비교 연산자 (>, >=, <, <=, ==, !=, ===, !==)
      • 두 변수의 대소 관계나 값, 객체를 비교할 때 사용.
      • 연산자설명
        A > BA가 B보다 크다.
        A >= BA가 B보다 크거나 같다.
        A < BA가 B보다 작다.
        A <= BA가 B보다 작거나 같다.
        A == BA와 B의 값이 같은가?
        A != BA와 B의 값이 다른가?
        A === BA 객체와 B 객체가 같은가?
        A !== BA 객체와 B 객체가 다른가?
      • print("1 > 1 : ${1>1}\n")  // 1 > 1 : false
        print("1 >= 1 : ${1>=1}\n") // 1 >= 1 : true
        print("1 == 1 : ${1==1}\n") // 1 == 1 : true
        print("1 != 1 : ${1!=1}\n") // 1 != 1 : false
    • 비트 연산자 (and, or, xor, inv(), shl, shr, ushr)
      • 산술 연산자와 대입 연산자를 합친 연산자.
      • 💡시프트 연산?
         시프트 연산은 비트를 왼쪽이나 오른쪽으로 옮기는 연산을 말합니다.
         -왼쪽 시프트 연산은 비트를 B 만큼 왼쪽으로 옮기며 
         -오른쪽 시프트 연산은 비트를 B 만큼 오른쪽으로 옮깁니다.
         일반적으로 오른쪽으로 옮겼을 때 새로 생기는 공간을 양수이면 0, 음수이면 1로 채웁니다.
         단, 부호 비트 포함 오른쪽 시프트 연산(unsigned shift right)을 사용하면 
         옮겼을 때 생기는 공간을 무조건 0으로 채웁니다.
         왼쪽 시프트 연산은 A에 2의 B승을 곱하며, 
         오른쪽 시프트 연산은 A에 2의 B승을 나눕니다
      • print("1 & 0 : ${1.and(0)}\n")	// 1 & 0 : 0
        print("1 | 0 : ${1.or(0)}\n")	// 1 | 0 : 1
        print("1 ^ 0 : ${1.xor(0)}\n")	// 1 ^ 0 : 1
        print("~1 : ${0.inv()}\n")		// 1 : -1
        print("2 << 2 : ${2.shl(2)}\n")	// 2 << 2 : 8
        print("2 >> 2 : ${2.shr(2)}\n")	// 2 >> 2 : 0
        print("2 >>> 2 : ${2.ushr(2)}\n")// 2 >>> 2 : 0
    • 논리 연산자 (&&, ||, !)
      • 논리식에 대한 참, 거짓 연산자.
      • print("true && false : ${true && false}\n")  //true && false : false
        print("true || false : ${true || false}\n")   //true || false : true
        print("true && !false : ${true && !false}\n") // true && !false : true
  • 안드로이드 개발종합반 2주
    android:visibility="gone" or "invisible" or "visible"
    //컴포넌트 없어진 것 처럼/안 보이게/보이게 만듬
    private fun getRandom(): List<Int>{//1~45 사이 랜덤한 번호 생성
      //1~45 중 선택되지 않은 숫자 리스트(filter의 리턴 형태 : List<T>)
      val number = (1..45).filter { it !in pickNumberSet }
      //(현재 선택된 숫자 + 1~45 중 선택되지 않은 숫자.섞음.뽑아냄(6-선택된 숫자 갯수)).오름차순 정렬
      // = 현재선택된 숫자 + 랜덤된 선택된 숫자 => 숫자 6개 리턴
      return (pickNumberSet + number.shuffled().take(6-pickNumberSet.size)).sorted()
    }
    private fun setNumBack(number: Int, textView: TextView){ //숫자 공 배경색 지정 function
    //1~10: 노랑, 11~20: 파랑, 21~30: 빨강, 31~40: 회색, 그외: 초록
      val background = when(number){
        in 1..10 -> R.drawable.circle_yellow
        in 11..20 -> R.drawable.circle_bule
        in 21..30 -> R.drawable.circle_red
        in 31..40 -> R.drawable.circle_gray
        else -> R.drawable.circle_green
      }
     //파라메타 값로 들어온 textView의 배경색을 위 background 변수 결과로 정해진 값 넣음
     textView.background = ContextCompat.getDrawable(this, background)
    }
profile
공장자동화와 웹 개발을 핥아 먹다 앱 개발로 전향한 개발자의 키보드의 낡은 키캡⛑️

0개의 댓글