kotlin基本语法

高速设计注意事项总结——MDI篇 在以太网高速通信系统中,MDI(Medium Dependent Interface,介质相关接口)是连接物理层芯片(PHY)与传输介质(如网线)的关键接口,其设计直接影响信号完整性、传输速率和抗干扰能力。本文围绕 MDI 及 RJ45 接口电路、关键参数、设计与布线要点展开,为高速以太网设计提供参考。本文包含MDI 及 RJ45 接口电路组成、电路设计注意事项、布局布线要求等内容 阅读详情

定义包
package my.demo

import java.util.*
定义函数

带有两个 Int 参数、返回 Int 的函数:

fun sum(a: Int, b: Int): Int {
	return a + b
}

将表达式作为函数体、返回值类型自动推断的函数

fun sum(a: Int, b: Int) = a + b

函数返回无意义的值

fun printSum(a: Int, b: Int):Unit{
  	//$varName 表示变量值,${表达式}执行表达式
	println("sum of $a and $b is ${a + b}")
}

Unit返回类型可以省略

fun printSum(a: Int, b: Int):Unit{
	println("sum of $a and $b is ${a + b}")
}

可变长参数函数,用 vararg 关键字进行标识:

函数的变长参数可以用 vararg 关键字进行标识:

fun vars(vararg v: Int) {
	for(it in v) {
    	print(it)
	}
}

vars(1,2,3,4) ,输出1234

定义变量

定义只读局部变量使用关键字 val 定义。只能为其赋值一次。

val a: Int = 1 //立即赋值
val b = 3.0 //自动推断类型为Short
val c: Double //变量申明
c = 2.9D //赋值

// Byte 定义字节值
var b:byte = 127

// Short 定义短整型值
var number:Short = 32767

// Int 定义Int值
var age: Int = 2017 或者 var age = 2017 (自动推断类型)

// Long 定义长整型
var money: Long = 9999999999L 或者 var money = 99999999999L 

// Float 定义单精度值
var f: Float = 123456789f 或者 var f = 123456789f

// Double 定义双精度值
var d: Double = 66666666.0 或者 var d = 66666666.0

// boolean 定义布尔值
var biu = true/false

// Char 定义字符
var cili = "c"

定义重复赋值变量使用var 关键字

var a: Int = 32
a = 2
延迟初始化属性 (Late-Initialized Properties)

在Kotlin中,声明为具有非空类型的属性必须在构造函数中初始化,但是往往不希望在构造函数中初始化,例如在通过依赖注入或单元测试的设置方法来初始化属性的时候,不能在构造器中提供一个非空的初始化语句,为了处理这种情况,就要在属性上加lateinit关键字来延迟初始化

public class MyTest {
    lateinit var subject: TestSubject

    @Before fun setup() {
        subject = TestSubject()
    }

    @Test fun test() {
        subject.method() 
    }
}

注:lateinit只能够在var类型的属性中,不能用于构造函数,而且属性不能有自定义的getter和setting,这些属性必须是非空类型,并且不能是基本类型。 如果在一个延迟初始化的属性初始化前调用,会导致一个特定异常,调用的时候值还没有初始化.

NULL检查机制

Kotlin的空安全设计对于声明可为空的参数,在使用时要进行空判断处理,有两种处理方式,字段后加!!像Java一样抛出空异常,另一种字段后加?可不做处理返回值为 null或配合?:做空判断处理

//类型后面加?表示可为空
var age: String? = "23" 
//抛出空指针异常
val ages = age!!.toInt()
//不做处理返回 null
val ages1 = age?.toInt()
//age为空返回-1
val ages2 = age?.toInt() ?: -1
类型检测及自动转换
fun getStringLength(obj: Any): Int? {
  if (obj !is String)
    return null
  // 在这个分支中, `obj` 的类型会被自动转换为 `String`
  return obj.length
}
基本数据类型

Kotlin 的基本数值类型包括 Byte、Short、Int、Long、Float、Double 等

类型位宽度示例
Double642.0
Float322f
Long643L
Int323
Short164
Byte85

可以使用下划线使数字常量更易读

val oneMillion = 1_000_000
val hexBytes = 0xFF_EC_DE_5E
val phoneNumber = 185_5162_3845

