코 틀린 BASIC : 자바 구문 다른 표현에 비해 코 틀린

사설

        구글은 최근 총회는 코 틀린 될 널리 자바에 비해 장점을 강조, 결국 미래의 응용 프로그램을 확장됩니다, 그래서 우리는 코 틀린를 배울 수있는 유일한 방법이되었다 강조했다. 어느 날 거물까지이 생각은 구덩이 이하 밟았, 또는 우리가 너무 늦게, 결국 배울 후 개발에 사용하고있는 경우에, 우리는 여전히 시간이 에너지 배우고 실용적인 지식의 발전에 우선 순위를 부여 왼쪽으로 지금 우리는 다른 뒤에 파업 또는 따를 수 있습니다.

사물

자바 표현

MainActivity.this

코 틀린 문구

this@MainActivity

범주

자바 표현

MainActivity.class

코 틀린 문구

MainActivity::class.java

상속

자바 표현

public class MainActivity extends AppCompatActivity {
    
}

코 틀린 문구 (코 틀린에서이 클래스에서 상속 개방 키워드를 수정해야합니다)

class MainActivity : AppCompatActivity() {
    
}

변수

자바 표현

Intent intent = new Intent();

코 틀린 문구

var intent = Intent()

상수

자바 표현

final String text = "";

코 틀린 문구

val text = ""

const 정적

자바 표현

public class MainActivity extends AppCompatActivity {

    static final String text = "";
}

(상기 카테고리에 정의 된 정적 변수를 만들어 주) 코 틀린 문구

const val text = ""

class MainActivity : AppCompatActivity() {

}

정의 방법

자바 표현

public void test(String message) {

}

코 틀린 문구 (같은 효과 단위 무효)

fun test(message : String) : Unit {

}

// 在 Kotlin 可以省略 Unit 这种返回值
fun test(message : String) {

}

오버로드 방법

자바 표현

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }
}

코 틀린 문구

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
    }
}

기본 데이터 유형

자바 표현

int i = 1;
long l = 2;
boolean b = true;
float f = 0;
double d = 0;
char c = 'A';
String s = "text";

코 틀린 문구

var i : Int = 1
var l : Long = 2
var b : Boolean = true
var f : Float = 0F
var d : Double = 0.0
var c : Char = 'A'
var s : String = "text"

// 更简洁点可以这样,自动推倒类型
var i = 1
var l = 2
var b = true
var f = 0F
var d = 0.0
var c = 'A'
var s = "text"

비교 유형

자바 표현

if ("" instanceof String) {

}

코 틀린 문구

if ("" is String) {

}

변환 작업

자바 표현

int number = 100;
System.out.println(String.format("商品数量有%d", number));

코 틀린 문구

var number = 100
println("商品数量有${number}")

// 换种简洁的写法
var number = 100
println("商品数量有$number")

// 如果不想字符串被转义可以使用\$
var number = 100
println("商品数量有\$number")

문자열 비교

자바 표현

String s1 = "text";
String s2 = "text";
if (s1.equals(s2)) {
    
}

코 틀린 문구 (코 틀린는 비교, 문자열 비교를 최적화하거나 다른 유형의 객체를 사용하여 작성하는 방법과 동일 경우)

var s1 = "text"
var s2 = "text"
if (s1 == s2) {

}

배열

자바 표현

int[] array1 = {1, 2, 3};
float[] array2 = {1f, 2f, 3f};
String[] array3 = {"1", "2", "3"};

코 틀린 문구

val array1 = intArrayOf(1, 2, 3)
val array2 = floatArrayOf(1f, 2f, 3f)
val array3 = arrayListOf("1", "2", "3")

순환

자바 표현

String[] array = {"1", "2", "3"};

for (int i = 0; i < array.length; i++) {
    System.out.println(array[i]);
}

코 틀린 문구

val array = arrayListOf("1", "2", "3")

for (i in array.indices) {
    println(array[i])
}

첨자주기

자바 표현

