kotlin 与 java 语法区别

Kotlin学习笔记(二):Kotlin与Java对比

标签: javakotlinandroid语法
155人阅读 评论(0) 收藏 举报
分类:
Kotlin笔记(1)
作者同类文章 X

目录(?)[+]

  1. 基本类型
  2. String字符串表示
  3. 打印操作
  4. 换行操作
  5. 常量和变量定义
  6. 声明静态常量方法
  7. 条件表达式
    1. if语句
    2. 三元运算符
    3. case表达
  8. for循环迭代操作
  9. 集合操作
  10. 遍历集合和筛选操作
  11. 声明方法
  12. 构造方法
  13. 生成get跟set方法

本篇文章我们将通过类比Java语法的方式学习Kotlin的基本语法和常用操作

基本类型

Java Kotlin 位宽
double Double 64
float Float 32
long Long 64
int Int 32
short Short 16
byte Byte 8

注: char在Kotlin不是基本数据类型,是独立的数据类型

String字符串表示

  • Java
String name = "Java";
String sex = "Man";
String link = "name is :" + name + ",sex is:" + sex; 
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3
  • Kotlin

字符串可以包含模板表达式,即可求值的代码片段,并将其结果连接到字符串中。一个模板表达式由一个 $ 开始并包含另一个简单的名称

val name = "Kotlin"
val sex = "man"
val link = "name is $name,sex is: $sex"
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

打印操作

  • Java
System.out.print("Java");
System.out.println("Java");
  • 1
  • 2
  • 1
  • 2
  • Kotlin
print("Kotlin")
println("Kotlin")
  • 1
  • 2
  • 1
  • 2

换行操作

  • Java
String text = "第一行\n第二行\n第三行\n";
  • 1
  • 1
  • Kotlin

有两种类型的字符串字面量:

  1. 一种是可以带分割符的。跟Java一样
  2. 一种是不可以包含分割符但可以包含其它字符。 由三个引号包裹(“”“)
val text1 = "第一行\n第二行\n第三行\n"val text = """
|第一行
|第二行
|第三行
""".trimMargin()   //去除空格
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

常量和变量定义

  • Java
final String s = "Java";
String name = "Java";
int num = 5;
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3
  • Kotlin

var 声明变量
val 声明常量

val s = "Java"
var name = "Kotlin"
var num = 5
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

声明静态常量、方法

  • Java
static final String NAME = "name";
static final int SEX = 0;

static void Test() { }
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4
  • Kotlin

声明静态常量或者方法时,都是使用如下方式声明

companion object {
    internal val NAME = "name"
    internal val SEX = 0

    fun Test() { }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

条件表达式

if语句

  • Java
if( a == b){}
if( a>=0 && a <=10){}
if( a>0 && a <10){}
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3
  • Kotlin
if( a== b){}
if( a in 0..10){}        // 也可以按照Java写法 if( a>=0 && a <=10){}
if(a in 1 until 10)      //也可以按照Java写法 if( a>0 && a <10){}
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

参考Ranges使用

三元运算符

  • Java
int num = a > b ? a :b;
  • 1
  • 1
  • Kotlin
val num = if (a > b) a else b
  • 1
  • 1

case表达

  • Java
String s;
switch(a){
    case 0:
        s =  "a = 0";
        break;
    case 1:
        s = "a = 1";
        break;
    default:
        s = "default";
        break;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • Kotlin
val s = when(a){
    0 -> "a = 0"
    1 -> "a = 1"
    else -> "default"
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

for循环迭代操作

  • Java
for(int i = 0; i <= 10; i++){}

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

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

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

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

for (String s : listString) {}

for (Map.Entry entry: map.entrySet()) {}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • Kotlin

在下面使用的操作使用倒了Kotlin自带的Ranges使用

  1. in 指定范围
  2. until 不包含
  3. downto 倒序
  4. step 指定步数跳跃
for(i in 0.. 10){}

for(i in 0 until 10){}

for(i in 10 downTo 0){}

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

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

for(item in listString){}

for ((key, value) in map) { }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

参考Ranges使用

集合操作

  • Java
List<String> listString = Arrays.asList("a","b","c");
listString.add("d");

Map<String,String> map = new HashMap<>();
map.put("a","1");
map.put("b","2");
map.put("c","3");
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • Kotlin
var listString = listOf("a","b","c")
listString.add("d")

var map = mapOf("a" to "1",
               "b" to "2",
               "c" to "3")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

遍历集合和筛选操作

  • Java
for (String s : listString){
     System.out.println(s);
}

//筛选
for (String s: listString){
    if(s.equals("a")){
        System.out.println(s);
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • Kotlin
listString.forEach {
    println(it)
}

//筛选
listString.filter{ it.equals ("a") }
        .forEach{
            println(it)
        }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

声明方法

  • 不带返回值方法

    • Java
    void Test(){ }
    
    void Test(int a, String b){ }
    • 1
    • 2
    • 3
    • 1
    • 2
    • 3
    • Kotlin
    fun Test(){}
    
    fun Test(a : Int, b : String) { }
    • 1
    • 2
    • 3
    • 1
    • 2
    • 3
  • 带返回值方法

    • Java
    int Test() { return 0;}
    
    int Test(int a, int b){
        if(a > b){
            return a;
        }
        return b;
    }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • Kotlin
    fun Test() :Int { return 0}
    
    fun Test(a :Int, b :Int) :Int{
        if( a > b ){
        }
        return b
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

构造方法

  • Java
class Test{
    public Test(){ }
    public Test(int a, int b){ }
}
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4
  • Kotlin
class Test {
    constructor() {}
    constructor(a: Int, b: Int) {}
}
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

或者这样写

class Test constructor(){   //constructor 可省略
    constructor(a: Int, b: Int) : this() {}
}
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

生成get跟set方法

  • Java
class Test{
    String a;
    int b;

    public Test(String a, int b){
        this.a = a;
        this.b = b;
    }

    public String getA() {
        return a;
    }

    public void setA(String a) {
        this.a = a;
    }

    public int getB() {
        return b;
    }

    public void setB(int b) {
        this.b = b;
    }

}
  • 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
  • 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
  • Kotlin

只需一行代码

data class Test(val a: String, val b: Int){ }
  • 1
  • 1

看完上面的文章,我们可以发现Kotlin语法比Java更加的直观和便捷,但是还是需要一段时间来适应Kotlin的语法习惯。

0
0
 
 

  相关文章推荐
  • Kotlin学习笔记(二)——示例篇三
  • Java线程池学习笔记二
  • Kotlin学习笔记(3)- 语法
  • JVM学习笔记(二)------Java代码编译和执行的整个过程(转)
  • android kotlin 学习笔记基础篇(一)
  • (事物学习笔记二) 对Java事物的理解
  • Kotlin学习笔记(二)循环,跳转
  • JVM学习笔记(二)------Java代码编译和执行的整个过程
  • kotlin学习笔记001——kotlin简介
  • Java Servlet学习笔记(二)初识Filter

你可能感兴趣的:(java)