Kotlin 프로 그래 밍 3 분 입문

왜 Kotlin 을 사용 합 니까?
프로젝트 1 기 가 끝나 고 드디어 시간 이 생 겼 습 니 다.한 달 여 동안 Kotlin 은 입문 부터 지금까지 개발 에 대한 절실 한 느낌 을 견지 해 왔 습 니 다.문법 과 자바 의 차이 가 매우 크기 때문에 처음에는 포기 하고 싶 었 습 니 다.프로젝트 가 사용 되 지 않 았 다 면 이런 소 규모 언어 를 시도 하 는 사람 이 드 물 었 을 것 입 니 다.그러나 습관 이 된 후에 이 몇 년 동안 쓸모없는 자바 코드 를 쓰 는 데 얼마나 많은 시간 을 낭 비 했 는 지 알 게 될 것 입 니 다.Kotlin 은 자바 호 환 을 바탕 으로 개발 효율 을 크게 향상 시 킬 수 있 습 니 다.Kotlin 은 많은 특성 을 가지 고 있 지만 개발 에 있어 빠 른 적응 과 학습 이 더욱 중요 하 다.우 리 는 그 원인 을 모 르 고 사용 하기 시작 하 는 경우 가 많다.마치 우리 가 Retrofit 원 리 를 철저하게 연구 해서 사용 할 수 없 듯 이.그것 이 충분히 안정 적 이 고 성숙 하 며 개발 효율 을 효과적으로 향상 시 키 는 것 은 모두 시도 해 볼 만하 다.저 는 재능 이 없습니다.현재 Kotlin 을 사용 하 는 이 유 는 문법 이 간결 하고 lambda 표현 식 을 지원 하기 때 문 입 니 다.강력 한 when 문법 은 분점 끝 을 쓰 지 않 아 도 됩 니 다.이것 만으로 도 저 는 Kotlin 을 좋아 할 수 있 습 니 다.빈 보안 과 같은 특성 에 대해 서 는 서버 데이터 형식 이 너무 많아 서 크게 느끼 지 못 했 습 니 다.이러한 특성 들 은 실제 응용 에서 모 르 는 사이 에 흡수 되 었 습 니 다.그래서 지금 은 자바 가 작성 한 코드 몇 개 를 만 나 도 적응 하지 못 하고 있 습 니 다.
설명 을 수정 하 다
갑자기 화가 나 서 어리둥절 한 표정 을 짓 는 구 글 IO 의 영향 은 만만 치 않다.남 의 자 제 를 그 르 치지 않도록 수정 하 는 것 이 좋 습 니 다.또한 지난 글 의 기초 지식 도 옮 겨 서 기한 이 지난 링크 를 제거 하 는 것 이 좋 습 니 다.
Kotlin 기본 문법
먼저 Kotlin 문법 을 배 우 는 팁 을 말 하고 코드 를 자바 로 작성 한 다음 코드/Conver Java File to Kotlin File 을 Kotlin 코드 로 변환 하거나 자바 코드 를 Kotlin 파일 로 복사 하면 변환 을 알 리 는 것 도 편리 합 니 다.차이 점 을 쉽게 이해 할 수 있 습 니 다.처음에 습관 에 적응 하지 못 하면 Kotlin 을 좋아 하 게 될 것 이 라 고 믿 습 니 다.
1).정의
자바 의 그 쓰 기 를 잊 어 버 리 지 않 으 면 적응 하지 못 할 것 이다.Kotlin 은 자바 의 사고 에 얽 매 이지 말 아야 할 특성 이 있다.Kotlin 에서 상수 로 val 성명 을 사용 하고 var 성명 을 사용 합 니 다.키 워드 는 앞 에 있 습 니 다.유형 은 콜론:뒤에 분리 되 어 있 고 직접 할당 도 생략 할 수 있 습 니 다.유형 뒤에 물음표 가 있 습 니까?빈 형식 으로 사용 할 수 있 음 을 표시 합 니 다.
상수 val 지연 로 딩 by lazy{},기본 스 레 드 안전 닫 기 스 레 드 안전 lazy(Lazy ThreadSafety Mode.NONE){},변수 var 지연 로 딩 lateinit.

