240603_TIL

2024. 6. 3. 19:32TIL(Today I Learned)

# 안드로이드 스튜디오 단축기

ctrl+ / = 주석 처리

ctrl + shift + F = 단어 찾기

esc = 자동 포커싱(?)

 

# 코팅 컨벤션

카멜 표기법: 첫 글자 제외, 이후 단어의 첫 글자를 대문자로(isCamelCase) / 변수, 메소드

스네이크 표기법: 언더바를 활용한 표기법(seoul_food) / 상수

파스칼 표기법: 첫 글자부터 대문자 / 클래스

 

# 자료형

* 8비트 = 1바이트

 

# 변수와 상수

변수 : 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