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

Kotlin入门1. 语法基础

Kotlin入门1. 语法基础

  • 一、简介
  • 二、在Idea创建一个示例项目
  • 三、基本语法
    • 1. 第一个程序
    • 2. 基本数据类型
      • (1) 数字
      • (2) 类型转换
      • (3) 数学运算
        • 位运算
      • (4)可空类型
    • 3. 函数
    • 4. 字符串
      • (1) 字符串拼接
      • (2) 字符串查找
      • (3) 字符串替换
      • (4) 字符串分割
    • 5. null 安全的变量

一、简介

Kotlin是一种静态编程语言,由JetBrains开发。它被设计为与Java兼容,并且可以在Java平台上运行。Kotlin支持现代编程语言的许多特性,如函数式编程、对象导向编程和元编程。这使得Kotlin能够方便地与Java代码混编,并且可以在没有JVM(Java虚拟机)的设备上运行。

Kotlin可以编译成Java字节码,因此可以在Java虚拟机上运行。此外,Kotlin也可以编译成JavaScript,使得它可以在浏览器中运行。这使得Kotlin成为一个适用于各种平台的多平台语言。

Kotlin的主要特点包括:

  • 兼容Java:Kotlin可以与Java代码和库无缝交互,这使得它易于在现有Java项目中使用。
  • 空值安全:Kotlin对空值进行了严格的检查,这减少了NullPointerException等常见错误。
  • 函数式编程:Kotlin支持函数式编程,这使得它可以轻松地处理集合和数组。
  • 简洁的语法:Kotlin的语法比Java更简洁,这使得编写和理解代码变得更加容易。
  • 与Java虚拟机(JVM)的兼容性:Kotlin编写的代码可以在Java虚拟机(JVM)上运行,这使得Kotlin成为一个适用于构建跨平台应用程序的强大工具。

Kotlin已正式成为Android官方支持开发语言,这使得它成为开发Android应用的一个越来越受欢迎的选择。

本学习系列使用开发工具为:

  • windows 11
  • Idea

二、在Idea创建一个示例项目

在这里插入图片描述
创建好的项目带一个示例程序:
在这里插入图片描述

三、基本语法

1. 第一个程序

  • Kotlin文件扩展名为.kt;
  • Kotlin 程序运行的起点为 main 函数;

写一个简单的.kt程序:

fun main(args: Array<String>) {println("Hello World!")
}

点击运行按钮运行程序。

在这里插入图片描述
要点:

  • kotlin 语句不需要用;结束

2. 基本数据类型

(1) 数字

定义数据类型的语法:

val i: Int = 100

Kotlin内置的数字类型:

  • Double 64位
  • Float 32位
  • Long 64位
  • Int 32位
  • Short 16位
  • Byte 8位
    Kotlin默认的小数类型为Double类型。
    Kotlin支持 _ 分割数字,如 1_0000。

(2) 类型转换

  • 转换为字节型 : 10.toByte()
  • 转换为短整型: (12.34).toShort()
  • 转换为整型: (12.34).toInt()
  • 转换为长整型:(1234.56).toLong()
  • 转换为单精度小数:123.toFloat()
  • 转换为双精小数: 123.toDouble()
  • 转换为字符:123.toChar()

(3) 数学运算

  • 常见运算: + - * /

位运算

  • shl 带符号左移;shr()
  • shr 带符号右移
  • ushr:无符号右移
  • and(bits): 与 &
  • or(bits) : 或 ||
  • xor(bits): 异或
  • inv() : 取反

(4)可空类型

如String? , Int、

3. 函数

函数是可重用的代码块,可以执行一个特定的任务,并且可以带有参数和返回值。在Kotlin中,函数的基本结构如下:

fun functionName(parameters): returnType {  // function body  // perform some action  return someValue  
}

