2024. 6. 3. 19:32ㆍTIL(Today I Learned)
# 안드로이드 스튜디오 단축기
ctrl+ / = 주석 처리
ctrl + shift + F = 단어 찾기
esc = 자동 포커싱(?)
# 코팅 컨벤션
카멜 표기법: 첫 글자 제외, 이후 단어의 첫 글자를 대문자로(isCamelCase) / 변수, 메소드
스네이크 표기법: 언더바를 활용한 표기법(seoul_food) / 상수
파스칼 표기법: 첫 글자부터 대문자 / 클래스
# 자료형
# 변수와 상수
변수 : var / 변경이나 삭제가 자유로움
상수 : val / 변경이나 삭제가 불가(에러 발생)
# 연산자
산술 연산자 : +, -, *, /
대입 연산자: =
복합대입 연산자: +=, -=, *=, /=
증감연산자: ++, --
* 전위연산자: 변수의 왼쪽에 위치 / 연산 실행 전에 증감 반영
* 후위연산자: 변수의 오른쪽에 위치 / 연산 실행 후에 증감 반영
비교연산자: >, <, <=, >=, !=, ==
# 조건문
if문
when문
# 반복문
for문
while문
# 메소드
이름이 붙은 소스코드의 로직
# 클래스 : 정보(프로퍼티)와 행위(메소드)로 구성
# 특별한 클래스
1. 데이터 클래스: 유용한 메소드를 자동으로 생성 / data class 클래스
- hashCode() : 객체를 구분하기 위한 고유값을 리턴
- equals() : 동일한 객체인지 비교해서 T/F를 출력
- copy() : 현재 객체의 모든 정보를 복사해서 새로운 객체를 리턴
- toString() : 현재 객체의 모든 정보(프로퍼티)를 출력
- getXX() / setXX() : 변수의 값을 리턴하거나 설정
2. 실드 클래스(sealed class) : 상속받을 수 있는 서브클래스들을 미리 정의 / sealed class 클래스명
- 무분별한 상속을 방지
- 컴파일 시점에 생성할 수 있는 서브클래스를 알 수 있어 효율적으로 다형성을 구현 가능
3. 오브젝트 클래스
- java의 static 대신 사용하는 키워드
- 프로그램 실행과 동시에 인스턴스
# 생성자
- 클래스(설계도)를 실체화할 때 최초로 실행할 로직을 작성함
- 기본 생성자, 명시적 생성자로 구분 / 명시적 생성자는 주 생성자와 부 생성자로 구분
1. 주 생성자(init)
fun main() {
}
// 클래스 선언부에 생성자를 명시함으로써 클래스를 실체화
class Character(_name:String, _hairColor:String, _height:Double) {
var name:String = ""
var hairColor:String = ""
var height:Double = 0.0
// 매개변수를 직접 넘기지않음
// 실체화될 때(캐릭터를 새로 찍어낼 때) 최초로 실행할 코드는 init의 코드
init {
println("매개변수없는 생성자 실행 완료!")
}
fun fireBall() {
println("파이어볼!")
}
fun compositing(device1:String, device2:String): String {
var device3 = device1 + device2
println("새로운 무기인 ${device3}입니다")
return device3
}
}
2. 부 생성자(constructor)
fun main() {
}
/ 클래스 선언 시에는 파라미터 입력받지 않음
class Character {
var name:String = ""
var hairColor:String = ""
var height:Double = 0.0
// 명시적 생성자 (Constructor)
// _name, _hairColor, _height와 같이 생성자에 변수를 넘기는 경우에 사용함
// 클래스 실체화할 때 파라미터를 입력받음 -> 이하 코드 실행
constructor(_name:String, _hairColor:String, _height:Double) {
println("${_name}을 생성자로 넘겼어요")
println("${_hairColor}를 생성자로 넘겼어요")
println("${_height}를 생성자로 넘겼어요")
}
fun fireBall() {
println("파이어볼!")
}
fun compositing(device1:String, device2:String): String {
var device3 = device1 + device2
println("새로운 무기인 ${device3}입니다")
return device3
}
}
* init과 constructor의 차이
- init : 파라미터가 클래스 선언 시 옆에 붙음 / 반드시 모든 파라미터를 받는 생성자만 생성 가능
- constructor : 파라미터가 클래스 안에 constructor 옆에 붙음 / constructor를 여러 개 만들어서, 생성자별로 받는 파라미
터를 다르게 설계할 수 있음
# 객체 : 모든 인스턴스를 포함하는 개념
# 인스턴스 : 클래스 형태로 설계된 객체를 실체화하면 인스턴스가 생성 (메모리 공간을 차지)
fun main() {
// 불마법사로 객체화
var magicianOne = Character("불마법사", "red", 180.2)
println("${magicianOne.name}의 머리색상은 ${magicianOne.hairColor}입니다")
magicianOne.fireBall()
// 냉마법사로 객체화
var magicianTwo = Character("냉마법사", "blue", 162.2, 25, "여")
println("${magicianTwo.name}의 머리색상은 ${magicianTwo.hairColor}이고 나이는 ${magicianTwo.age}입니다.")
magicianTwo.fireBall()
}
class Character {
var name:String = ""
var hairColor:String = ""
var height:Double = 0.0
var age:Int = 0
var gender:String = ""
// 명시적 생성자 (Constructor)
// _name, _hairColor, _height와 같이 생성자에 변수를 넘기는 경우에 사용함
constructor(_name:String, _hairColor:String, _height:Double) {
println("${_name}을 생성자로 넘겼어요")
println("${_hairColor}를 생성자로 넘겼어요")
println("${_height}를 생성자로 넘겼어요")
name = _name
hairColor = _hairColor
height = _height
}
// _name, _hairColor, _height, _age, _gender와 같이 생성자에 변수를 넘기는 경우에 사용함
constructor(_name:String, _hairColor:String, _height:Double, _age:Int, _gender:String) {
println("${_name}을 생성자로 넘겼어요")
println("${_hairColor}를 생성자로 넘겼어요")
println("${_height}를 생성자로 넘겼어요")
println("${_age}를 생성자로 넘겼어요")
println("${_gender}를 생성자로 넘겼어요")
name = _name
hairColor = _hairColor
height = _height
age = _age
gender = _gender
}
fun fireBall() {
println("파이어볼!")
}
fun compositing(device1:String, device2:String): String {
var device3 = device1 + device2
println("새로운 무기인 ${device3}입니다")
return device3
}
}
'TIL(Today I Learned)' 카테고리의 다른 글
240605_TIL (2) | 2024.06.05 |
---|---|
240604_TIL (0) | 2024.06.04 |
240531_온보딩 1주차 (4) (0) | 2024.05.31 |
240530_온보딩 1주차 (3) (0) | 2024.05.30 |
240529_온보딩 1주차 (2) (0) | 2024.05.29 |