在 Kotlin 中,三个等号 === 表示比较对象地址,两个 == 表示比较两个值大小。

val a: Int = 10000
//经过了装箱,创建了两个不同的对象
val boxedA: Int? = a
val anotherBoxedA: Int? = a

//虽然经过了装箱,但是值是相等的
println(boxedA === anotherBoxedA) //  false,值相等,对象地址不一样
println(boxedA == anotherBoxedA) // true,值相等

类型转换:每种数据类型都有下面的这些方法,可以转化为其它的类型:

toByte(): Byte
toShort(): Short
toInt(): Int
toLong(): Long
toFloat(): Float
toDouble(): Double
toChar(): Char

从kotlin1.3开始,引入了无符号整型数据类型,目前还是***实验性***的。

类型位宽度范围示例
UByte80~255221u
UShort160~216-112u
UInt320~232-136u
ULong640~264-11284uL
kotlin修饰符及关键字
public / protected / private / internal
expect / actual
final / open / abstract / sealed / const
external
override
lateinit
tailrec
vararg
suspend
inner
enum / annotation
companion
inline
infix
operator
data

与Java不同的是,kotlin默认的访问修饰符是public,而且多了一个internal(模块)修饰符
其他private 和 protected的作用范围和Java一样

  • private:只该类可见(包括该类的所有成员)
  • protected:同private 加子类可见
  • internal:在同一个模块中可见
  • public:公共,所有都可见

在kotlin中增加了top-level属性和方法,与class同级

package foo.bar

val prop: String = "top-level-prop"
fun demo() {
    loge("top-level", "top-level-demo()")
}

class Kot {
    fun v() {
        loge("top-level", prop)
        demo()
    }
}

上面的prop属性和demo()方法就是顶级属性及方法,在Kot类编译成class文件的时候,会把Top-level的属性和函数创建到以类名+Kt为名的class文件中,如:KotKt.class

顶级属性和方法前面不能用protected访问修饰符

Kotlin随机数

kotlin1.3加入多平台random随机数,kotlin.random.Random

Random.nextInt() //Int.MIN_VALUE ~ Int.MAX_VALUE
Random.nextInt(52) //0 ~ 52
Random.nextBoolean() //true or false
Random.nextFloat() //0 ~ 1
Random.nextDouble() //0 ~ 1
Random.nextDouble(5.0) //0 ~ 5.0

//生成一个长度23的随机数组
val nextBytes = Random.nextBytes(23)
for (it in nextBytes) {
	println(it)
}

