Java工程师Kotlin快速入门之变量与函数

变量的声明方式

kotlin中声明变量只允许两种关键字,且自带类型推导

  • var 声明变量 值可变
  • val 声明常量 值不可变 相当于Java中的final关键字
kotlin 复制代码
var a: Int = 10
val b = 10

Java和Kotlin数据类型对照表

Java基本数据类型 Kotlin对象数据类型 数据类型说明
int Int 整型
long Long 长整型
short Short 短整型
float Float 单精度浮点型
double Double 双精度浮点型
boolean Boolean 布尔型
char Char 字符型
byte Byte 字节型

函数的组成

在Kotlin中,函数由以下部分组成:

  • fun:关键字用于声明一个函数。
  • functionName:函数的名称,用于标识函数。
  • parameterName:参数的名称,用于在函数内部引用参数。
  • ParameterType:参数的类型,指定参数的数据类型。
  • ReturnType:返回类型,指定函数返回的数据类型。
  • 函数体:花括号内包含函数的实际操作,包括函数的具体实现。
kotlin 复制代码
fun functionName(parameterName: ParameterType): ReturnType {
    // 函数体
    // 可以包含函数的具体实现
}

但是如果函数只有一句就可以精简为以下的形式:

kotlin 复制代码
// 等于号已经说明了函数的结果
fun largerNumber(num1: Int, num2: Int): Int = max(num1, num2)
kotlin 复制代码
// 进一步的推导
fun largerNumber(num1: Int, num2: Int) = max(num1, num2)

字符串模板

Kotlin自带了字符串模板,避免了我们在输出某些信息的时候需要通过+号拼接。

kotlin 复制代码
fun main() {
    val name = "XuanRan"
    println("Hello $name!")
}

输出结果:Hello XuanRan!

函数参数默认值
kotlin 复制代码
fun printParams(num: Int, str: String = "hello") {
 println("num is $num , str is $str")
}

条件语句

kotlin 复制代码
// 仿照Java的条件语句写法
fun maxValue(i:Int, k:Int) :Int {
    if (i > k) {
        return i
    }else{
        return k
    }
}
kotlin 复制代码
// Kotlin简化写法
fun maxValue(i:Int, k:Int) :Int {
    val res = if (i > k) {
        i
    }else{
         k
    }
    return res

其中的return 可省略

kotlin 复制代码
// 进一步Kotlin简化写法
fun maxValue(i:Int, k:Int) = if (i > k) {i} else {k}
kotlin 复制代码
// kotlin 结合函数后的进一步写法
fun maxValue(i:Int, k:Int) = if (i > k) i else k

when条件语句

when语句相当于Java中的switch语句,同样在此处的return是可省略的。

kotlin 复制代码
fun getScope(name: String) = when(name) {
    "Tim" -> 90
    "Tom" -> 100
    else -> 1
}

循环语句

  • 基本循环语句
kotlin 复制代码
// 最基本的for
fun oneToTen() {
    for(i in 0..10){
        println(i)
    }
}

..用于形成一个0,10的区间,相当于Java的以下写法:

java 复制代码
private void oneToTen() {
    for (int i = 0; i <= 10 ; i++) {
        System.out.println(i);
    }
 }
  • for-in区间遍历
kotlin 复制代码
var r = 0 until 10

上述代码表示创建了一个0到10的左闭右开区间,它的数学表达方式是[0, 10)。

  • step 步长
kotlin 复制代码
fun oneToTen() {
    for( i in 0 until 10 step 2) {
        println(i)
    }
}

上述代码表示在遍历[0, 10)这个区间的时候,每次执行循环都会在区间范围内递增2

  • downTo遍历降序区间
kotlin 复制代码
// 创建了一个[10, 1]的降序区间
fun downTo() {
    for(i in 10 downTo 1) {
        println(i)
    }
}
相关推荐
guodingdingh11 小时前
软件开发工作问题总结0718
java·开发语言·数据库
咖啡八杯12 小时前
GoF设计模式——解释器模式
java·后端·spring·设计模式
优橙教育13 小时前
5G网优培训 vs Java开发:转行选哪个?
java·开发语言·5g
糖果店的幽灵13 小时前
【DeepAgents 从入门到精通】Context Management 上下文管理
java·人工智能·后端·spring·中间件·langgraph·deepagents
腻害兔14 小时前
【若依项目-产品经理视角】RuoYi-Vue-Pro 源码拆解:字典、短信、邮件、通知——后台系统的“基础设施四件套“!
java·前端·vue.js·产品经理·ai编程
碎光拾影15 小时前
ARM交叉工具链各工具作用及IMX6ULL平台LED+蜂鸣器裸机程序实现
java·开发语言·数据库
Miao1213116 小时前
微服务 API 测试实践:海外某民宿平台如何构建模式驱动测试基础设施
java·开发语言
腻害兔16 小时前
【若依项目-产品经理视角】RuoYi-Vue-Pro 源码拆解:支付模块 yudao-module-pay,一个让产品经理都看懂的支付中台设计
java·前端·vue.js·产品经理·ai编程
CRMEB系统商城17 小时前
开源自建还是SaaS订阅?算一笔3年经济账
java·大数据·开发语言·开源
keyipatience18 小时前
线程栈与TLS和线程互斥
java·linux·服务器·开发语言·ubuntu