kotlin基础知识

val(value的简写)用来声明一个不可变的变量。(只读变量)

var(variable的简写)用来声明一个可变的变量。(可读写变量)

在变量声明中指定数据类型时,应在冒号后面添加一个空格。

先声明变量在声明变量的类型。 val a :Int = 10

kotlin拥有类型推导机制,变量类型可以省略不写   (val a =10),如果对变量延迟赋值,就无法自动推导类型,需要显式地声明变量。

kotlin全部使用对象数据类型,完全抛弃了java的基本数据类型,例如在java中int是关键字,在kotlin中Int是一个类。

kotlin每个语句都应单独占一行。结尾不用加分号;

if语句可以有返回值,返回值是if语句每一个条件中最后一行代码的返回值
val isSuccessful = true
val responseResult = if (isSuccessful) "登录成功"else "登录失败!"when表达式
fun getScore(name: String) = when(name) {"Tom" -> 86"Jerry" -> 7else -> 0
}
when语句允许类型匹配
fun checkNumber(num: Number){when(num){is Int -> println("num is Int")is Double -> println("num is Double")else -> println("num not support")}
}
when语句可以不传参数 kotlin判断字符串或对象是否相等可以直接使用 == 关键字
fun getScore(name: String) = when {name.startWith("N") -> 100name == "Tom" -> 86name == "Jerry" -> 7else -> 0
}

..是创建两端闭区间的关键字   val range = 0 .. 10  表示[0,10],
fun main(){for(i in 0 .. 10){println(i)}
}until关键字可以创建左闭右开的区间,step关键字改变循环的变化量。
fun main(){for(i in 0 until 10 step 2){println(i)}
}
// 0 2 4 6 8降序区间使用downTo关键字
fun main(){for(i in 10 downTo 1){println(i)}
}

kotlin实例化不需要new 关键字   val p = Person()

kotlin中任何一个非抽象类默认不可被继承,在类前加open关键字可以被继承

open class Person(){  ...  }

kotlin继承、实现统一使用冒号  interface Study{ ... }

class Student : Person(),Study{ ... }

kotlin中public修饰符是默认项,protected在kotlin中表示只对当前类和子类可见,kotlin抛弃java中的default使用internal修饰符,表示只对同一模块中的类可见。

kotlin中数据类中只需要使用data关键字即可,toString()等固定方法自动生成

data class Cellphone(val brand: String,val price: Double)

kotlin中将class关键字改为object关键字即可创建一个单例类,不需要私有化构造函数,可以直接在类中编写需要的函数。

object Singleton{fun singletonTest(){...}
}

