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()) //
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |