百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

Kotlin入门1. 语法基础

liuian 2025-03-12 16:41 5 浏览


一、简介

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) {
    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? { ... }表示该函数返回一个可能为null的Optional类型的变量。
  • 使用Java的注解:在Java中,可以使用@NonNull和@Nullable注解来标记方法的参数或返回值是否可以为null。在Kotlin中也可以使用这些注解来确保null安全。

相关推荐

GANs为何引爆机器学习?这篇基于TensorFlow的实例教程为你解惑!

「机器人圈导览」:生成对抗网络无疑是机器学习领域近三年来最火爆的研究领域,相关论文层出不求,各种领域的应用层出不穷。那么,GAN到底如何实践?本文编译自Medium,该文作者以一朵玫瑰花为例,详细阐...

高丽大学等机构联合发布StarGAN:可自定义表情和面部特征

原文来源:arXiv、GitHub作者:YunjeyChoi、MinjeChoi、MunyoungKim、Jung-WooHa、SungKim、JaegulChoo「雷克世界」编译:嗯~...

TensorFlow和PyTorch相继发布最新版,有何变化

原文来源:GitHub「机器人圈」编译:嗯~阿童木呀、多啦A亮Tensorflow主要特征和改进在Tensorflow库中添加封装评估量。所添加的评估量列表如下:1.深度神经网络分类器(DNNCl...

「2022 年」崔庆才 Python3 爬虫教程 - 深度学习识别滑动验证码缺口

上一节我们使用OpenCV识别了图形验证码躯壳欧。这时候就有朋友可能会说了,现在深度学习不是对图像识别很准吗?那深度学习可以用在识别滑动验证码缺口位置吗?当然也是可以的,本节我们就来了解下使用深度...

20K star!搞定 LLM 微调的开源利器

LLM(大语言模型)微调一直都是老大难问题,不仅因为微调需要大量的计算资源,而且微调的方法也很多,要去尝试每种方法的效果,需要安装大量的第三方库和依赖,甚至要接入一些框架,可能在还没开始微调就已经因为...

大模型DeepSeek本地部署后如何进行自定义调整?

1.理解模型架构a)查看深度求索官方文档或提供的源代码文件,了解模型的结构、输入输出格式以及支持的功能。模型是否为预训练权重?如果是,可以在预训练的基础上进行微调(Fine-tuning)。是否需要...

因配置不当,约5000个AI模型与数据集在公网暴露

除了可访问机器学习模型外,暴露的数据还可能包括训练数据集、超参数,甚至是用于构建模型的原始数据。前情回顾·人工智能安全动态向ChatGPT植入恶意“长期记忆”,持续窃取用户输入数据多模态大语言模型的致...

基于pytorch的深度学习人员重识别

基于pytorch的深度学习人员重识别Torchreid是一个库。基于pytorch的深度学习人员重识别。特点:支持多GPU训练支持图像的人员重识别与视频的人员重识别端到端的训练与评估简单的re...

DeepSeek本地部署:轻松训练你的AI模型

引言:为什么选择本地部署?在AI技术飞速发展的今天,越来越多的企业和个人希望将AI技术应用于实际场景中。然而,对于一些对数据隐私和计算资源有特殊需求的用户来说,云端部署可能并不是最佳选择。此时,本地部...

谷歌今天又开源了,这次是Sketch-RNN

前不久,谷歌公布了一项最新技术,可以教机器画画。今天,谷歌开源了代码。在我们研究其代码之前,首先先按要求设置Magenta环境。(https://github.com/tensorflow/magen...

Tensorflow 使用预训练模型训练的完整流程

前面已经介绍了深度学习框架Tensorflow的图像的标注和训练数据的准备工作,本文介绍一下使用预训练模型完成训练并导出训练的模型。1.选择预训练模型1.1下载预训练模型首先需要在Tensorf...

30天大模型调优学习计划(30分钟训练大模型)

30天大模型调优学习计划,结合Unsloth和Lora进行大模型微调,掌握大模型基础知识和调优方法,熟练应用。第1周:基础入门目标:了解大模型基础并熟悉Unsloth等工具的基本使用。Day1:大模...

python爬取喜马拉雅音频,json参数解析

一.抓包分析json,获取加密方式1.抓包获取音频界面f12打开抓包工具,播放一个(非vip)视频,点击“媒体”单击打开可以复制URL,发现就是我们要的音频。复制“CKwRIJEEXn-cABa0Tg...

五、JSONPath使用(Python)(json数据python)

1.安装方法pipinstalljsonpath2.jsonpath与Xpath下面表格是jsonpath语法与Xpath的完整概述和比较。Xpathjsonpath概述/$根节点.@当前节点...

Python网络爬虫的时候json=就是让你少写个json.dumps()

大家好,我是皮皮。一、前言前几天在Python白银交流群【空翼】问了一个Python网络爬虫的问题,提问截图如下:登录请求地址是这个:二、实现过程这里【甯同学】给了一个提示,如下所示:估计很多小伙伴和...