Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
320 views

Java To Kotlin PDF

This document compares common programming concepts between Java and Kotlin. It shows that Kotlin is interoperable with Java and allows Java code to be easily ported to Kotlin. Some key differences highlighted include Kotlin removing the need for getters/setters by allowing public property access, using more concise syntax for collections, control flows and functions, and adding functionality like type checks and smart casts that improve safety and readability.

Uploaded by

Ankur Anurag
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
320 views

Java To Kotlin PDF

This document compares common programming concepts between Java and Kotlin. It shows that Kotlin is interoperable with Java and allows Java code to be easily ported to Kotlin. Some key differences highlighted include Kotlin removing the need for getters/setters by allowing public property access, using more concise syntax for collections, control flows and functions, and adding functionality like type checks and smart casts that improve safety and readability.

Uploaded by

Ankur Anurag
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 19

Java To Kotlin

Print to Console
Java
1 System.out.print("Amit Shekhar");
2 System.out.println("Amit Shekhar");
Kotlin
1 print("Amit Shekhar")
2 println("Amit Shekhar")
 

Constants and Variables


Java
1 String name = "Amit Shekhar";
2 final String name = "Amit Shekhar";
Kotlin
1 var name = "Amit Shekhar"
2 val name = "Amit Shekhar"
 

Assigning the null value


Java
1 String otherName;
2 otherName = null;
Kotlin
1 var otherName : String?
2 otherName = null
 
Verify if value is null
Java
1 if (text != null) {
2   int length = text.length();
3 }
Kotlin
1 text?.let {
2     val length = text.length
3 }
4 // or simply
5 val length = text?.length
 

Concatenation of strings
Java
1 String firstName = "Amit";
2 String lastName = "Shekhar";
3 String message = "My name is: " + firstName + " " + lastName;
Kotlin
1 var firstName = "Amit"
2 var lastName = "Shekhar"
3 var message = "My name is: $firstName $lastName"
 

New line in string


Java
1 String text = "First Line\n" +
2               "Second Line\n" +
3               "Third Line";
Kotlin
1 val text = """
2         |First Line
3         |Second Line
4         |Third Line
5         """.trimMargin()
 

Ternary Operations
Java
1 String text = x > 5 ? "x > 5" : "x <= 5";
2

3 String message = null;


4 log(message != null ? message : "");
Kotlin
1 val text = if (x > 5)
2               "x > 5"
3            else "x <= 5"
4

5 val message: String? = null


6 log(message ?: "")
 

Bitwise Operators
Java
1 final int andResult  = a & b;
2 final int orResult   = a | b;
3 final int xorResult  = a ^ b;
4 final int rightShift = a >> 2;
5 final int leftShift  = a << 2;
6 final int unsignedRightShift = a >>> 2;
Kotlin
1 val andResult  = a and b
2 val orResult   = a or b
3 val xorResult  = a xor b
4 val rightShift = a shr 2
5 val leftShift  = a shl 2
6 val unsignedRightShift = a ushr 2
 

Check the type and casting


Java
1 if (object instanceof Car) {
2 }
3 Car car = (Car) object;
Kotlin
1 if (object is Car) {
2 }
3 var car = object as Car
4

5 // if object is null
6 var car = object as? Car // var car = object as Car?
 

Check the type and casting (implicit)


Java
1 if (object instanceof Car) {
2    Car car = (Car) object;
3 }
Kotlin
1 if (object is Car) {
2    var car = object // smart casting
3 }
4

5 // if object is null
6 if (object is Car?) {
7    var car = object // smart casting, car will be null
8 }
 

Multiple conditions
Java
if (score >= 0 && score <= 300) { }
Kotlin
if (score in 0..300) { }
 

Multiple Conditions (Switch case)


Java
1 int score = // some score;
2 String grade;
3 switch (score) {
4     case 10:
5     case 9:
6         grade = "Excellent";
7         break;
8     case 8:
9     case 7:
10     case 6:
11         grade = "Good";
12         break;
13     case 5:
14     case 4:
15         grade = "OK";
16         break;
17     case 3:
18     case 2:
19     case 1:
20         grade = "Fail";
21         break;
22     default:
23         grade = "Fail";             
24 }
Kotlin
1 var score = // some score
2 var grade = when (score) {
3     9, 10 -> "Excellent"
4     in 6..8 -> "Good"
5     4, 5 -> "OK"
6     in 1..3 -> "Fail"
7     else -> "Fail"
8 }
 

