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

Kotlin学习笔记-Kotlin基础-01

变量声明

var:用于值不改变的变量,使用val声明的变量无法重新赋值

val:用于值可以改变的变量

变量声明格式

var/val data(变量名称) : Int(变量类型)

Kotlin基本数据类:

Int、Byte、Short、Long、Float、Double

Kotlin类型推断

Kotlin编译器可以根据所赋值的类型来推断其类型

如val str = “data”

Null安全

Kotlin变量不能持有Null值,如果要使变量持有Null,它必须是可为Null类型,可以在变量类型后面加上?后缀,将变量指定为可为Null。如:

Val languageName:String?=null

?表示可为空

!!表示可能为空的值不为空(非Null断言符)

?:该运算符是处理变量为空的情况

条件语句

If  else if  else

条件语句可作为返回值返回给变量

Val answerString:String = if() {“…”} else if(){“…”} else {“…”}

When类比java的switch,但是判定条件比java灵活

Val answerString = when {

Count == 42 ->””

Couint >= 35 -> “”

Else  -> “”
}

函数

使用fun关键字声明,例如

fun generateAnswerString() : String {

       val answerString = “”

       return answerString

}

带参数的函数

fun generateAnswerString(a : String) :String {

       …

}

匿名函数

val stringLenthFunc: (String)->Int = {input->

       input.length

}

高阶函数:一个函数可以将另一个函数当做参数(类似java中的回调接口)

fun stringMapper(str: String, mapper:(String)->Int):Int {

return mapper(str)

}

类(使用class关键字来定义)

class Car

属性(通过val、var关键字来定义)

Val data : Int = 0

Getter与setter

默认情况下kotlin的属性都自带上述两个方法

如果需要对该属性的获取与赋值进行控制,则需要重写对应方法

类函数和封装

Private关键字

数据类型和单例类

数据类只处理数据相关,与java bean类似,通常需要实现其get、set、hashCode、equals、toString等方法

data class UserBean(val id: String, val name: String, val pwd : String)

单例类

object Singleton {}

Lambda

函数式API

匿名内部类需要使用object

Thread(object: Runnable {

       Override fun run() {

              Println(“test”)

}

}).start()

Null判断

let函数

let不是关键字,而是一个函数,提供了函数式API的编程接口,会将调用者作为参数传递到lambda表达式,调用之后会立马执行lambda表达式的逻辑

obj.let {it -> //it就是obj

}

内嵌表达式

var name = “a”

var age = 20

println(“my name is $name, age is $age”)

使用${}可执行更复杂的操作

println(“${if (1 < 2) “a” else “b”}. test”)

相关文章:

Kotlin学习笔记-Kotlin基础-01

变量声明 var&#xff1a;用于值不改变的变量&#xff0c;使用val声明的变量无法重新赋值 val&#xff1a;用于值可以改变的变量 变量声明格式 var/val data(变量名称) : Int(变量类型) Kotlin基本数据类&#xff1a; Int、Byte、Short、Long、Float、Double Kotlin类型推…...

gma 1.x 气候气象指数计算源代码(分享)

本模块的主要内建子模块如下&#xff1a; 如何获得完整代码&#xff1a; 回复博主 或者 留言/私信 。 注意&#xff1a;本代码完全开源&#xff0c;可随意修改使用。 但如果您的成果使用或参考了本段代码&#xff0c;给予一定的引用说明&#xff08;非强制&#xff09;&#xf…...

酒水展示预约小程序的效果如何

酒的需求度非常高&#xff0c;各种品牌、海量经销商组成了庞大市场&#xff0c;而在实际经营中&#xff0c;酒水品牌、经销商、门店经营者等环节往往也面临着品牌传播拓客引流难、产品展示预约订购难、营销难、销售渠道单一等痛点。 那么商家们应该怎样解决呢&#xff1f; 可以…...

蓝桥杯练习

即约分数 题目 思路 遍历所有的x&#xff0c;y&#xff0c;判断x/y是不是即越约分数。 代码 #include <iostream> using namespace std; int gcd(int x,int y) {int r;while(y!0){rx%y;xy;yr;}return x; } int main() {// 请在此输入您的代码int sum4039;//1/y和x/1都…...

python设计模式11:观察者模式

观察者模式 单个对此&#xff08;发布者&#xff0c;也称为主体或是可观察对象&#xff09;和一个或是多个对象&#xff08;订阅者&#xff0c;也称为观察者&#xff09;之间的发布-订阅关系。增加发布者和订阅这个之间解耦&#xff0c;使得在运行时添加、删除订阅者变得容易。…...

STM32 GPIO 描述