//    int[][][] arrs = new int[3][2][1];
val arrs = Array(3) { Array(2) { IntArray(1) } }
//     
var str: String = "hello"
//        
var str1: String? = null
2).조건
if...else 는 정상적으로 사용 하지만 switch 를 제거 하고 더 강 한 when 으로 대체 합 니 다.when 서브 식 은 Boolean 으로 돌아 가 는 여러 가지 표현 식 일 수 있 습 니 다.

val x = 7
when (x) {
 in 1..10 -> print("x is in the range")
 in validNumbers -> print("x is valid")
 !in 10..20 -> print("x is outside the range")
 else -> print("none of the above")
}
3).순환
while 와 do...while 는 자바 와 다 르 지 않 습 니 다.for 는 큰 변화 가 있 었 고 몇 가지 변종 이 더 생 겼 습 니 다.

val list = ArrayList<String>()
//  for (int i = 0; i < list.size(); i++)
for (i in list.indices) {
  print(list[i])
}
//  for (int i = 2; i < list.size(); i++)
for (i in 2..list.size-1) {
  print(list[i])
}
//  for (int i = list.size(); i >= 0; i--)
for (i in list.size downTo 0) {
  print(list[i])
}
//        
for (item in list) {
  print(item)
}
//   
for((i, item) in list.witnIndex()) {
  print(list[i])
  print(item)
}
//   
list.forEach {
  print(it)
}

list.forEach {
  print(it)
}

list.forEachIndexed { i, s ->
  print(list[i])
  print(s)
}

list.forEachIndexed(object :(Int,String) -> Unit{
  override fun invoke(i: Int, s: String) {
    print(list[i])
    print(s)
  }
})
만능 사칭
Kotlin 에서 사칭:만능 으로 부 르 는 것 은 결코 지나 치지 않다.상수 변수의 형식 설명,함수 의 반환 값,클래스 의 계승 이 필요 합 니 다.

//val    var      
val name: String = "tutu" 
//      
var age = "23"
//fun    
fun getName(): String{
  return "tutu"
}
//   
class UserList<E>(): ArrayList<E>() {
  //...
}
그 밖 에 자바 류 를 사용 할 때 도 특별한 점 이 필요 하 다.Kotlin 은 결국 자바 바이트 코드 로 컴 파일 됩 니 다.자바 류 에 사용 하 는 것 은 필연 적 입 니 다.Kotlin 문법 은 다음 과 같 습 니 다.

val intent = Intent(this, MainActivity::class.java)
클래스
나 누구 거 야@
콜론 을 제외 한 또 다른 중요 한 기호@,내부 클래스 와 익명 내부 클래스 를 사용 하 는 곳 이 많 을 것 입 니 다.게다가 lambda 문법 을 지원 합 니 다.this 와 return 이 가리 키 는 것 이 무엇 인지 알려 주 는 사람 이 없습니다.

class User {
  inner class State{
    fun getUser(): User{
      //  User
      return this@User
    }
    fun getState(): State{
      //  State
      return this@State
    }
  }
}
게 으 름 피 우 는 방법
1).Kotlin 특색
자바 의 getter/setter 방법 은 자동 으로 속성 으로 변환 되 며,Kotlin 속성 호출 에 대응 합 니 다.

public class User {
  private String name;
  private String age;

  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

  public String getAge() {
    return age;
  }

  public void setAge(String age) {
    this.age = age;
  }
}
이러한 자바 클래스 는 Kotlin 에서 이렇게 호출 하기 만 하면 됩 니 다.

val user = User()
//  
user.name = "tutu"
user.age = "23"
//  
val name = user.name
val age = user.age
반대로 Kotlin 의 속성 은 자바 의 getter/setter 방법 을 자동 으로 생 성 합 니 다.자바 에서 호출 하기에 편리 하고 똑 같은 정 의 는 Kotlin 에 있 습 니 다.

