Kotlin学习(一)

Kotlin学习(一)

1.使用IDEA构建Kotlin项目

在这里插入图片描述

新建工程即可

我这里选择的Build System是IntelliJ,虽然我没用过但是这是Kotlin基础学习应该不会用到其他依赖

2.Hello World

package com.simonfun main(args:Array<String>){println("hello kotlin");
}

3.常量与变量

package com.simon
//变量声明与使用
fun main(args:Array<String>){//变量var name = "张三"name = "李四"println(name)//    name = 8 //8是一个数字不能放到String里面println(name)
}

常见的数据类型:

Byte 2的8次方

Short 2的16次方

Int 2的32次方

Long 2的64次方

Float 小数点后6位

Double 小数点后15-16位

String 字符串

Boolean 布尔型

4.类型推断

package com.simonfun main(args:Array<String>){var i = 18//i = 9999999999//The integer literal does not conform to the expected type Int//我们发现我们的i自动编译为Int类型var j = 9999999999//我们的j可以存储自然那么编译为Long类型var name:String = "simon"//我们的name就是存放一个字符串的空间//我们根据等号后面来推断数据类型val num = "123"//num是常量所以说是只读}

根据等号后面来自动推断类型

所以我们的var name:String = “simon” 可以写为 var name = “simon”

5.基础类型大小

package com.simonfun main(args:Array<String>) {val  aByte:Byte = Byte.MAX_VALUE;val  bByte:Byte = Byte.MIN_VALUE;println(aByte)println(bByte)val  aLong:Long = Long.MAX_VALUE;val  bLong:Long = Long.MIN_VALUE;println(aLong)println(bLong)
}

6.布尔值类型

package com.simonfun main(args:Array<String>) {var num1 = 1var num2 = 4println(num1<num2)var num3 = Math.sqrt(5.0) - Math.sqrt(4.0)var num4 = Math.sqrt(4.0) - Math.sqrt(3.0)println(num3<num4)
}

7.函数

package com.simon
//1.函数基本定义格式
fun sum(a:Int,b:Int):Int{//函数返回值Intreturn a + b
}fun main(args: Array<String>) {//2.可以用表达式作为函数体//表达式不是public就可以省略返回值类型fun sum(a: Int,b: Int) = a+b}
// 3.public 方法表达式就要明确写出
public fun sumPub(a:Int , b: Int):Int = a+b
//4.无返回值可以省略
fun printZzz(){println("printZzz")
}
public fun printXxx(){println("printXxx")
}
//5.可变长参数列表
fun vars (vararg v:Int){for (vt in v) {println(vt)}
}
//6.lambda表达式
val sumLambda: (Int,Int)->Int = {x,y -> x+y}

8.字符串模板

package com.simonfun main(args: Array<String>) {//$ 表示一个变量名或者变量值var a = 1var s1 = "a is $a"println(s1)a = 2//${}是一个变量的方法返回值var s2 = "${s1.replace("is","was")},but now a = $a";println(s2)
}

总结:

$ 可以是变量值

${} 可以是变量的方法返回值

9.NULL检查

package com.simonfun main(args: Array<String>) {//类型后面加?表示可以为空var age:Int? = null
//    var age1:Int = null//抛出空指针异常
//    val ages = age!!.toInt()//不作处理返回nullvar ages1 = age?.toInt()//age为空返回-1var ages2 = age?.toInt() ?:-1//    println(ages)println(ages1)println(ages2)println(parseInt("zzz"))println(parseInt("123"))
}
//当一个引用可能是null时,对应的类型声明必须明确地标记为可为null
fun parseInt(str:String):Int?{return str.toIntOrNull();
}//上面这段代码就是我们的age这个变量是int类型但是我们赋值为null,因为加了问号说明可以为null
//    var age1:Int = null 是抛出空指针,如果是数字就不会抛出
//    var ages1 = age?.toInt() 这个就自然输出null了不处理
//    var ages2 = age?.toInt() ?:-1 这个就处理了如果是null就赋值-1

10类型检测以及自动类型转换

package com.simonfun main(args: Array<String>) {println(getStringLength(123))println(getStringLength("123"))
}fun getStringLength(obj: Any):Int?{
//    if (obj is String){
//        return obj.length
//    }
//    return nullif (obj !is String){return null}//在这个分支中,obj会自动转换为String类型return obj.length
}

is and !is 类型判断

11.区间

package com.simonfun main(args: Array<String>) {for (i in 1..4) print(i)//什么都不输出,所以得知默认是升序的for (i in 4..1) print(i)for (i in 1..10){print(i)}println()//使用step指定步长for(i in 1..4 step 2){print(i)![在这里插入图片描述](https://img-blog.csdnimg.cn/73dd3e82979a433291798d7c797b1a22.png#pic_center)}println()for(i in 4 downTo  1 step 2){print(i)}println()//使用until函数排除结束元素for(i in 1 until 10){print(i)}
}

区间 in xx…xx

默认升序,downTo降序

并且step指定步长

并且until排除结尾

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

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

相关文章

UASRT(2)

UASRT参数配置 数据发送过程 1.双缓冲 当要发送三个数据 且是连续发送 第一个数据写入TDR寄存器 然后到移位寄存器发送&#xff08;一个一个bit的发送&#xff09;在第一个数据在移位寄存器发送的时候第二个数据就已经被写入TDR寄存器了等到第一个数据发送完第二个数据就进入…

jetbrains ai 提示该地区不可用的百分百解决方案,亲测有效

问题 申请 jetbrains 的 ai assistant 白名单已经通过&#xff0c;但是在使用 ai assistant 的过程中提示 The usage of the service is not permitted in your location ,我所在的地区是中国&#xff0c;目前该插件是对中国大陆关闭的。 刚开始我怀疑是代理的问题&#xff…

【STL】string类 (上) <vector>和<list>的简单使用

目录 一&#xff0c;什么是 STL 二&#xff0c;STL 的六大组件 三&#xff0c;标准库中的 string 类 1&#xff0c;string 类 2&#xff0c;string 类的常用接口 1&#xff0c;string类对象的常见构造 2&#xff0c;string&#xff08;const string& str&#xff…

OTP语音芯片 NV080D在智能空气检测仪的应用

随着人们对健康和环保的关注度不断提高&#xff0c;人们对看不见的家居环境也越来越重视。智能空气检测仪的市场需求也在不断增长中&#xff0c;呈现稳中向好的趋势。智能空气检测仪能够检测室内空气中的PM2.5、甲醛、TVOC等有害物质&#xff0c;同时还可以检测温湿度、空气质量…

5g路由器赋能园区无人配送车联网应用方案

随着人工智能、无人驾驶技术和自动化技术的不断进步&#xff0c;无人配送技术得到了极大的发展。园区内的物流配送任务通常是繁琐的&#xff0c;需要大量的人力资源和时间。无人配送技术能够提高配送效率并减少人力成本。无人配送车辆和机器人能够根据预定的路线和计划自动完成…

Rapid chain

这篇文章中提到 Elastico 运行6个epoch就会退化到公式失败率高达 0.97 omnileger 在第一个epoch需要一个初始化的随机种子&#xff0c;来初始化 VRF。这需要 O ( n 2 ) O(n^2) O(n2) 的复杂度&#xff0c;并且OminLedger 需要通过轻节点驱动枷锁和解锁的过程&#xff0c;这户家…

主键问题以及分布式 id

分布式 id 需要处理的问题主要是同一时间在多台机器中保证生成的 id 唯一&#xff0c;为了这么做我们可以这么做&#xff1a; 分布式 id 生成策略 先说几个已经被淘汰的策略引出分布式 id 的问题 1&#xff0c;UUID&#xff1a;UUID 随机并且唯一&#xff0c;在单一的数据库…

Android问题笔记四十六:解决open failed: EACCES (Permission denied) 问题

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列点击跳转>ChatGPT和AIGC &#x1f449;关于作者 专…

[算法学习笔记](超全)概率与期望

引子 先来讲个故事 话说在神奇的OI大陆上&#xff0c;有一只paper mouse 有一天&#xff0c;它去商场购物&#xff0c;正好是11.11&#xff0c;商店有活动 它很荣幸被选上给1832抽奖 在抽奖箱里&#xff0c;有3个篮蓝球&#xff0c;12个红球 paper mouse能抽3次 蒟蒻的p…

Cascade-MVSNet论文笔记

Cascade-MVSNet论文笔记 摘要1 立体匹配&#xff08;Stereo Matching&#xff09;2 多视图立体视觉&#xff08;Multi-View Stereo&#xff09;3 立体视觉和立体视觉的高分辨率输出4 代价体表达方式&#xff08;Cost volume Formulation&#xff09;4.1 多视图立体视觉的3D代价…

RT-DETR优化改进:SEAM、MultiSEAM分割物与物相互遮挡、分割小目标性能

🚀🚀🚀本文改进:SEAM、MultiSEAM分割物体与物体相互遮挡性能 🚀🚀🚀SEAM、MultiSEAM分割物与物相互遮挡、分割小目标性能 🚀🚀🚀RT-DETR改进创新专栏:http://t.csdnimg.cn/vuQTz 学姐带你学习YOLOv8,从入门到创新,轻轻松松搞定科研; RT-DETR模型创新…

数字化时代,VR全景如何助力商企抢占市场份额?

随着5G技术的逐步落地&#xff0c;VR全景已经开始逐渐被应用到各行各业中了&#xff0c;VR餐饮、VR房产、VR景区、VR工厂、VR学校、VR博物馆等等&#xff0c;甚至大家所熟悉的汽车之家中的全景看车、贝壳和链接的全景看房等&#xff0c;所应用的都是VR全景的形式。 前几年电商对…

设计模式(二)-创建者模式(2)-工厂模式

一、为何需要工厂模式&#xff08;Factory Pattern&#xff09;? 由于简单工厂模式存在一个缺点&#xff0c;如果工厂类创建的对象过多&#xff0c;使得代码变得越来越臃肿。这样导致工厂类难以扩展新实例&#xff0c;以及难以维护代码逻辑。于是在简单工厂模式的基础上&…

HTML易忽略的角落【目录】

目前已有文章 **** 篇 本专栏是汇集了一些HTML常常被遗忘的知识&#xff0c;这里算是温故而知新&#xff0c;往往这些零碎的知识点&#xff0c;在你开发中能起到炸惊效果。我们每个人都没有过目不忘&#xff0c;过久不忘的本事&#xff0c;就让这一点点知识慢慢渗透你的脑海。 …

用js切割文字,超出省略

因为项目需要,当人员超过两个事则进行超出省略,如将一个 “张三,李四,王五”,这样的字串切割成"张三,李四…" 效果: 主要用的是基础的切割法 isOutlier(text) {if (!text || text "") return;const parts text.split(","); // 使用逗号将字…

【canvas】了解canvas,并实现会议预定记录钟表盘、页面水印

初识canvas Canvas 有什么用 Canvas 允许使用直线、曲线、矩形、圆形等基本图形绘制出复杂的图形 Canvas 可以加载图像&#xff0c;并进行各种处理&#xff0c;如裁剪、缩放、旋转等操作 Canvas 可以通过 JavaScript 控制&#xff0c;所以你可以利用帧动画原理&#xff0c;…

Leetcode2937. 使三个字符串相等

Every day a Leetcode 题目来源&#xff1a;2937. 使三个字符串相等 解法1&#xff1a;枚举 设 len1、len2、len3 分别为字符串 s1、s2、s3 的长度。 min_len 是 3 个字符串长度的最小值。 枚举 len min_len 到 len 1&#xff0c;设 t1、t2、t3 分别是字符串 s1、s2、s…

全链路监控--pinpoint

一、pinpoint架构原理 架构组成 Pinpoint Agent:和自己运行的应用关联起来的探针 Pinpoint Collector:收集各种性能数据 Pinpoint-Web: 将收集到的数据显成为 WEB网页显示 HBase Storage: 存储收集到的数据 工作原理 pinpoint的核心思想是在各个服务节点之间彼此调用时&a…

Unity 6 是下一个 LTS 版本即将发布

Unity 公司宣布&#xff0c;即将发布 Unity 6&#xff0c;并表示其为下一个长期支持版本 (LTS)。 Unity 在大会上演示了全新的 Unity 6引擎&#xff0c;并通过 Syncy Studios 采用 Unity 6 制作的《幻想王国&#xff08;Fantasy Kingdom&#xff09;》Demo 进行了演示&#xff…

面试题 三

一、this 手写call //1、定义myCall方法 //3、接收剩余参数并返回结果 Function.prototype.myCall function (thisArg, ...arg) {// console.log(thisArg); //person对象// console.log(this); //func方法//2、设置this并调用原函数//下面三行代码有个缺陷就是如果pers…