String[] array = {"1", "2", "3"};

for (int i = 1; i < array.length; i++) {
    System.out.println(array[i]);
}

코 틀린 문구 (코 틀린에서 언급 한 부분의 표현)

val array = arrayListOf("1", "2", "3")

for (i in IntRange(1, array.size - 1)) {
    println(array[i])
}

// 换种更简洁的写法
val array = arrayListOf("1", "2", "3")

for (i in 1..array.size - 1) {
    println(array[i])
}

// 编译器提示要我们换种写法
val array = arrayListOf("1", "2", "3")

for (i in 1 until array.size) {
    println(array[i])
}

수석주기

자바 표현

String[] array = {"1", "2", "3"};

for (String text : array) {
    System.out.println(text);
}

코 틀린 문구

val array = arrayListOf("1", "2", "3")

for (text in array) {
    println(text)
}

결정

자바 표현

int count = 1;

switch (count) {
    case 0:
        System.out.println(count);
        break;
    case 1:
    case 2:
        System.out.println(count);
        break;
    default:
        System.out.println(count);
        break;
}

코 틀린 문구

var count = 1

when (count) {
    0 -> {
        println(count)
    }
    in 1..2 -> {
        println(count)
    }
    else -> {
        println(count)
    }
}

var count = 1

// 换种更简洁的写法
when (count) {
    0 -> println(count)
    in 1..2 -> println(count)
    else -> println(count)
}

생성자

자바 표현

public class MyView extends View {

    public MyView(Context context) {
        this(context, null);
    }

    public MyView(Context context, @Nullable AttributeSet attrs) {
        this(context, attrs, 0);
    }

    public MyView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }
}

코 틀린 문구

class MyView : View {

    constructor(context : Context) : this(context, null) {

    }

    constructor(context : Context, attrs : AttributeSet?) : this(context, attrs, 0) {

    }

    constructor(context : Context, attrs : AttributeSet?, defStyleAttr : Int) : super(context, attrs, defStyleAttr) {

    }
}

// 换种更简洁的写法
class MyView : View {

    constructor(context : Context) : this(context, null)

    constructor(context : Context, attrs : AttributeSet?) : this(context, attrs, 0)

    constructor(context : Context, attrs : AttributeSet?, defStyleAttr : Int) : super(context, attrs, defStyleAttr)
}

// 只有一种构造函数的还可以这样写
class MyView(context: Context?) : View(context) {

}

클래스 만들기

자바 표현

public class Person {

    String name;
    int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

Person person = new Person("Android轮子哥", 100);
person.setName("HJQ");
person.setAge(50);
System.out.println("name: " + person.getName() + ", age: " + person.getAge());

코 틀린 문구 (메소드 세트 멤버 변수를 노출하지 않으려는 경우는 var에 발을 변경할 수 있습니다)

class Person {

    var name : String? = null
    get() = field
    set(value) {field = value}

    var age : Int = 0
    get() = field
    set(value) {field = value}
}

// 换种更简洁的写法
class Person(var name : String, var age : Int)

var person = Person("Android轮子哥", 100)
person.name = "HJQ"
person.age = 50
println("name: {$person.name}, age: {$person.age}")

민영화 설정 방법

자바 표현

public class Person {

    String name;
    int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

    private void setAge(int age) {
        this.age = age;
    }
}

코 틀린 문구

class Person {

    var name : String? = null
    private set

    var age : Int = 0
    private set
}

민영화 get 메소드

자바 표현

public class Person {

    String name;
    int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    private String getName() {
        return name;
    }

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

    private int getAge() {
        return age;
    }

    private void setAge(int age) {
        this.age = age;
    }
}

코 틀린 문구

class Person {

    private var name : String? = null

    private var age : Int = 0
}

열거

자바 표현

enum Sex {

    MAN(true), WOMAN(false);

    Sex(boolean isMan) {}
}

코 틀린 문구

enum class Sex (var isMan: Boolean) {

