ToB企服应用市场:ToB评测及商务社交产业平台
标题:
一、kotlin基础语法学习
[打印本页]
作者:
杀鸡焉用牛刀
时间:
2022-6-25 02:07
标题:
一、kotlin基础语法学习
kotlin基础语法学习
简单的入个门, 复杂的操作放在下一章节
kotlin 包
和java包不同, java类必须放在对应包名的目录下, 而kotlin没有强制要求
kotlin的类名可以和文件名不同
kotlin甚至可以不用写类
package base
fun funcMax(a: Int, b: Int): Int {
return if(a > b) a else b
}
fun main(args: Array<String>) {
var a = 10
var b = 20
println(funcMax(a, b))
}
复制代码
java源码如下:
public final class FuncDemo01Kt {
public static final int funcMax(int a, int b) {
return a > b ? a : b;
}
public static final void main(@NotNull String[] args) {
int a = 10;
int b = 20;
int var3 = funcMax(a, b);
System.out.println(var3);
}
}
复制代码
kotlin编译器将文件FuncDemo01加上 Kt 做成了 java 的类名, 而max 是FuncDemo01Kt类的静态方法, 在 kotlin 中被称之为 顶层函数
java调用kotlin顶层函数只需要如此:
FuncDemo01Kt.funcMax(1, 2)
复制代码
下面是java调用kotlin顶层函数的方式
package base.java;
import base.FuncDemo01Kt; // ★
public class JavaTestDemo01 {
public static void main(String[] args) throws Exception {
int a = 10;
int b = 30;
System.out.println(FuncDemo01Kt.funcMax(a, b)); // ★
}
}
复制代码
函数声明和定义
kotlin使用 fun 关键字定义函数:
普通函数体形式:
fun sum(a: Int, b: Int):Int {
return a + b
}
复制代码
fun关键字 + 空格 + 函数名字(参数名: 参数类型, ...): 函数返回值 {函数体}
kotlin中还有表达式函数体形式, 如下:
fun sum(a: Int, b: Int) = a + b
复制代码
fun关键字 + 空格 + 函数名字(参数名: 参数类型, ...) 表达式函数体( = a + b)
// kotlin函数无返回值时使用 `Unit` 关键字, 注意这里和`Uint`做区分, 表示`unsigned int`无符号
fun sum(a: Int, b: Int):Unit {
// 字符串模板操作关键字 `$`
println("max = ${if(a > b) a else b}")
}
复制代码
什么是表达式?
表达式是有返回值的语句
1, -1, 1 + 1, listOf(1, 2, 3) 这些都是表达式
还有
{x:Int -> x + 1} fun(x: Int) { println(x) } if(x > 1) x else 1 这三个也是表达式
表达式比语句更加安全
void isStatement(Boolean flag) {
String a = null;
if (flag) {
a = "dive into kotlin";
}
System.out.println(a.toUpperCase());
}
复制代码
这里存在一个问题. 变量 a 为 null, 如果不经过 if 语句, 则会在下面变成 null.toUpperCase() 直接报错
如果我们使用 kotlin 的方式重新实现这种方式
fun isStatement(flag: Boolean): Unit {
// 我们会主动接收 if 的返回值
val a = if (flag) "dive into kotlin" else ""
println(a.uppercase())
}
复制代码
如果我们不写上 else , idea会报错
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eAA5qm0D-1655378595637)(https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/868486cfe76641608aed938012e3201e~tplv-k3u1fbpfcp-watermark.image?)]
表达式的目的是为了创建新值
什么是表达式函数体?
如果一个函数的整个函数体都是一个表达式时, 我们就可以称之为表达式函数体
fun max(a: Int, b: Int) = if (a > b) a else b
复制代码
表达式函数体中, 可以省略 return 关键字, 加上 等号 和表达式 if (a > b) a else b, 这意味着该函数返回了 if 表达式 的 结果
可变函数参数
fun printArray(vararg arr: Int) {
for(v in arr) {
println(v)
}
}
复制代码
需要注意这种用法:
[code]fun main() { val list = listOf(1, 2, 3, 4, 5) printArray(*list.toIntArray()) //
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4