其中:

  • fun 是关键字,用于声明这是一个函数。
  • functionName 是你给函数起的名字。
  • parameters 是传递给函数的参数,可以有零个或多个。参数之间用逗号分隔。
  • returnType 是函数返回的数据类型。如果函数不返回任何值,则使用 Unit。
  • function body 是函数的具体实现,这里可以执行需要的任务。
  • return someValue 是函数执行完毕后返回的值。如果函数没有返回值,则不需要这个语句。

下面是一个具体的盒子:

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

这个函数名为 add,它接受两个整数参数 a 和 b,并返回它们的和。调用的方法如下:

val result = add(3, 4)  
println(result)  // Prints: 7

这个函数通过加法运算实现了它的任务,并返回结果。

4. 字符串

Kotlin字符串是一个字符序列,可以使用双引号(" ")括起来的字符序列来表示。例如:

val str = "Hello, World!"

在Kotlin中,字符串还支持许多操作,如拼接、查找、替换、分割等。下面是一些常用的字符串操作示例:

(1) 字符串拼接

在Kotlin中,可以使用加号(+)操作符来拼接字符串。例如:

val str1 = "Hello"  
val str2 = "World"  
val result = str1 + str2 // 拼接字符串  
println(result) // 输出:HelloWorld

(2) 字符串查找

在Kotlin中,可以使用contains()方法来检查一个字符串是否包含另一个字符串。例如:

val str = "Hello, World!"  
val searchStr = "World"  
if (str.contains(searchStr)) {  println("The string contains \"$searchStr\"")  
} else {  println("The string does not contain \"$searchStr\"")  
}

输出:

The string contains "World"

(3) 字符串替换

在Kotlin中,可以使用replace()方法来替换字符串中的某个或某些字符。例如:

val str = "Hello, World!"  
val newStr = str.replace("World", "Kotlin")  
println(newStr) // 输出:Hello, Kotlin!

(4) 字符串分割

在Kotlin中,可以使用split()方法将字符串按照指定的分隔符分割成字符串数组。例如:

val str = "apple,banana,orange"  
val arr = str.split(",") // 以逗号为分隔符,将字符串分割成字符串数组  
for (item in arr) {  println(item) // 输出:apple、banana、orange  
}

5. null 安全的变量

null是一个特殊的关键字,表示空值。在某些情况下,如果一个变量的值为null,可能会导致程序出现异常或错误。因此,确保变量的值不为null是非常重要的。在Kotlin中,null安全是一种保障,用于确保程序中不会出现null值。

Kotlin是一种静态类型语言,编译器在编译时会检查代码中可能存在的类型错误同,其中之一就是null安全。Kotlin通过类型推断和注解来确保变量的值不为null。

在Kotlin中,可以使用null关键字来表示空值。
为了避免出现空指针异常,Kotlin提供了一些机制来确保null安全。

  1. 首先,Kotlin具有空值安全类型。例如:
var str: String? = null

在这个例子中,String?表示该变量可能为null。如果尝试在代码中调用str.length(),编译器会发出警告,因为这可能会导致空指针异常。

为了解决这个问题,可以使用非空判断(non-null assertion)。例如:

if (str != null) {  println(str.length())  
} else {  println("String is null")  
}

在这个例子中,如果str不为null,则可以调用str.length()。否则,将输出"String is null"。

另外,Kotlin还提供了一些其他机制来确保null安全。例如:

  • Elvis运算符(?:):如果左边的表达式为null,则返回右边的表达式。例如:str?.length() ?: 0表示如果str不为null,则返回str的长度,否则返回0。
  • Optional类型:在Java中,可以使用Optional类型来避免返回null值。在Kotlin中也可以使用类似的类型来确保null安全。例如:fun findName(): Optional<String?>? { … }表示该函数返回一个可能为null的Optional类型的变量。
  • 使用Java的注解:在Java中,可以使用@NonNull和@Nullable注解来标记方法的参数或返回值是否可以为null。在Kotlin中也可以使用这些注解来确保null安全。

相关文章:

Kotlin入门1. 语法基础

