原文来自https://github.com/MindorksOpenSource/from-java-to-kotlin
本文也只是简单比较kotlin与java的不同之处,实际学习kotlin还是去官网学习比较好。我个人学习的一个网站贴出来:Kotlin中文网
Java
System.out.print("Amit Shekhar");
System.out.println("Amit Shekhar");
Kotlin
print("Amit Shekhar")
println("Amit Shekhar")
Java
String name = "Amit Shekhar";
final String name = "Amit Shekhar";
Kotlin
var name = "Amit Shekhar"
val name = "Amit Shekhar"
Java
final String name = null;
String otherName;
otherName = null;
val name : String? = null
var otherName : String?
otherName = null
Java
if(text != null){
int length = text.length();
}
val length = text?.length
Java
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"
Java
String text = "First Line\n" +
"Second Line\n" +
"Third Line";
val text = """
|First Line
|Second Line
|Third Line
""".trimMargin()
Java
String text = x > 5 ? "x > 5" : "x <= 5";
val text = if (x > 5)
"x > 5"
else "x <= 5"
Java
if(object instanceof Car){
}
Car car = (Car) object;
if (object is Car) {
}
var car = object as Car
Java
if(object instanceof Car){
Car car = (Car) object;
}
if (object is Car) {
var car = object // smart casting
}
Java
if(score >= 0 && score <= 300 ){}
if (score in 0..300) { }
Java
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 (int i = 1; i <= 10 ; i++) { }
for (int i = 1; i <= 10 ; i+=2) { }
for (String item : collection) { }
for (Map.Entry entry: map.entrySet()) { }
for (i in 1..10) { }
for (i in 1..10 step 2) {}
for (item in collection) {}
for ((key, value) in map) {}
Java
final List listOfNumber = Arrays.asList(1, 2, 3, 4);
final Map keyValue = new HashMap();
map.put(1, "Amit");
map.put(2, "Ali");
map.put(3, "Mindorks");
val listOfNumber = listOf(1, 2, 3, 4)
val keyValue = mapOf(1 to "Amit",
2 to "Ali",
3 to "Mindorks")
for (Car car : cars) {
System.out.println(car.speed);
}
for (Car car : cars) {
if(cars.speed > 100) {
System.out.println(car.speed);
}
}
cars.forEach {
println(it.speed)
}
cars.filter { it.speed > 100 }
.forEach { println(it.speed)}
Java
void doSomething() {
// logic here
}
fun doSomething() {
// logic here
}
Java
int getScore() {
// logic here
return score;
}
fun getScore(): Int {
// logic here
return score
}
Java
int getScore(int value) {
// logic here
return 2 * value;
}
fun getScore(value: Int): Int {
// logic here
return 2 * value
}
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
}
}
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)
Java
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()
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.