For-loops
Java
1 for (int i = 1; i <= 10 ; i++) { }
2

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


4

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


6

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


8

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


10

11 for (String item : collection) { }


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

3 for (i in 1 until 10) { }


4

5 for (i in 10 downTo 0) { }
6

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


8

9 for (i in 10 downTo 0 step 2) { }


10

11 for (item in collection) { }


12

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


 

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

3 final Map<Integer, String> keyValue = new HashMap<Integer, Strin


g>();
4 map.put(1, "Amit");
5 map.put(2, "Ali");
6 map.put(3, "Mindorks");
7

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

11 final Map<Integer, String> keyValue = Map.of(1, "Amit",


12                                              2, "Ali",
13                                              3, "Mindorks");
Kotlin
1 val listOfNumber = listOf(1, 2, 3, 4)
2 val keyValue = mapOf(1 to "Amit",
3                      2 to "Ali",
4                      3 to "Mindorks")
 

for each
Java
1 // Java 7 and below
2 for (Car car : cars) {
3   System.out.println(car.speed);
4 }
5

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

9 // Java 7 and below


10 for (Car car : cars) {
11   if (car.speed > 100) {
12     System.out.println(car.speed);
13   }
14 }
15

16 // Java 8+
17 cars.stream().filter(car -> car.speed > 100).forEach(car -> Syst
em.out.println(car.speed));
18 cars.parallelStream().filter(car -> car.speed > 100).forEach(car
-> System.out.println(car.speed));
Kotlin
1 cars.forEach {
2     println(it.speed)
3 }
4

5 cars.filter { it.speed > 100 }


6       .forEach { println(it.speed)}
7

8 // kotlin 1.1+
9 cars.stream().filter { it.speed > 100 }.forEach { println(it.spe
ed)}
10 cars.parallelStream().filter { it.speed > 100 }.forEach { printl
n(it.speed)}
 

Splitting arrays
java
1 String[] splits = "param=car".split("=");
2 String param = splits[0];
3 String value = splits[1];
kotlin
val (param, value) = "param=car".split("=")
 

Defining methods
Java
1 void doSomething() {
2    // logic here
3 }
Kotlin
1 fun doSomething() {
2    // logic here
3 }
 

Variable number of arguments


Java
1 void doSomething(int... numbers) {
2    // logic here
3 }
Kotlin
1 fun doSomething(vararg numbers: Int) {
2    // logic here
3 }
 

Defining methods with return


Java
1 int getScore() {
2    // logic here
3    return score;
4 }
Kotlin
1 fun getScore(): Int {
2    // logic here
3    return score
4 }
5

6 // as a single-expression function
7

8 fun getScore(): Int = score


9

10 // even simpler (type will be determined automatically)


11

12 fun getScore() = score // return-type is Int


 

Returning result of an operation


Java
1 int getScore(int value) {
2     // logic here
3     return 2 * value;
4 }
Kotlin
1 fun getScore(value: Int): Int {
2    // logic here
3    return 2 * value
4 }
5

6 // as a single-expression function
7 fun getScore(value: Int): Int = 2 * value
8

9 // even simpler (type will be determined automatically)


10

11 fun getScore(value: Int) = 2 * value // return-type is int


 

Constructors
Java
1 public class Utils {
2

3     private Utils() {
4       // This utility class is not publicly instantiable
5     }
6

7     public static int getScore(int value) {


8         return 2 * value;
9     }
10

11 }
Kotlin
1 class Utils private constructor() {
2

3     companion object {
4

5         fun getScore(value: Int): Int {


6             return 2 * value
7         }
8

9     }
10 }
11

12 // another way
13

14 object Utils {
15

16     fun getScore(value: Int): Int {


17         return 2 * value
18     }
19

20 }
 

Getters and Setters