Kotlin入门1. 语法基础 一、简介二、在Idea创建一个示例项目三、基本语法1. 第一个程序2. 基本数据类型(1) 数字(2) 类型转换(3) 数学运算位运算 &#xff08;4&#xff09;可空类型 3. 函数4. 字符串(1) 字符串拼接(2) 字符串查找(3) 字符串替换(4) 字符串分割 5. null 安全的…...

MVCC简介、工作流程、优缺点

目录 简介 相关概念 工作流程 MVCC优缺点 简介 MVCC&#xff08;Multi-Version Concurrency Control&#xff09;即多版本并发控制&#xff0c;是通过维护数据的历史版本&#xff0c;从而解决并发访问情况下的读一致性问题 相关概念 读锁&#xff1a; 也叫共享锁、S锁。若…...

pandas由入门到精通-pandas的数据结构

pandas数据分析-pandas的数据结构 pandas 数据结构Series1. 创建Series数组2. 性质3. 索引4. 运算DataFrame1. 创建Df数组2. 性质3.索引4. 对列进行增删改Index Objects本文介绍pandas中一些常用的属性方法的概述,给读者提供快速学习的架构和思路。表格中提供的一些参数方法没…...

jenkins+ssh+Putty构建windows的IIS服务发布

使用JenkinssshPutty发布windows IIS服务 下面是使用Jenkins、SSH和PuTTY实现Windows IIS服务发布的步骤&#xff1a; 在构建服务器上安装Windows SSH服务、PuTTY和7-Zip软件。在部署服务器上也安装Windows SSH服务和7-Zip软件。在构建服务器上使用批处理命令执行编译&#x…...

服务器和普通电脑有何区别?43.248.189.x

简单来讲&#xff0c;服务器和电脑的功能是一样的&#xff0c;我们也可以把服务器称之为电脑&#xff08;PC机&#xff09;&#xff0c;只是服务器对稳定性与安全性以及处理器数据能力有更高要求&#xff0c;比如我们每天浏览一个网站&#xff0c;发现这个网站每天24小时都能访…...

Zookeeper的使用

一、Zookeeper简介 分布式协调框架&#xff0c;小型的树形结构数据共享储存系统。 zookeeper的应用场景 集群管理 注册中心 配置中心 发布者将数据发布到ZooKeeper一系列节点上面&#xff0c;订阅者进行数据订阅&#xff0c;当数据有变化时&#xff0c;可及时得到数据的变…...

【实用 Python 库】使用 XPath 与 lxml 模块在 Python 中高效解析 XML 与 HTML

在今天的信息时代&#xff0c;数据无处不在&#xff0c;从网络爬虫到数据挖掘&#xff0c;从文本处理到数据分析&#xff0c;我们时常需要从结构化文档中提取有用的信息。XPath 是一门强大的查询语言&#xff0c;它可以在 XML 与 HTML 等文档中定位特定的元素与数据。而在 Pyth…...

数据库的基本概念

数据库 数据库由表集合组成&#xff0c;它是以一定的组织方式存储的相互有关的数据集合。 表&#xff1a;记录&#xff1a;行&#xff0c;字段&#xff08;属性&#xff09;&#xff1a;列&#xff0c;以行列的形式就组成了表&#xff08;数据存储在表中&#xff09;。 关系数…...

无涯教程-Android - 环境设置

您可以从Oracle的Java网站下载最新版本的Java JDK-Java SE下载&#xff0c;您将在下载的文件中找到有关安装JDK的说明,按照给定的说明安装和配置安装程序。最后,将PATH和JAVA_HOME环境变量设置为引用包含 java 和 javac 的目录,通常分别是java_install_dir/bin和java_install_d…...

将 ChatGPT 与 ReactJS 集成以实现更智能的对话界面

在本博客中,我们将探讨如何使用 Kommunicate 平台将 ChatGPT 与 ReactJS 集成,从而更轻松地在网站上部署和管理聊天机器人。 随着技术世界的不断发展,聊天机器人已成为许多企业不可或缺的一部分,提供高效、个性化的客户交互。在众多可用的人工智能聊天机器人解决方案中,C…...

关于xml中返回string类型代码中用list接收的问题,扫描