//不可变集合
val list = listOf("Apple","Pear","Grape")
//可变集合
val list = mutableListOf("Apple","Pear")
list.add("Grape")Set集合和List集合用法一致,创建方式替换为setOf()和mutableSetOf()val map = HashMap<String,Int>()
map["Apple"] = 1  //添加
map["Banana"] = 2
val number = map["Apple"]  //读取
//也可以使用mapOf()和mutableMapOf()直接传入
val map = mapOf("Apple" to 1,"Banana" to 2)
// val d2 : Double = null //非可空类型,不能赋值为null,编译不通过
val d3 : Double? = null //可空类型,能赋值为null,编译通过//可空类型 > 非可空类型
//为空类型:1.可以存null值。2.可以存正常值。
//非可空类型:1.只能存正常值。
var d4 : Double = 6588776.7
var d5 : Double? = nu11
// d4 = d5//编译不通过,非可空类型 不能 接收 可空类型
// d5 = d4//编译通过 可空类型 可以 接收 非可空类型
// d4 = d5 编译不通过的解决方案
if (d5 != nu11) d4 = d5//kotlin推荐显式转换
val intValue = 666
val longValue : Long = intValue .toLong()
?. 操作符表示 对象不为空时正常调用,对象为空时什么都不做
a?.doSomething()
?: 操作符左右两边接收一个表达式,如果左边结果不为空则返回左边的结果,否则返回右边的结果
val c = a ?: b
kotlin支持字符串内嵌表达式
"hello, ${obj.name}.nice to meet you!"
//仅有一个变量时可以将大括号省略
"hello, $name.nice to meet you!"
给函数设定参数默认值
fun printParams(num: Int = 100,str: String){println("num is $num, str is $str")    
}fun main(){printParams(str = "world" ,num = 123)  //可以通过键值对传参
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/11475.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

有哪些可以用电脑做的挣钱副业,有电脑就行

以下是一些可以用电脑做的挣钱副业 1. 写作和翻译 可以在各大网络平台上接单进行写作或者翻译。 2. 做任务 还在做致米宝库这个软件&#xff0c;软件每天会发布一些项目任务&#xff0c;也能学到一些网上赚钱的知识技术&#xff0c;我平时就做些简单任务和一个虚拟项目。 任…

下载npm I就包错解决方案

npm i xxxx -S --legacy-peer-deps 如果包错就执行以上命令

杨校老师项目之基于大数据技术栈hadoop商业web应用的日志分析系统

获取全套资料&#xff1a; 有偿获取&#xff1a;mryang511688 摘要&#xff1a; 互联网世界的先驱者们一致认为大数据将是未来互联网产业&#xff0c;甚至是整个人类各个产业的基础资源&#xff0c;那么到底什么是大数据&#xff0c;大数据给我们的世界是如何带来变化的呢&am…

电子作业指导书系统如何提升医疗设备工厂的生产效率

在医疗设备工厂中&#xff0c;电子作业指导书&#xff08;ESOP&#xff09;正逐渐成为提升生产效率的关键因素。 一、电子作业指导书系统提供了即时可得的准确信息。 电子作业指导书系统与传统的纸质作业指导书相比&#xff0c;员工可以在工作现场通过电子设备随时查阅最新、最…

2024年5月树莓集团快讯

树莓集团近期快讯 1 园区专场招聘会进校园 国际数字影像产业园联合四川城市职业学院的专场招聘会成功召开&#xff0c;共计提供400余个工作岗位。 2 园区硬件优化再升级 园区硬件优化再升级&#xff0c;智能门禁系统及人脸识别系统下周投入使用。 3 基地短剧合作交流 天府…

Apple store 静安·苹果店欣赏

官网&#xff1a; https://www.apple.com/today/Apple 亚洲第一大商店&#xff1a;Apple 静安零售店现已在上海开幕 静安苹果欣赏

CMainFrame中的OnCreatClient()函数

在MFC&#xff08;Microsoft Foundation Classes&#xff09;框架中&#xff0c;OnCreateClient()函数是CFrameWnd类&#xff08;以及继承自它的类&#xff0c;如CMainFrame&#xff09;的一个虚拟成员函数。这个函数被设计来响应窗口客户区的创建过程&#xff0c;即在主框架窗…

Verilog中信号发生器的代码实现

目录 描述 输入描述&#xff1a; 输出描述&#xff1a; 描述 题目描述&#xff1a; 请编写一个信号发生器模块&#xff0c;根据波形选择信号wave_choise发出相应的波形&#xff1a;wave_choice0时&#xff0c;发出方波信号&#xff1b;wave_choice1时&#xff0c;发出锯齿…

完整的在Python中自定义异常的例子

下面是一个在Python中自定义异常的完整示例&#xff0c;包括定义异常、引发异常和捕获异常的过程&#xff1a; ### 定义自定义异常 首先&#xff0c;我们定义两个自定义异常类&#xff1a;ShapeError作为基类&#xff0c;用于所有形状相关错误的基类&#xff1b;InvalidShape…

网页版五子棋的自动化测试

目录 前言 一、主要技术 二、测试环境的准备部署 三、测试用例 四、执行测试 4.1、公共类设计 创建浏览器驱动对象 测试套件 释放驱动类 4.2、功能测试 登录页面 注册页面 游戏大厅页面 游戏房间页面 测试套件结果 4.3、界面测试 登录页面 注册页面 游戏大…

MoonBit 本周有重磅更新!枚举构造器支持可变字段、数组字面量默认构建 Vector

MoonBit更新 支持了构造器的 payload 中出现 mutable field&#xff0c;使用方式如下&#xff1a; enum E {C(mut ~x : Int, mut ~y : Int) } derive(Debug)fn swap_xy(x : E) -> Unit {match x {// ~y 会绑定模式匹配前 C 中的 y 字段的值// 当看到 C(..) as c 这种模式时…

visual sudio使用-创建空项目-创建cpp文件

新建空项目 新建cpp文件 #include <iostream> using namespace std;int main() {cout << "hello vs" << endl;cout << "hello c" << "\n";cout << "hello first day\n"; }

LeetCode416:分割等和子集

题目描述 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集&#xff0c;使得两个子集的元素和相等。 解题思想 [1,5,11,5] 和为22&#xff0c;其中一半为 11。如果能寻找到若干数的和为11则成立可以抽象为一个0-1背包问题&#xff1a;容…

MATLAB绘制蒸汽压力和温度曲线

蒸汽压力与温度之间的具体关系公式一般采用安托因方程&#xff08;Antoine Equation&#xff09;&#xff0c;用于描述纯物质的蒸汽压与温度之间的关系。安托因方程的一般形式如下&#xff1a; [\log_{10} P A - \frac{B}{C T}] 其中&#xff0c; (P) 是蒸汽压&#xff08…

redis 和 memcache 有什么区别?

Redis和Memcache都是常用的内存数据存储系统&#xff0c;但它们之间存在一些显著的区别。以下是它们之间的一些主要差异&#xff1a; 数据支持类型&#xff1a; Memcache&#xff1a;基本只支持简单的key-value存储&#xff0c;不支持枚举&#xff0c;不支持持久化和复制等功能…

【刷题】一篇文章搞定“位运算”

只要春天不死&#xff0c;就有迎春的花朵年年岁岁开放&#xff0c;生命讲涅槃&#xff0c;生生不息&#xff0c;并会以另一种形式永存。 – 路遥 《平凡的世界》 (◦′ᆺ‵◦) ♬ ✧❥✧.•✧♡✧ ℒℴѵℯ ✧♡✧•.❥ (◦′ᆺ‵◦) ♬ ✧❥✧.•✧♡✧ ℒℴѵℯ ✧♡✧•.❥…

提Pr教程

提Pr教程 以提交到GitLab的kwin为例 打开kwin的仓库地址&#xff1a;invent.kde.org/plasma/kwin&#xff0c;注册自己的账号 fork一份仓库到自己名下 将fork的仓库克隆到本地&#xff0c;在其上做出修改并commit 需要本地先新建一个开发分支&#xff0c;并将这个开发分支关联…

NL6621 WIFI模块烧录及其他

某宝淘得NL6621: 测了一下引脚&#xff1a; 做了以下功课&#xff1a; 新岸线物联网NL6621解决方案是高性价比、完全开源、高成熟度的解决方案&#xff0c;特别为高数据吞吐率低成本的无线局域网产品而设计。它集成了MCU&#xff0c; MAC&#xff0c;1T1R基带和带功放RF收发机于…

数据结构的二叉树(c语言版)

一.二叉树的概念 1.二叉树的基本概念 二叉树是一种常见的树状数据结构&#xff0c;它由若干个节点组成&#xff0c;这些节点通过边连接起来。每个节点最多可以有两个子节点&#xff0c;分别称为左子节点和右子节点。 二叉树的特点是每个节点最多有两个子节点&#xff0c;而且…

Eplan2.9版本安装教程指南【附安装包】

文章目录 前言一、Eplan是什么&#xff1f;二、安装指南1、安装包获取2、安装步骤在这里插入图片描述 总结 前言 随着人工智能的不断发展&#xff0c;机器学习这门技术也越来越重要&#xff0c;很多人都开启了学习机器学习&#xff0c;本文就介绍了机器学习的基础内容。 提示&…