当前位置: 首页 > news >正文

kotlin基础知识

kotlin 环境搭建

1,新建项目,我是用idea2022.2 版本、 建议大家也将idea 更新到最新,破解方法可以私信我,免费提供
在这里插入图片描述
2.新建完项目、大概的目录结构
在这里插入图片描述
比正常的java 项目多了个运行环境, kotlin 运行时环境一定是要的,否则kotlin 代码跑不起来
3.为了和java 语法做对比,建java source root ,编写java 代码 。新建一个java文件夹,然后标记为source root
在这里插入图片描述
在这里插入图片描述

4.新建kotlin 文件
在这里插入图片描述

我们选择一般file ,这样我们可以在文件内写多个class ,如果class ,这就和java 创建一个类一样。到此我们就可以写代码了ca 在这里插入图片描述

kotlin 基本编程

  • 变量声明 关键字, var 、val
    如果想声明一个可以改变的变量、使用var
    在这里插入图片描述

由上图可以看出,定义变量有三种方法、大概格式如下

(val/var)变量名 冒号 类型 = 值
a 变量 因为赋值为20 直接推导为变量类型为 Int,在kotlin 中没有包装类型和基本类型,直接使用Int,编译器自动识别 成int 还是Integer
b 变量 Int 后有个? 代表该变量是否允许为null 。如果带有?,那么就允许为null,初始化可以不赋值
c 变量 不允许为空 ,所以定义的时候必须给赋默认值

如果定义变量不允许改变,应该使用val、在编程过程中、如果代码中变量后面没有发生变化,idea 会提示优化,将var 改成val

在这里插入图片描述
在编程过程中、如果代码中变量后面没有发生变化,idea 会提示优化,将var 改成val
在这里插入图片描述
没有被引用也是提示优化、我们编码过程中,尽量小区这些小黄线,避免不必要的bug
在这里插入图片描述

kotlin 基本数据类型

和java对比

kotlinjava
Bytebyte
Shortshort
Intint
Longlong
Floatfloat
Doubledouble
StringString
数组数组
代码声明示例
在这里插入图片描述

Kotlin 类型转换

toByte() - 将字符串解析为带符号的字节数,然后返回结果。

toShort() - 将 Int 值转换为Short。

toInt() - 将字符串解析为Int数字并返回结果。

toLong() - 将字符串解析为Long数字并返回结果。

toFloat() - 将字符串解析为Float数字并返回结果。

toDouble() - 将字符串解析为Double数字并返回结果。

toChar() - 将Int值转换为Char。

示例代码


class kotlinConvert{
//    val number1: Int = 55
//    val number2: Long = number1   // Error: type mismatch.
    val number1: Int = 55
    val number2: Long = number1.toLong()

    fun test(){
        val a: Int = 545344
        val b: Byte = a.toByte()
        println("number1 = $a")
        println("number2 = $b")
    }

    //
    //number1 = 545344
    //number2 = 64
    //
    
}

上面提到的函数可以在两个方向上使用(从较大类型到较小类型的转换 以及从较小类型到较大类型的转换)。

但是,从较大的类型到较小的类型的转换可能会截断该值

kotlin 三元表达式

kotlin 没有三元表达式、但可以实现三元表达式的效果、例如

// java
max = a > b?a:b
// kotlin
max = if (a > b) a else b

kotlin 注释

kotlin 的注释和 java 相同

  • 单行注释 //
  • 多行注视 /** 注释内容 */

代码仓库

https://gitcode.net/mid120/kotlin 会持续更新

相关文章:

  • Keras学习记录之模型
  • LeetCode 0329. 矩阵中的最长递增路径
  • JavaEE:线程安全问题的原因和解决方案
  • Linux/CentOS 安装 flutter 与 jenkins 构建 (踩坑)
  • (八)光盘的挂载与解挂、挂载CentOS镜像、rpm安装软件详细学习笔记
  • 随想录一期 day4 [24. 两两交换链表中的节点|19. 删除链表的倒数第 N 个结点|面试题 02.07. 链表相交|142. 环形链表 II]
  • iOS动画相关
  • LeetCode往完全二叉树添加节点
  • Linux、docker、kubernetes、MySql、Shell运维快餐
  • 基数(桶)排序算法详解之C语言版
  • 生成模型的中Attention Mask说明
  • java毕业设计企业固定资产管理系统源码+lw文档+mybatis+系统+mysql数据库+调试
  • Java---Java Web---JSP
  • opencv 机器学习-人脸识别
  • JavaScript的函数
  • 【从零开始安装kubernetes-1.7.3】2.flannel、docker以及Harbor的配置以及作用
  • mysql中InnoDB引擎中页的概念
  • Shadow DOM 内部构造及如何构建独立组件
  • Sublime Text 2/3 绑定Eclipse快捷键
  • TypeScript实现数据结构(一)栈,队列,链表
  • 规范化安全开发 KOA 手脚架
  • 可能是历史上最全的CC0版权可以免费商用的图片网站
  • 这几个编码小技巧将令你 PHP 代码更加简洁
  • ​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​
  • #vue3 实现前端下载excel文件模板功能
  • #微信小程序(布局、渲染层基础知识)
  • $.type 怎么精确判断对象类型的 --(源码学习2)
  • (12)目标检测_SSD基于pytorch搭建代码
  • (13):Silverlight 2 数据与通信之WebRequest
  • (超详细)2-YOLOV5改进-添加SimAM注意力机制
  • (附源码)python旅游推荐系统 毕业设计 250623
  • (深入.Net平台的软件系统分层开发).第一章.上机练习.20170424
  • (转)3D模板阴影原理
  • (转)chrome浏览器收藏夹(书签)的导出与导入
  • (转)linux 命令大全
  • (转)shell中括号的特殊用法 linux if多条件判断
  • (转)项目管理杂谈-我所期望的新人
  • .form文件_一篇文章学会文件上传
  • .net Application的目录
  • .NET Core 和 .NET Framework 中的 MEF2
  • .NET Core 通过 Ef Core 操作 Mysql
  • .NET Framework 服务实现监控可观测性最佳实践
  • .NET Project Open Day(2011.11.13)
  • .NET学习教程二——.net基础定义+VS常用设置
  • .Net中间语言BeforeFieldInit
  • [ 云计算 | AWS 实践 ] 基于 Amazon S3 协议搭建个人云存储服务
  • [16/N]论得趣
  • [20171106]配置客户端连接注意.txt
  • [Android Studio] 开发Java 程序
  • [C#][opencvsharp]opencvsharp sift和surf特征点匹配
  • [C#]winform制作仪表盘好用的表盘控件和使用方法
  • [C/C++]数据结构----顺序表的实现(增删查改)
  • [docker] Docker的私有仓库部署——Harbor
  • [flask] flask的基本介绍、flask快速搭建项目并运行
  • [hive]中的字段的数据类型有哪些