Diary of Duc

Kotlin với Java

2018-01-06

Trước tiên mình sẽ nói sơ qua về ngôn ngữ này. Kotlin ra mắt lần đầu năm 2011 do JetBrains phát triển. Có rất nhiều ưu điểm so với Java và thay thế Java để trở thành ngôn ngữ lập trình chính cho Android.

Koltin sử dụng IntellijI DEA , đây chính là IDE cây nhà lá vườn do JetBrains phát triển.

Kotlin cũng tương tự như Java, nếu bạn đã biết Java thì rất dễ học Kotlin.

Init

1
2
3
4
5
6
7
8
9
10
11
12
13
//java
String name = "Emily";
String[] name_aray = {"Emily", "John", "Sam", "Dom"};
String get_name() { ... };
public static void main(String[] args) { ... };

//Kotlin
var name: String = "Emily"
// hoặc
var name = "Emily"
var name_array: Array<String> = arrayOf("Emily", "John", "Sam", "Dom")
fun get_name(): String { ... }
fun main(args: Array<String>) { ... }

Khởi tạo trong Kotlin rất khác so với Java, kiểu dữ liệu được khai báo sau dấu ” : ”.

Khởi tạo một hàm phải bắt đầu bằng từ khóa fun.

Class, constructor

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
//java
public class People {
public String name;

People(String user_name){
this.name = user_name;
}

public String get_name(){
return this.name;
}

public static void main(String[] args) {
People obj = new People("Emily");
System.out.print(obj.get_name());
}
}

//kotlin
class People (var user_name: String){
fun get_name(): String {
return user_name
}
}

fun main(args: Array<String>) {
val obj = People("Emily")
print(obj.get_name())

}

Trong đoạn code trên có sử dụng thằng val , nó khác với var là ở chỗ một khi biến đã được khởi tạo thì không thể thay đổi giá trị.

Trong Kotlin hàm main được khai báo tách biệt với class, khác hẳn so với Java.

Khởi tạo 1 đối tượng mới không cần dùng từ khóa new.

Tạo constructor trong Kotlin dễ dàng hơn Java rất nhiều, thay vì phải viết hàm tạo lập như Java thì chỉ cần khai báo biến và truyền vào tham số, giống như truyền tham số vào 1 hàm vậy.

Loop

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
//java
public class People {
public String[] name;

People(String[] user_name){
this.name = user_name;
}

public void get_name(){
for(int i=0; i<name.length; i++){
System.out.print(name[i] + " ");
}
}

public static void main(String[] args) {
String[] name_array = {"Emily", "John" ,"Sam", "Dom"};
People obj = new People(name_array);
obj.get_name();
}
}

//kotlin
class People (var user_name: Array<String>){
fun get_name() {
for(i in user_name.indices){
print(user_name[i] + " ")
//hoac don gian hon
for(i in user_name){
print(i + " ")
}
}
}

fun main(args: Array<String>) {
var name_array: Array<String> = arrayOf("Emily", "John", "Sam", "Dom")
val obj = People(name_array)
obj.get_name()
}

Vòng lặp for trong Kotlin thay thế hoàn toàn cho foreach

Trong Kotlin muốn tăng từ 0 tới n hoặc giảm:

1
2
3
4
5
6
for(i in 0 until n){ // i++
// code ...
}
for(i in n downTo 0){ //i--
// code ...
}


when (not switch … case)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
//java
public class People {
public String name;

People(String user_name){
this.name = user_name;
}

public void hello_name(){
switch(name){
case "John":
System.out.print("Hello " + name);
break;
default:
System.out.print("Hey! ");
System.out.print("Hello you");
}
}

public static void main(String[] args) {
People obj = new People("John");
obj.hello_name();
}
}

//kotlin
class People (var user_name: String){
fun hello_name() {
when(user_name){
"John" -> print("Hello " + user_name)
else -> { // block lệnh
print("Hey! ")
print("Hello you")
}
}
}
}

fun main(args: Array<String>) {
val obj = People("John")
obj.hello_name()
}

Trong Kotlin sẽ không còn cặp switchcase huyền thoại nữa, thay vào đó chỉ dùng duy nhất when, tác dụng của nó giống như switchcase.

Ifelse, while, dowhile thì như Java thôi.

Tags: kotlin

URL QR