    MAN(true), WOMAN(false)
}

인터페이스

자바 표현

public interface Callback {
    void onSuccess();
    void onFail();
}

코 틀린 문구 (코 틀린 인터페이스 방법은 자신을 달성 할 수있다, 더 이상이 입증되지 않습니다)

interface Callback {
    fun onSuccess()
    fun onFail()
}

익명 내부 클래스

자바 표현

new Callback() {

    @Override
    public void onSuccess() {
        
    }

    @Override
    public void onFail() {

    }
};

코 틀린 문구

object:Callback {

    override fun onSuccess() {
        
    }

    override fun onFail() {
        
    }
}

내부 클래스

자바 표현

public class MainActivity extends AppCompatActivity {

    public class MyTask {

    }
}

코 틀린 문구

class MainActivity : AppCompatActivity() {

    inner class MyTask {
        
    }
}

클래스 내부 클래스는 같은 이름의 외부 변수에 접근하기

자바 표현

String name = "Android轮子哥";

public class MyTask {

    String name = "HJQ";

    public void show() {
        System.out.println(name + "---" + MainActivity.this.name);
    }
}

코 틀린 문구

var name = "Android轮子哥"

inner class MyTask {

    var name = "HJQ"

    fun show() {
        println(name + "---" + [email protected])
    }
}

추상 클래스

자바 표현

public abstract class BaseActivity extends AppCompatActivity implements Runnable {

    abstract void init();
}

코 틀린 문구

abstract class BaseActivity : AppCompatActivity(), Runnable {

    abstract fun init()
}

정적 변수 및 방법

자바 표현

public class ToastUtils {

    public static Toast sToast;

    public static void show() {
        sToast.show();
    }
}

합니다 (코 틀린 컴패니언 객체 호출이 실시 예에서) 코 틀린 문구

companion object ToastUtils {

    var sToast : Toast? = null

    fun show() {
        sToast!!.show()
    }
}

변수 매개 변수

자바 표현

public int add(int... array) {
    int count = 0;
    for (int i : array) {
        count += i;
    }
    return count;
}

코 틀린 문구

fun add(vararg array: Int) : Int {
    var count = 0
    //for (i in array) {
    //    count += i
    //}
    array.forEach {
        count += it
    }
    return count
}

제네릭

자바 표현

public class Bean<T extends String> {

    T data;
    public Bean(T t) {
        this.data = t;
    }
}

Bean<String> bean = new Bean<>("666666");

코 틀린 문구

class Bean<T : Comparable<String>>(t: T) {
    var data = t
}

var bean = Bean<String>("666666")

// 换种更简洁的写法
var bean = Bean("666666")

구성 코드 블록

자바 표현

public class MainActivity extends AppCompatActivity {

    int number;

    {
        number = 1;
    }
}

코 틀린 문구

class MainActivity : AppCompatActivity() {

    var number = 0

    init {
        number = 1
    }
}

정적 코드 블록

자바 표현

public class MainActivity extends AppCompatActivity {

    static int number;

    static {
        number = 1;
    }
}

코 틀린 문구

class MainActivity : AppCompatActivity() {

    companion object {
        
        var number = 0
        
        init {
            number = 1
        }
    }
}

블록에있어서

자바 표현

void test(){
    {
        int a = 1;
    }
}

코 틀린 문구

fun test() {
    run {
        var a =1
    }
}

가시성 수정

자바 문구 (기본값은 기본값)

수정 효과
공공의 모든 클래스 표시
보호 눈에 보이는 서브 클래스
태만 같은 패키지 보이는 클래스에서
은밀한 단지 자신의 클래스에 표시

코 틀린 문구 (기본값은 public입니다)

수정 효과
공공의 모든 클래스 표시
내부의 동일한 카테고리 모듈 아래 보이는
보호 눈에 보이는 서브 클래스
은밀한 단지 자신의 클래스에 표시


 

추천

출처blog.csdn.net/P876643136/article/details/90123284