연산자
- 산술 연산자 (+, -, *, /, %)
- 덧셈, 뺄셈, 나눗셈, 곱셈, 나머지 연산(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 > B A가 B보다 크다. A >= B A가 B보다 크거나 같다. A < B A가 B보다 작다. A <= B A가 B보다 작거나 같다. A == B A와 B의 값이 같은가? A != B A와 B의 값이 다른가? A === B A 객체와 B 객체가 같은가? A !== B A 객체와 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
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) }