Java
1 public class Developer {
2

3     private String name;


4     private int age;
5

6     public Developer(String name, int age) {


7         this.name = name;
8         this.age = age;
9     }
10

11     public String getName() {


12         return name;
13     }
14

15     public void setName(String name) {


16         this.name = name;
17     }
18

19     public int getAge() {


20         return age;
21     }
22

23     public void setAge(int age) {


24         this.age = age;
25     }
26

27     @Override
28     public boolean equals(Object o) {
29         if (this == o) return true;
30         if (o == null || getClass() != o.getClass()) return fals
e;
31

32         Developer developer = (Developer) o;


33

34         if (age != developer.age) return false;


35         return name != null ? name.equals(developer.name) : deve
loper.name == null;
36

37     }
38

39     @Override
40     public int hashCode() {
41         int result = name != null ? name.hashCode() : 0;
42         result = 31 * result + age;
43         return result;
44     }
45

46     @Override
47     public String toString() {
48         return "Developer{" +
49                 "name='" + name + '\'' +
50                 ", age=" + age +
51                 '}';
52     }
53 }
Kotlin
data class Developer(var name: String, var age: Int)
 

Cloning or copying
Java
1 public class Developer implements Cloneable {
2

3     private String name;


4     private int age;
5

6     public Developer(String name, int age) {


7         this.name = name;
8         this.age = age;
9     }
10

11     @Override
12     protected Object clone() throws CloneNotSupportedException {
13         return (Developer)super.clone();
14     }
15 }
16

17 // cloning or copying
18 Developer dev = new Developer("Mindorks", 30);
19 try {
20     Developer dev2 = (Developer) dev.clone();
21 } catch (CloneNotSupportedException e) {
22     // handle exception
23 }
Kotlin
1 data class Developer(var name: String, var age: Int)
2

3 // cloning or copying
4 val dev = Developer("Mindorks", 30)
5 val dev2 = dev.copy()
6 // in case you only want to copy selected properties
7 val dev2 = dev.copy(age = 25)
 

Class methods
Java
1 public class Utils {
2

3     private Utils() {
4       // This utility class is not publicly instantiable
5     }
6

7     public static int triple(int value) {


8         return 3 * value;
9     }
10

11 }
12

13 int result = Utils.triple(3);


Kotlin
1 fun Int.triple(): Int {
2   return this * 3
3 }
4

5 var result = 3.triple()


 

Defining uninitialized objects


Java
Person person;
Kotlin
internal lateinit var person: Person
 

enum
Java
1 public enum Direction {
2         NORTH(1),
3         SOUTH(2),
4         WEST(3),
5         EAST(4);
6

7         int direction;
8

9         Direction(int direction) {
10             this.direction = direction;
11         }
12

13         public int getDirection() {


14             return direction;
15         }
16     }
Kotlin
1 enum class Direction constructor(direction: Int) {
2     NORTH(1),
3     SOUTH(2),
4     WEST(3),
5     EAST(4);
6

7     var direction: Int = 0


8         private set
9
10     init {
11         this.direction = direction
12     }
13 }
 

Sorting List
Java
1 List<Profile> profiles = loadProfiles(context);
2 Collections.sort(profiles, new Comparator<Profile>() {
3     @Override
4     public int compare(Profile profile1, Profile profile2) {
5         if (profile1.getAge() > profile2.getAge()) return 1;
6         if (profile1.getAge() < profile2.getAge()) return -1;
7         return 0;
8     }
9 });
Kotlin
1 val profile = loadProfiles(context)
2 profile.sortedWith(Comparator({ profile1, profile2 ->
3     if (profile1.age > profile2.age) return@Comparator 1
4     if (profile1.age < profile2.age) return@Comparator -1
5     return@Comparator 0
6 }))
 

Anonymous Class
Java
1  AsyncTask<Void, Void, Profile> task = new AsyncTask<Void, Void,
Profile>() {
2     @Override
3     protected Profile doInBackground(Void... voids) {
4         // fetch profile from API or DB
5         return null;
6     }
7

8     @Override
9     protected void onPreExecute() {
10         super.onPreExecute();
11         // do something
12     }
13 };
Kotlin
1 val task = object : AsyncTask<Void, Void, Profile>() {
2     override fun doInBackground(vararg voids: Void): Profile? {
3         // fetch profile from API or DB
4         return null
5     }
6

7     override fun onPreExecute() {


8         super.onPreExecute()
9         // do something
10     }
11 }

You might also like