Kotlin开发知识Kotlin编程

Kotiln学习

2017-06-01  本文已影响59人  I_Gisvity

From Java To Kotlin

MindorksMindorks
Mindorks CommunityMindorks Community

打印日志

System.out.print("Amit Shekhar");
System.out.println("Amit Shekhar");
print("Amit Shekhar")
println("Amit Shekhar")

常量与变量

String name = "Amit Shekhar";
final String name = "Amit Shekhar";
var name = "Amit Shekhar"
val name = "Amit Shekhar"

null声明

String otherName;
otherName = null;
var otherName : String?
otherName = null

空判断

if (text != null) {
    int length = text.length();
}
text?.let {
    val length = text.length
}

字符串拼接

String firstName = "Amit";
String lastName = "Shekhar";
String message = "My name is: " + firstName + " " + lastName;
val firstName = "Amit"
val lastName = "Shekhar"
val message = "My name is: $firstName $lastName"

换行

String text = "First Line\n" +
              "Second Line\n" +
              "Third Line";
val text = """
        |First Line
        |Second Line
        |Third Line
        """.trimMargin()

三元表达式

String text = x > 5 ? "x > 5" : "x <= 5";
val text = if (x > 5)
              "x > 5"
           else "x <= 5"

类型判断和转换 (声明式)

if (object instanceof Car) {
}
Car car = (Car) object;
if (object is Car) {
}
var car = object as Car

类型判断和转换 (隐式)

if (object instanceof Car) {
   Car car = (Car) object;
}
if (object is Car) {
   var car = object // smart casting
}

多重条件

if (score >= 0 && score <= 300) { }
if (score in 0..300) { }

更灵活的case语句

int score = // some score;
String grade;
switch (score) {
    case 10:
    case 9:
        grade = "Excellent";
        break;
    case 8:
    case 7:
    case 6:
        grade = "Good";
        break;
    case 5:
    case 4:
        grade = "Ok";
        break;
    case 3:
    case 2:
    case 1:
        grade = "Fail";
        break;
    default:
        grade = "Fail";
}
var score = // some score
var grade = when (score) {
    9, 10 -> "Excellent" 
    in 6..8 -> "Good"
    4, 5 -> "Ok"
    in 1..3 -> "Fail"
    else -> "Fail"
}

for循环

for (int i = 1; i <= 10 ; i++) { }

for (int i = 1; i < 10 ; i++) { }

for (int i = 10; i >= 0 ; i--) { }

for (int i = 1; i <= 10 ; i+=2) { }

for (int i = 10; i >= 0 ; i-=2) { }

for (String item : collection) { }

for (Map.Entry<String, String> entry: map.entrySet()) { }
for (i in 1..10) { }

for (i in 1 until 10) { }

for (i in 10 downTo 0) { }

for (i in 1..10 step 2) { }

for (i in 10 downTo 1 step 2) { }

for (item in collection) { }

for ((key, value) in map) { }

更方便的集合操作

final List<Integer> listOfNumber = Arrays.asList(1, 2, 3, 4);

final Map<Integer, String> keyValue = new HashMap<Integer, String>();
map.put(1, "Amit");
map.put(2, "Ali");
map.put(3, "Mindorks");

// Java 9
final List<Integer> listOfNumber = List.of(1, 2, 3, 4);

final Map<Integer, String> keyValue = Map.of(1, "Amit",
                                             2, "Ali",
                                             3, "Mindorks");
val listOfNumber = listOf(1, 2, 3, 4)
val keyValue = mapOf(1 to "Amit",
                     2 to "Ali",
                     3 to "Mindorks")

遍历

// Java 7 and below
for (Car car : cars) {
  System.out.println(car.speed);
}

// Java 8+
cars.forEach(car -> System.out.println(car.speed));

// Java 7 and below
for (Car car : cars) {
  if (car.speed > 100) {
    System.out.println(car.speed);
  }
}

// Java 8+
cars.stream().filter(car -> car.speed > 100).forEach(car -> System.out.println(car.speed));
cars.forEach {
    println(it.speed)
}

cars.filter { it.speed > 100 }
      .forEach { println(it.speed)}

方法定义

void doSomething() {
   // logic here
}

void doSomething(int... numbers) {
   // logic here
}
fun doSomething() {
   // logic here
}

fun doSomething(vararg numbers: Int) {
   // logic here
}

带返回值的方法

int getScore() {
   // logic here
   return score;
}
fun getScore(): Int {
   // logic here
   return score
}

// as a single-expression function

fun getScore(): Int = score

无结束符号

int getScore(int value) {
    // logic here
    return 2 * value;
}
fun getScore(value: Int): Int {
   // logic here
   return 2 * value
}

// as a single-expression function

fun getScore(value: Int): Int = 2 * value

constructor 构造器

public class Utils {

    private Utils() { 
      // This utility class is not publicly instantiable 
    }
    
    public static int getScore(int value) {
        return 2 * value;
    }
    
}
class Utils private constructor() {

    companion object {
    
        fun getScore(value: Int): Int {
            return 2 * value
        }
        
    }
}

// other way is also there

object Utils {

    fun getScore(value: Int): Int {
        return 2 * value
    }

}

Get Set 构造器

public class Developer {

    private String name;
    private int age;

    public Developer(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;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        Developer developer = (Developer) o;

        if (age != developer.age) return false;
        return name != null ? name.equals(developer.name) : developer.name == null;

    }

    @Override
    public int hashCode() {
        int result = name != null ? name.hashCode() : 0;
        result = 31 * result + age;
        return result;
    }

    @Override
    public String toString() {
        return "Developer{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
data class Developer(val name: String, val age: Int)

public class Utils {

    private Utils() { 
      // This utility class is not publicly instantiable 
    }
    
    public static int triple(int value) {
        return 3 * value;
    }
    
}

int result = Utils.triple(3);

fun Int.triple(): Int {
  return this * 3
}

var result = 3.triple()

你需要知道一些比较重要的事

如果你觉得这个项目对你有帮助 :heart:

Check out Mindorks awesome open source projects here

License

   Copyright (C) 2017 MINDORKS NEXTGEN PRIVATE LIMITED

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
上一篇 下一篇

猜你喜欢

热点阅读