自从谷歌 I/O 2017 宣布将支持 Kotlin 作为 Android 开发的 First-Class 语言,相信各位程序员的朋友圈都被 Kotlin 的消息轰炸了吧,支持 Java 的 "守旧派" 认为 Java 将稳坐霸主地位不动摇,支持 Kotlin 的 "维新派" 认为 Kotlin 很可能会把 Java 拉下马。其实,笔者认为新语言的出现对于程序员来说并不是一件新鲜事儿,程序员始终践行着 "活到老,学到老",真正能够对程序员产生影响的新语言的使用和性能。
GitHub 用户 amitshekhariitbhu 在 GitHub 上贴图 分享了 Java 和 Kotlin 的语法区别,下面我们就一起来看一下吧!
- 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"
- 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) { }
- 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++) { }
- 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
- }
- fun doSomething() {
- // logic here
- }
- void doSomething(int... numbers) {
- // 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
- 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(var name: String,
- var 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()
来源: http://www.tuicool.com/articles/fm6bUzF