kotlin语言学习03 ——kotlin语法与java不同点

kotlin语法与java不同点

注意 :
本小节的语法主要是讲和java不同的地方,这样可以调高学习效率

一、kotlin变量和常量的定义

1、常量的定义,关键字val

1.1、示例:

val a: Int = 1

val在kotlin中相当于Java中的final,我们可以看到使用val定义后的 ‘a’,不能再次赋值,会报错。
val定义常量

1.2、kotlin中使用了val定义之后,虽然不能对再次,但是可以修改val指向内容进行修改

fun main() {
    // 给m一个整形数组
    val m = intArrayOf(1, 2, 3)
    // 修改数组中 第一个位置的值 的值
    m.set(0, 4)

    for (it in m) {
        print(it)
        print(" ")
    }
    // 4 2 3
}

2、变量的定义,关键字 var

示例:

/**
 * @var : 常量的定义
 */
fun variableDefine() {
    var b: Int = 5
    b = 7
    println(b)
}

使用var关键字定义常量
在定义变量时候,也可以不定义类型,通过类型推断可以确定值的类型。

var b = 5

二、kotlin注释的使用

kotlin的注释和java基本一致,不同的是,Java中的块注释不允许嵌套,而kotlin是允许注释嵌套的。
kotlin注释

三、kotlin的类型赋值

在Java中可以允许小范围的值赋值给大范围的值,
例如: byte —> int
但是在kotlin中是不允许的,只允许相同类型之间的赋值。
示例:

/**
 * 类型赋值
 */
fun typeSssignment() {
    var a: Int = 10
    var b: Byte = 20
    a = b
}

kotlin直接类型赋值报错
我们可以看到IDEA报错并提示,如果需要赋值的话就需要转换后再赋值。

a = b.toInt()

四、kotlin函数定义

kotlin中函数的定义格式和Java中也有很大的不同。

1、kotlin主函数

在kotlin新的语法中,主函数可以省去括号中的参数。

fun main() {
    println("hello world")
}

2、函数定义

1、kotlin 定义一个函数求两个数之和

/**
 * TODO : 定义函数求两个数之和
 */
fun sum(a: Int, b: Int): Int {
    return a + b
}

我们可以发现kotlin中类型的定义是: 变量 : 类型
函数的返回值则是: 函数名 : 值

2、对上面的代码进行简化

fun sum2(a: Int, b: Int) = a + b

上面通过lambda方法进行简化,a 加 b 之和的类型通过推断的方式得出。

3、定义一个没有返回结果的函数

// TODO: 一个函数不返回结果,可以加上Unit或者直接省略
fun noResult(a: Int, b: Int): Unit {
    println(a + b)
}

五、kotlin字符串中打印参数

1、在Java中我们可以使用字符串拼接的形式打印参数,但是会在kotlin中报错。
字符串拼接变量报错

2、使用 ’ $ ’ 符号取值
字符串中使用 $ 符号取值
在kotlin中可以使用 $ 符号读取字符串中变量的值。
在kotlin不能不同类型的数值用 + 拼接的原因是,kotlin不能进行不同类型的转换。

六、kotlin包的概念

1、kotlin 包的概念是逻辑上的,在java中包的位置必须跟磁盘的位置一直,但是在kotlin中不是这样
修改包的名称不会报错
以上程序也可以正常的运行,但是为了编码上的清晰,我们还是和Java中包的概念一致。

2、kotlin在使用函数的时候,导入函数所在的包即可。

例如:
kotlin使用函数时导包

3、kotlin在函数调用的时候可以给函数重新命名,使用 as 关键字。
kotlin给包中的函数重命名

七、kotlin流程控制

kotlin的流程控制相比Java有很大的简化的地方

1、if–else 的使用

举例:求两个数的最大值,并且赋值。
在之前的做法

fun main() {
    var a = 10
    var b = 20

    var max: Int
    var min: Int

    // TODO : 计算 两个数中的最大值
    if (a > b) {
        max = a
        min = b
    }else {
        max = b
        min = a
    }
    println("max = $max , min = $min ")
    
}

在kotlin中可以这样用

/**
 * Kotlin中的流程控制
 */
fun main() {
    var a = 10
    var b = 20

    var max = if (a > b) a else b
    var min = if (a > b) b else a
    
    println("max = $max , min = $min")

}

2、kotlin结果可能为空时候,可以给返回值后面加上 ’ ? ’

2.1、举例一 Int? 的使用 :

fun main() {

    println(strToInt("23")) // 23
    println(strToInt("ab")) // null
}


/**
 * kotlin中对异常的处理,
 * 举例: 将字符字符串转换为整数,但是有的情况下字符串并不能转换为整数,此时需要输出 null
 * 如果返回结果定义为 Int ,就表示结果已定位整数。
 * @Int? : 表示结果为一个整数,可能为空
 */
fun strToInt(str: String): Int? {
    try {
        return str.toInt()
    } catch (ex: NumberFormatException) {
        return null
    }
}
fun printMuitiply(a: String, b: String) {
    // 将两个字符串转换成整数
    var aTInt = strToInt(a)
    var bTInt = strToInt(b)

    if (null != aTInt && null != bTInt) {
        println(aTInt * bTInt)
    }
}

2.2、举例二 :

fun main() {
    printMuitiply("22","66") // 1452
    printMuitiply("22","aa") // Parameters can not be converted to plastic surgery
}

/**
 * 将字符串转换成整数,并求两个数之积
 */
fun printMuitiply(a: String, b: String) {
    // TODO : 将两个字符串转换成整数
    var aTInt = strToInt(a)
    var bTInt = strToInt(b)

    if (null != aTInt && null != bTInt) {
        println(aTInt * bTInt)
    } else {
        println("Parameters can not be converted to plastic surgery")
    }
}

/**
 * kotlin中对异常的处理,
 * 举例: 将字符字符串转换为整数,但是有的情况下字符串并不能转换为整数,此时需要输出 null
 * 如果返回结果定义为 Int ,就表示结果已定位整数。
 * @Int? : 表示结果为一个整数,可能为空
 */
fun strToInt(str: String): Int? {
    try {
        return str.toInt()
    } catch (ex: NumberFormatException) {
        return null
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值