一、kotlin基础语法学习

打印 上一主题 下一主题

主题 549|帖子 549|积分 1647

kotlin基础语法学习

   简单的入个门, 复杂的操作放在下一章节
  kotlin 包



  • 和java包不同, java类必须放在对应包名的目录下, 而kotlin没有强制要求
  • kotlin的类名可以和文件名不同
  • kotlin甚至可以不用写类

  1. package base
  2. fun funcMax(a: Int, b: Int): Int {
  3.    return  if(a > b) a else b
  4. }
  5. fun main(args: Array<String>) {
  6.    var a = 10
  7.    var b = 20
  8.    println(funcMax(a, b))
  9. }
复制代码
java源码如下:
  1. public final class FuncDemo01Kt {
  2.    public static final int funcMax(int a, int b) {
  3.       return a > b ? a : b;
  4.    }
  5.    public static final void main(@NotNull String[] args) {
  6.       int a = 10;
  7.       int b = 20;
  8.       int var3 = funcMax(a, b);
  9.       System.out.println(var3);
  10.    }
  11. }
复制代码
kotlin编译器将文件FuncDemo01加上 Kt 做成了 java 的类名, 而max 是FuncDemo01Kt类的静态方法, 在 kotlin 中被称之为 顶层函数
java调用kotlin顶层函数只需要如此:
  1. FuncDemo01Kt.funcMax(1, 2)
复制代码
下面是java调用kotlin顶层函数的方式
  1. package base.java;
  2. import base.FuncDemo01Kt; // ★
  3. public class JavaTestDemo01 {
  4.     public static void main(String[] args) throws Exception {
  5.         int a = 10;
  6.         int b = 30;
  7.         System.out.println(FuncDemo01Kt.funcMax(a, b)); // ★
  8.     }
  9. }
复制代码
函数声明和定义

kotlin使用 fun 关键字定义函数:
普通函数体形式:
  1. fun sum(a: Int, b: Int):Int {
  2.     return a + b
  3. }
复制代码
fun关键字 + 空格 + 函数名字(参数名: 参数类型, ...): 函数返回值 {函数体}
kotlin中还有表达式函数体形式, 如下:
  1. fun sum(a: Int, b: Int) = a + b
复制代码
fun关键字 + 空格 + 函数名字(参数名: 参数类型, ...) 表达式函数体( = a + b)
  1. // kotlin函数无返回值时使用 `Unit` 关键字, 注意这里和`Uint`做区分, 表示`unsigned int`无符号
  2. fun sum(a: Int, b: Int):Unit {
  3.     // 字符串模板操作关键字 `$`
  4.     println("max = ${if(a > b) a else b}")
  5. }
复制代码
什么是表达式?

表达式是有返回值的语句
1, -1, 1 + 1, listOf(1, 2, 3) 这些都是表达式
还有
{x:Int -> x + 1} fun(x: Int) { println(x) } if(x > 1) x else 1 这三个也是表达式
表达式比语句更加安全

  1. void isStatement(Boolean flag) {
  2.     String a = null;
  3.     if (flag) {
  4.         a = "dive into kotlin";
  5.     }
  6.     System.out.println(a.toUpperCase());
  7. }
复制代码
这里存在一个问题. 变量 a 为 null, 如果不经过 if 语句, 则会在下面变成 null.toUpperCase() 直接报错
如果我们使用 kotlin 的方式重新实现这种方式
  1. fun isStatement(flag: Boolean): Unit {
  2.    // 我们会主动接收 if 的返回值
  3.    val a = if (flag) "dive into kotlin" else ""
  4.    println(a.uppercase())
  5. }
复制代码
如果我们不写上 else , idea会报错
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eAA5qm0D-1655378595637)(https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/868486cfe76641608aed938012e3201e~tplv-k3u1fbpfcp-watermark.image?)]
   表达式的目的是为了创建新值
  什么是表达式函数体?

如果一个函数的整个函数体都是一个表达式时, 我们就可以称之为表达式函数体
  1. fun max(a: Int, b: Int) = if (a > b) a else b
复制代码
  表达式函数体中, 可以省略 return 关键字, 加上 等号 和表达式 if (a > b) a else b, 这意味着该函数返回了 if 表达式 的 结果
  可变函数参数

  1. fun printArray(vararg arr: Int) {
  2.     for(v in arr) {
  3.         println(v)
  4.     }
  5. }
复制代码
需要注意这种用法:
[code]fun main() {   val list = listOf(1, 2, 3, 4, 5)   printArray(*list.toIntArray())   //         
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

杀鸡焉用牛刀

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表