class User {
  var name: String? = null
  var age: String? = null
}
우리 의 getter/setter 방법 은 때때로 이렇게 간단 하지 않 습 니 다.이것 은 getter/setter 를 사용자 정의 해 야 합 니 다.다른 줄 은 get()/set(value)방법 을 설정 하여 자바 에서 자주 사용 하 는 단일 예 를 실현 합 니 다.여 기 는 보 여주 기 위해 서 입 니 다.하나의 예 는 Kotlin 에서 더욱 간단 한 방법 으로 이 루어 집 니 다.package 단계 에서 하나의 object 를 만 들 면 됩 니 다.

class User {
  companion object {
    @Volatile var instance: User? = null
      get() {
        if (field == null) {
          synchronized(User::class.java) {
            if (field == null)
              field = User()
          }
        }
        return field
      }
  }

  var name: String? = null
  var age: String? = null
}
사용자 정의 getter/setter 는 field 에 중점 을 두 고 있 습 니 다.자바 의 this 가 현재 클래스 를 가리 키 는 것 과 마찬가지 로 field 는 현재 매개 변 수 를 가리 키 며,직접 매개 변수 이름 인 스 턴 스 를 사용 하 는 것 은 잘못 보고 되 지 않 지만,한 예 로 는 효과 가 없습니다.
2).문자열 템 플 릿
자바 에 서 는 문자열 을 맞 추 는 코드 의 가 독성 이 떨 어 집 니 다.Kotlin 문자열 의 조합 이 매우 간결 해 졌 습 니 다.$뒤에 매개 변수 이름 을 붙 여야 합 니 다.복잡 한 매개 변 수 는{}을 추가 해 야 합 니 다.

val user = User()
//  
user.name = "tutu"
user.age = "23"
//  
val name = user.name
val age = user.age
var userInfo = "name:${user.name}, age:$age"
//    :name:tutu, age:23
3). lambda
처음에는 lambda 가 고 급 스 러 워 서 전혀 알 아 볼 수 없 었 다.사실은 간단 한 것 은 인터페이스 이름,방법 명 과 매개 변수 유형 을 줄 이 고 쓰 지 않 고 하나 더->를 추가 하 는 것 이다.이 점 을 알 면 소개 하지 않 는 다.
새로운 얼굴
1).로드 지연
2)프로 세 스 제어
공 판단
Kotlin 의 빈 안전 설 계 는 성명 이 비어 있 는 매개 변수 에 대해 사용 할 때 빈 판단 처 리 를 해 야 합 니 다.자바 처럼 빈 이상 을 던 지고 필드 를 추가 하 는 두 가지 처리 방식 이 있 습 니 다!!다른 하 나 는 처리 하지 않 고 바로 건 너 뛰 고 필드 뒤에 추가 합 니까?

//     ?     
var age: String? = "23" 
//       
val ageInt = age!!.toInt()
//      
val ages = age?.toInt()
주의 사항
내부 클래스 와 인 자 는 기본적으로 Public 이 고 자바 에 서 는 private 입 니 다.
클래스 머 는 계승 할 수 없다 고 생각 합 니 다(final).계승 할 수 있 으 려 면 open 또는 abstract 로 성명 해 야 합 니 다.
static 키 워드 를 취소 하고 정적 방법 과 매개 변 수 를 copanion object 블록 에 통일 적 으로 기록 합 니 다.
내부 모듈 에서 볼 수 있 는 inner 내부 클래스
이상 은 사용 빈도 가 높 은 문법 에 대한 정리 일 뿐 입 니 다.기본적으로 Kotlin 코드 를 읽 을 수 있 습 니 다.문제 가 있 으 면 Google 에서 신속하게 검색 해 보 세 요.스마트 전환,유형 유도 같은 것 은 사용 후 자 연 스 럽 게 좋아 하 는 것 은 말 할 필요 도 없습니다.물론 이것 은 kotlin 의 기본 문법 일 뿐 자바 가 kotlin 을 빨리 익히 고 깊이 공부 할 수 있 도록 관련 자 료 를 읽 으 십시오.

좋은 웹페이지 즐겨찾기