1.结论,xml中返回为string的话,在list中只会取出来第一个元素 //根据value查询GetMapping("getTest")public List<HashMap> getTest() {List<HashMap> list dictService.getTest();return list;} <select id"getTest" resultType"jav…...

【前端demo】CSS border-radius可视化 原生实现

文章目录 效果原理代码 前端demo系列目录&#xff1a;https://blog.csdn.net/karshey/article/details/132585901 效果 参考&#xff1a; Fancy Border Radius Generator (9elements.github.io) https://border-radius.com/ CSS border-radius 新玩法(含可视化生成工具) - …...

Qt Creator使用Clang Format方法

Qt Creator使用Clang Format 习惯性的想格式化代码&#xff0c;发现Qt Creator默认居然是没有代码格式化的&#xff0c;只有一个缩进。 Qt Creater中有个插件&#xff1a;beautifier&#xff0c;在"帮助->关于"插件中&#xff0c;开启“Beautifier”即可&#xf…...

智慧矿山2.0:煤矿智能化综合管理AI大数据监管平台建设方案设计

一、行业背景 能源与煤矿是我国国民经济的重要物质生产部门和支柱产业之一&#xff0c;同时也是一个安全事故多发的高危行业&#xff0c;施工阶段的现场管理对工程成本、进度、质量及安全等至关重要。煤矿智能化既是未来趋势&#xff0c;更是产业发展需求&#xff0c;建设智慧…...

Linux——(第一章)Linux的入门

VMwear workstations下载及安装 Ubuntu server 18.04安装 VScode下载与安装 使用VS Code连接远程服务器 MobaXterm的下载安装及远程连接 Filezila的下载、安装与使用&#xff08;向服务器传输文件&#xff09; 目录 1.概述 2.Linux和Windows的区别 3.VM的安装与使用 1.概述 …...

十六、策略模式

一、什么是策略模式 策略&#xff08;Strategy&#xff09;模式的定义&#xff1a;该模式定义了一系列算法&#xff0c;并将每个算法封装起来&#xff0c;使它们可以相互替换&#xff0c;且算法的变化不会影响使用算法的客户。策略模式属于对象行为模式&#xff0c;它通过对算法…...

Python装饰器

什么是python装饰器&#xff1f; 顾名思义&#xff0c;从字面意思就可以理解&#xff0c;它是用来"装饰"Python的工具&#xff0c;使得代码更具有Python简洁的风格。换句话说&#xff0c;它是一种函数的函数&#xff0c;因为装饰器传入的参数就是一个函数&#xff0…...

【Spring】使用自定义注解方式实现AOP鉴权

AOP&#xff0c;是一种面向切面编程&#xff0c;可以通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。 在软件开发中&#xff0c;鉴权&#xff08;Authentication&#xff09;是一项非常重要的安全措施&#xff0c;用于验证用户身份和权限。在应用程序中&…...

Go几种读取配置文件的方式

比较有名的方案有 使用viper管理配置[1] 支持多种配置文件格式&#xff0c;包括 JSON,TOML,YAML,HECL,envfile&#xff0c;甚至还包括Java properties 支持为配置项设置默认值 可以通过命令行参数覆盖指定的配置项 支持参数别名 viper[2]按照这个优先级&#xff08;从高到低&am…...

每日一题(反转链表)

每日一题&#xff08;反转链表&#xff09; 206. 反转链表 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 可以定义一个新的newhead结构体指针。再定义cur指针和next指针互相配合&#xff0c;将原链表中的节点从头到尾依次头插到newhead链表中&#xff0c;同时更…...

ARM64 Linux内核启动入口stext深度解析:从汇编到C环境的构建

1. 项目概述&#xff1a;从开机到内核的第一行代码 按下电脑的电源键&#xff0c;屏幕上闪过一行行启动信息&#xff0c;最终进入我们熟悉的操作系统界面。这个看似简单的过程背后&#xff0c;隐藏着一系列精密而复杂的交接仪式。对于Linux内核开发者或系统底层爱好者而言&…...