运算符
单目运算符
表达式对应函数
+aa.unaryPlus()
-aa.unaryMinus()
ina.not()
a++a.inc()
a–a.dec()
双目运算符
表达式对应函数
a+ba.plus(b)
a-ba.minus(b)
a*ba.times(b)
a/ba.div(b)
a%ba.rem(b) / a.mod(b) 已过时
a…ba.rangTo(b)
a in ba.contains(b)
a !in b!a.contains(b)
a += ba.plusAssign(b)
a -= ba.minusAssign(b)
a *= ba.timesAssign(b)
a /= ba.divAssign(b)
a %= ba.remAssign(b)
a && ba.and(b)
a || ba.or(b)
H265/HEVC视频分层码流分析语义元素解释 一、H265概述 H265/HEVC(Hight Efficiency Video Coding)是由ITU-T和ISO/IEC两大组织在H264/AVC的基础之上推出的新一代高效视频编码标准,主要为应对高清和超高清视频在网络传输和数据存储方面带来的挑战。上一篇文章对H264/AVC视频码流进行了详细的分析,本文继续从数据处理的角度对H265/HEVC视频码流进行详细分析。 二、H265分层结构 H265的分层结构与H264类似,分为视频编码层(VCL:Video Code Layer)和网络抽象层(NAL 阅读详情

相关推荐

SMETANA 安装使用教程

关于SMETANA的安装和简单使用信息

qq_44940977的博客 1167

Kotlin 获取随机数的两种写法

前言 这里先推荐下前几天写过的 Kotlin 学习资料 ,值得阅读。 今天记录下 kotlin 中获取随机数的写法,简单来说就是 java 方式,kotlin 方式。 Java 方式 println(Random().nextInt(4)) 很简单,直接调用 java 相关方法就可以实现,这里会打印出 0 到 3 包括 3 之间的整数。如果你使用 jdk 1.7 及以上版本,推荐使用 Thr...

PowerMartin Talk 4万+

项目计划书、规划文档模板

项目计划书、规划文档模板 最近通过项目实践经历,整理出的一套项目计划书(仅供自己参考梳理思路使用) 有喜欢的文末加VX 辛苦码字如有转载请标明出处谢谢!——木研 更新的简版项目规划文档! 原版文件请+vx :baierfa ...

weixin_43194923的博客 987

Kotlin:扩展函数和运算符重载

Kotlin:扩展函数和运算符重载 1 扩展函数 扩展函数表示即使在不修改某个类的源码的情况下,仍然可以打开这个类,向该类添加新的函数。 比如,一段字符串中可能包含字母、数字和特殊符号等字符,现在希望统计字符串中字母的数量,要怎么实现这个功能呢?如果按照一般 的编程思维: object StringUtil { fun lettersCount(str: String): Int { var count = 0 for (char in str) {

xingyu19911016的博客 1462

桂电 数电实验 期末考试 试卷+解析(74LS192 + 74LS153 + 74LS139 + 74LS00 / 74LS20)

桂电 数电实验 期末考试 试卷+解析(74LS192 + 74LS153 + 74LS139 + 74LS00 / 74LS20)

Molly 的博客 1万+

axi ps读写pl_PL读写DDR:Datamover能干什么

最近发现工程项目中一直在用AXI-DMA。这玩意儿搬数据倒是没问题,就是用axi-lite配置起来非常反人类。。。简单的办法其实是用datamover ip核。这个ip核能干嘛呢。准备写个文章解析一下。由于好多feature没用过,所以仅仅看文档可能理解有误,欢迎指出错误。首先扫个盲:MM2S指的是Memory map to stream. 读DDR. S2MM指的是steam to memory...

weixin_35908791的博客 1596

Kotlin 7. Kotlin 函数介绍:扩展函数,中缀函数,运算符函数,带有varrag输入的函数

这里介绍Kotlin的不同种类函数,包括:一般的函数表达方式,扩展函数,中缀函数,运算符函数,带有`varrag`输入的函数。

破浪会有时的博客 668

卫星测试科普(三):卫星载荷的核心测试设备探秘

总的说来,卫星芯片与元器件,部组件与单机,整机与子系统,系统与整星的设计、定型、制造、验证、总装、发射、在轨等环节都离不开各种测试场景,对于这些卫星测试场景而言,“射频三大件”与高速数字示波器是构成强大测试系统的基础。卫星通信信号生成:覆盖Ka、Q等波段,具备扫频、脉冲、数字调制、噪声信号、雷达信号、数据链信号、OFDM 等多种信号库,用于测试和验证卫星电子设备的电气性能、频率响应、抗干扰能力等。卫星的通信需要高效、快速地传输大量数据,高速信号的质量至关重要,如果卫星信号不佳,卫星就会出现故障或者隐患。

spwbjss的博客 2317

java如何实取随机数_java - 如何在Kotlin中获取随机数?

java - 如何在Kotlin中获取随机数?可以在2个参数之间返回随机整数的通用方法,如ruby,可以使用rand(0..n)。有什么建议吗?16个解决方案208 votes我的建议是IntRange上的扩展函数来创建这样的randoms:CharKotlin> = 1.3,对Random的多平台支持从1.3开始,Kotlin自带多平台随机发生器。 这个KEEP描述了它。 您现在可以执行...

weixin_36169116的博客 1710

Go语言全面解析:从入门到精通

Go语言是由Google开发的一种静态类型、编译型编程语言,具有简洁、高效、安全的特点。它特别适合高并发服务、云原生应用和网络编程等场景。Go采用Goroutine和Channel实现轻量级并发,性能接近C/C++。与其他语言相比,Go语法更简洁但类型更严格,编译速度快且跨平台支持好。虽然Go支持多种设计模式和编程范式,但其面向对象实现方式与传统语言不同。标准库丰富且拥有Gin、GORM等企业级框架。核心语法包括包管理、变量声明、函数定义、流程控制等,适合构建高性能后端服务和系统工具。

博哥哥的博客 4925

影楼精修-肤色统一算法解析

本文介绍了影楼精修中肤色统一算法的实现方案,并以像素蛋糕软件为例进行详细分析。肤色统一旨在通过调整人像照片中皮肤区域的颜色,使其看起来更加均匀一致。像素蛋糕软件提供了AI肤色统一和传统肤色统一两种功能,分别适用于不同需求。传统肤色统一算法通过皮肤分割、人脸检测、亮度统一和颜色统一等步骤,实现了对皮肤区域的精细调整。文章还提供了亮度统一的核心代码,并对比了传统算法与AI算法的效果,指出AI算法在自然度和亮度矫正方面表现更优。整体而言,本文为影楼精修中的肤色统一提供了实用的技术参考。

Trent1985的专栏 2065

random.nextInt()的值重复

1、当random.netInt(数字)中数字小的时候,比较容易重复。这个随机是有规律的。 2、可以用math.random()替代 具体使用如下: 如果是个位数 int aa = (int)(Math.random()*11); 如果是多位,double dd= Math.random();   dd加上0和点总共19位。可以用long转一下...

行简 5913

【fpdlink显示】DS90UB948关于941连接948 GPIO调试问题

1. 前言 使用一个941连接2 948显示: 941的GPIO0/1/2/3到前948的GPIO0/1/2/3和941的D_GPIO0/1/2/3到948的GPIO0/1/2/3。 设置gpio3输出,则941的D_GPIO3设置高,而948的gpio3设置不高; 但设置gpio3输入后,看到941的D_GPIO3跟随948的gpio3变化。 2. 原理图连接 3. 测试代码 static int du90ub941_enable_port(struct goodix_ts_d

jzwjzw19900922的博客 2555

Kotlin基本语法

Kotlin基本语法

weixin_45625639的博客 1385

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

【Kotlin教程】kotlin基本语法

【kotlin教程】本专栏作者会更新关于kotlin的相关知识点,欢迎大家评论和提建议! 【有需求请联系作者!】

程序开发 522

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

kotlin基本语法--kotlin官网文档学习

具体功能实例下载:kotlin项目下载地址 kotlin语言中文网文档地址:https://www.kotlincn.net/docs/reference/basic-syntax.html 后面我们将会把kotlin语言中文网上的kotlin文档都过一遍,我会把所有文档上有的内容都用kotlin语言写成app并且展示出来,今天是基本语法, 基本展示的界面是用listView存储的,基本页面

u013017215的博客 736

Kotlin研发第一弹——基本语法

基本语法 基本语法 包定义 定义函数 定义局部变量 注释 使用字符串模板 使用条件表达式 使用可空变量以及空值检查 使用值检查以及自动转换 使用for循环 使用while循环 使用when表达式 使用ranges 使用集合 基本语法 包定义 在源文件的开头定义包 package com.wyc.accountschool.kotlin.test.zheshi.zhende import...

u010785186的专栏 251

Kotlin-基本语法

基本语法废话不多说以后就开始逐步讲解Kotlin的使用。定义包名在源文件的开头定义包名:package sundy.demo import java.util.*这里需要注意的是包名不必和文件夹路径一致:源文件可以放到任意位置。(自己试一下,就不贴图了)定义函数函数声明在 kotlin 中用关键字 fun 声明函数:fun double(x: Int): Int {}函数用法通过传统的方法调用函数v

u011150681的博客 378

Kotlin属性和字段与基本语法

Kotlin 属性 字段 基本语法

永远不要停下学习的脚步。 5165

Kotlin 基本语法

基本语法原文连接 https://github.com/huanglizhuo/kotlin-in-chinese/blob/master/GettingStarted/Basic-Syntax.md 定义包名在源文件的开头定义包名:package my.demo import java.util.* //… 包名不必和文件夹路径一致:源文件可以放在任意位置。定义函数定义一个函数接受两个

fjnu_se的博客 319

Kotlin 基本语法

Kotlin 基本语法 翻译:https://kotlinlang.org/docs/reference/basic-

璐豪笔记 3617
上一篇: Kotlin简介及配置
下一篇: Kotlin中String的常用方法
Android开发猿
博客等级 码龄11年 72粉丝 34原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值