一、GPIO功能描述 每个GPIO端口有两个32位配置寄存器(GPIOx_CRL&#xff0c;GPIOx_CRH) &#xff0c;两个32位数据寄存器 (GPIOx_IDR和GPIOx_ODR) &#xff0c;一个32位置位/复位寄存器(GPIOx_BSRR)&#xff0c;一个16位复位寄存器(GPIOx_BRR)和一个32位锁定寄存器(GPIOx_LCKR…...

lerna在项目中使用

1. 检查lerna.json文件中的版本号是否正确&#xff0c;确保版本号与安装的lerna版本一致&#xff1b; 2. 检查package.json文件中的依赖是否正确&#xff0c;确保依赖的版本号与安装的lerna版本一致&#xff1b; 3. 检查node_modules文件夹是否存在&#xff0c;如果存在&…...

java智能在线考试系统源码 基于SpringBoot+Vue开发

java智能在线考试系统源码 基于SpringBootVue开发 环境介绍 语言环境&#xff1a;Java: jdk1.8 数据库&#xff1a;Mysql: mysql5.7 应用服务器&#xff1a;Tomcat: tomcat8.5.31 开发工具&#xff1a;IDEA或eclipse 开发技术&#xff1a;SpringbootVue 项目简介&…...

防逆流系统中防逆流电表的正确安装位置-安科瑞黄安南

随着光伏行业的发展&#xff0c;部分地区村级变压器及工业用电变压器容量与光伏项目的装机容量处于饱和。电网公司要求对后建的光伏并网系统为不可逆流发电系统&#xff0c;指光伏并网系统所发生的电由本地负载消耗&#xff0c;多余的电不允许通过低压配电变压器向上级电网逆向…...

Hello Qt!

目录 1. 什么是Qt 2. Qt中的模块 3. 下载安装 4. QtCreator 4. Hello Qt 解释 .pro 解释 main.cpp 解释 mainwindow.ui 解释 mainwindow.h 解释 mainwindow.cpp 5. Qt 中的窗口类 5.1 基础窗口类 5.2 窗口的显示 6. Qt 的坐标体系 7. 内存回收 1. 什么是Qt 是一…...

pytorch加载的cifar10数据集,到底有没有经过归一化

pytorch加载cifar10的归一化 pytorch怎么加载cifar10数据集torchvision.datasets.CIFAR10transforms.Normalize()进行归一化到底在哪里起作用&#xff1f;【CIFAR10源码分析】 torchvision.datasets加载的数据集搭配Dataloader使用model.train()和model.eval() pytorch怎么加载…...

Day1 ARM基础

【ARM课程认知】 1.ARM课程的作用 承上启下 基础授课阶段&#xff1a;c语言、数据结构、linux嵌入式应用层课程&#xff1a;IO、进程线程、网络编程嵌入式底层课程&#xff1a;ARM体系结构、系统移植、linux设备驱动c/QT 2.ARM课程需要掌握的内容 自己能够实现简单的汇编编…...

ns3入门基础教程

ns3入门基础教程 文章目录 ns3入门基础教程ns环境配置测试ns3环境ns3简单案例 ns环境配置 官方网站&#xff1a;https://www.nsnam.org/releases/ 代码仓库&#xff1a;https://gitlab.com/nsnam/ns-3-dev 如果安装遇到问题&#xff0c;可以参考以下博文&#xff1a; https://…...

计算机视觉

目录 一、图像处理 main denoise 二、Harris角点检测 三、Hough变换直线检测 四、直方图显著性检测 五、人脸识别 六、kmeans import 函数 kmeanstext 七、神经网络 常用函数&#xff1a; imread----------读取图像 imshow---------显示图像 rgb2hsv---------RGB转…...

NSSCTF第10页(3)

[LitCTF 2023]彩蛋 第一题&#xff1a; LitCTF{First_t0_The_k3y! (1/?) 第三题&#xff1a; <?php // 第三个彩蛋&#xff01;(看过头号玩家么&#xff1f;) // R3ady_Pl4yer_000ne (3/?) ?> 第六题&#xff1a; wow 你找到了第二个彩蛋哦~ _S0_ne3t? (2/?) 第七题…...

MySQL性能分析工具的使用

1. 统计SQL的查询成本&#xff1a;last_query_cost SHOW STATUS LIKE last_query_cost; 使用场景&#xff1a;它对于比较开销是非常有用的&#xff0c;特别是我们有好几种查询方式可选的时候。 SQL 查询是一个动态的过程&#xff0c;从页加载的角度来看&#xff0c;我们可以得到…...

Uniapp使用AES128加解密16进制

在对接低功耗蓝牙时&#xff0c;我们需要对蓝牙传输数据进行加解密&#xff0c;由于我们对接的命令是16进制&#xff0c;如5500020101aa00&#xff0c;每个16进制表示特定的含义&#xff0c;所以直接对16进制加解密 import CryptoJS from crypto-js// AES128 加密函数 functio…...

C++基础——类与对象

1 概述 C是面向对象的语言&#xff0c;面向对象语言三大特性&#xff1a;封装、继承、多态。 C将万事万物抽象为对象&#xff0c;对象上有其属性和行为。 2 封装 2.1 封装的意义 封装是面向对象的三大特性之一&#xff0c;封装将属性和行为作为一个整体&#xff0c;对属性和…...

人工智能-卷积神经网络

从全连接层到卷积 我们之前讨论的多层感知机十分适合处理表格数据&#xff0c;其中行对应样本&#xff0c;列对应特征。 对于表格数据&#xff0c;我们寻找的模式可能涉及特征之间的交互&#xff0c;但是我们不能预先假设任何与特征交互相关的先验结构。 此时&#xff0c;多层感…...

MySQL的event的使用方法

MySQL的event的使用方法 一、事件定时策略 1、查看event事件开启状态 SHOW VARIABLES LIKE event_scheduler;如图&#xff0c;Value值 ON&#xff1a;打开&#xff0c;OFF&#xff1a;关闭。 2、设置event事件打开 SET GLOBAL event_scheduler ON;如果MySQL重启了&#x…...

Unity安卓构建实战指南:解决APK真机安装闪退与构建失败

1. 这不是一本“从零开始”的书&#xff0c;而是一份你真正上手Unity安卓游戏开发前必须撕开的说明书我带过三届Unity实习工程师&#xff0c;也帮二十多个独立开发者把Demo打包进Google Play。每次看到新人在“安卓构建失败”报错里反复挣扎&#xff0c;或者对着“IL2CPP编译卡…...

Windows文件夹共享

目标&#xff1a;同一局域网实现在一台计算机上共享文件夹&#xff0c;在另一台电脑访问一、电脑A 1.点击要共享的文件夹 -> 属性 -> 共享2.添加Everyone用户组3.控制面板中网络共享关闭密码保存&#xff0c;在访问时不用输入账号密码。二、电脑B 1.在文件资源管理器路径…...

skills CANN开源社区贡献技能包开发指南

前言 开源社区的健康运转&#xff0c;不仅依赖核心代码的贡献&#xff0c;还需要降低贡献门槛、提供清晰的指南和自动化工具。skills仓库是CANN开源社区的"贡献技能包"&#xff0c;提供了一系列辅助脚本、代码模板、CI检查和文档生成工具&#xff0c;帮助新手快速上…...

AI圈神秘领袖Ilya一幅画引爆全网,OpenAI三件大事暗示AGI时代将至?

AI圈神秘精神领袖Ilya在Instagram上传一幅画引发疯狂解读&#xff0c;与此同时&#xff0c;OpenAI连续公布数学成果、升级Codex、筹备IPO&#xff0c;释放AGI到来的强烈信号。Ilya画作引猜测Ilya上传的画中&#xff0c;罗丹的「思考者」踩在芯片Die Shot上&#xff0c;右下角签…...

厨房空调技术白皮书:从风冷到水冷,制冷系统在厨房场景中的工程化演进

厨房空调是暖通行业近三年技术迭代最密集的细分品类。从最初的"凉霸"&#xff08;本质是风扇&#xff09;&#xff0c;到风冷分体式&#xff0c;再到水冷一体式&#xff0c;每代技术都在解决上一代没有覆盖的用户痛点。本文以工程技术视角&#xff0c;梳理四代厨房制…...

CPU架构启发的智能仓储布局优化实践

1. 仓库布局优化的核心挑战与创新机遇在物流仓储领域&#xff0c;拣货环节通常占据运营成本的55%-65%&#xff0c;而其中约50%的时间消耗在无效行走路径上。传统矩形仓库布局虽然易于规划和施工&#xff0c;但其正交的通道设计导致拣货员需要频繁进行90度转向&#xff0c;这种&…...

Raspberry Pi Debug Probe:RP2040嵌入式开发的调试利器与实战指南

1. 项目概述&#xff1a;为什么你需要一个Raspberry Pi Debug Probe&#xff1f;如果你玩过树莓派Pico或者任何基于RP2040芯片的开发板&#xff0c;肯定遇到过这样的场景&#xff1a;写好的代码&#xff0c;点一下“上传”&#xff0c;然后……就没有然后了。板子上的LED没按你…...

ComfyUI-Manager完整指南:如何轻松管理你的AI工作流扩展库

ComfyUI-Manager完整指南&#xff1a;如何轻松管理你的AI工作流扩展库 【免费下载链接】ComfyUI-Manager ComfyUI-Manager is an extension designed to enhance the usability of ComfyUI. It offers management functions to install, remove, disable, and enable various c…...

用Azure Kinect DK和Body Tracking SDK,5分钟实现一个实时人体骨骼点检测Demo(C++版)

5分钟实战&#xff1a;用Azure Kinect DK实现实时人体骨骼点追踪&#xff08;C版&#xff09; 当你第一次拿到Azure Kinect DK时&#xff0c;最令人兴奋的莫过于它强大的人体追踪能力。这款深度相机不仅能捕捉高清彩色图像&#xff0c;更能通过AI算法实时重建人体骨骼关节点。本…...

别再只比参数了!从插件生态到中文优化,聊聊ChatGPT和文心一言的“隐形”差异

超越参数之争&#xff1a;ChatGPT与文心一言的生态与本土化实战解析 当技术评测文章还在反复比较模型参数量与发布时间时&#xff0c;真正影响日常工作效率的往往是那些未被量化的"软实力"。本文将从插件生态构建与中文场景优化两个维度&#xff0c;带您重新认识这两…...