iOS 27 开放 AI 生态@ACP#小型化扩展黄金风口,IX8008全面超越 ASM2806,铸就嵌入式 AI 扩展核心

苹果 iOS 27 系统全面开放第三方 AI 模型自由切换&#xff0c;支持 Claude、Gemini、DeepSeek 等主流大模型深度接入&#xff0c;iPhone/iPad 成为全球最大 AI 流量入口。这一变革引爆小型 AI 扩展坞、嵌入式 AI 终端、便携存储扩展、迷你主机、车载 AI五大硬件新机遇。作为连接…...

源代码论文分享|图书管理系统!

这份「图书管理系统」源码和论文&#xff0c;适合你在最需要“有个靠谱参考”的时候打开。 不是那种只放一堆代码、让人自己猜怎么跑的资料&#xff0c;也不是标题写得很大、内容却很空的论文模板。它更像一份已经整理好的项目包&#xff1a;有源码、有论文&#xff0c;可以直…...

MegSpot视觉对比工具:3个专业级视觉分析难题的终极解决方案

MegSpot视觉对比工具&#xff1a;3个专业级视觉分析难题的终极解决方案 【免费下载链接】MegSpot MegSpot是一款高效、专业、跨平台的图片&视频对比应用 项目地址: https://gitcode.com/gh_mirrors/me/MegSpot 作为一名视觉内容创作者或质量检测人员&#xff0c;你是…...

ssm基于Java的试题库管理系统(10030)

有需要的同学&#xff0c;源代码和配套文档领取&#xff0c;加文章最下方的名片哦 一、项目演示 项目演示视频 二、资料介绍 完整源代码&#xff08;前后端源代码SQL脚本&#xff09;配套文档&#xff08;LWPPT开题报告/任务书&#xff09;远程调试控屏包运行一键启动项目&…...

GPT-Image 2 对标竞争者研发?——理性看待“对手传闻”的技术路径(2026 观察)

深度观察&#xff1a;OpenAI 是否在暗中加速 GPT-Image 2 对标竞争者研发&#xff1f;——理性看待“对手传闻”的技术路径&#xff08;2026 观察&#xff09;“竞争对手是否在秘密被研发&#xff1f;”“OpenAI 背后是不是在悄悄做某种 GPT-Image 2 的替代方案&#xff1f;”这…...

国内热门的广州租车工厂哪个好

在广州&#xff0c;租车需求日益增长&#xff0c;如何选择一家靠谱的租车工厂成为众多消费者关心的问题。今天&#xff0c;就为大家介绍一家热门的租车企业——广州市白驹旅游汽车有限公司&#xff08;简称白驹旅汽&#xff09;&#xff0c;并与其他大厂进行对比分析。车辆保障…...

SSD的‘垃圾回收’秘密:深入理解Trim指令与FTL闪存转换层的协作

SSD的‘垃圾回收’秘密&#xff1a;深入理解Trim指令与FTL闪存转换层的协作 当你在SSD上删除一个文件时&#xff0c;操作系统只是简单地标记这个文件占用的空间为"可重用"&#xff0c;但SSD内部的实际数据擦除过程远比这复杂。这种差异源于NAND闪存的物理特性——它不…...

终极指南:如何用BookGet快速下载全球50+图书馆古籍资源

终极指南&#xff1a;如何用BookGet快速下载全球50图书馆古籍资源 【免费下载链接】bookget bookget 数字古籍图书下载工具。 项目地址: https://gitcode.com/gh_mirrors/bo/bookget BookGet是一款强大的数字古籍图书下载工具&#xff0c;支持全球50多个知名数字图书馆的…...

简单三步让Windows焕然一新:Winhance中文版完整优化指南

简单三步让Windows焕然一新&#xff1a;Winhance中文版完整优化指南 【免费下载链接】Winhance-zh_CN A Chinese version of Winhance. C# application designed to optimize and customize your Windows experience. 项目地址: https://gitcode.com/gh_mirrors/wi/Winhance-…...