android开发---Kotlin语言基础语法

2024-09-06 22:36

本文主要是介绍android开发---Kotlin语言基础语法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

数据打印

变量

函数

程序逻辑控制

  if

 when

循环


数据打印

IDE采用的androidStudio 可自行官网下载

https://developer.android.google.cn/studio/archive?hl=zh-cn

  1. 新建项目

  2. 添加一个main方法,main()函数的左边出现了一个运行标志的小箭头。现在我们只要点击一下这个小箭

头,并且选择第一个Run选项,就可以运行这段Kotlin代码了

快速上手:没有安装编译器可以选择线上开发 https://try.kotlinlang.org

fun main () { println("hello world") }

变量

在Kotlin中定义变量的方式和Java区别很大,在Java中如果想要定义一个变 量,需要在变量前面声明这个变量的类型,比如说int a表示a是一个整型变量,String b表示b是一个字符串变量。而Kotlin中定义一个变量,只允许在变量前声明两种关键字:val和var。

val(value的简写)用来声明一个不可变的变量,这种变量在初始赋值之后就再也不能重新赋值,对应Java中的final变量。

var(variable的简写)用来声明一个可变的变量,这种变量在初始赋值之后仍然可以再被重新赋值,对应Java中的非final变量。

java

Kotlin

数据类型

int

Int

整型

long

Long

长整型

short

Short

短整型

float

Float

单精度浮点型

double

Double

双精度浮点型

boolean

Boolean

布尔型

char

Char

字符型

byte

Byte

字节型

Kotlin会自动判断数据类型 当然可以采用手动指定的形式 如下所示

fun main() { val a : Int = 10 println("a =" + a) }

函数

fun main() {val a = methodName(10,1)println("a=$a")
}fun methodName(param1: Int, param2: Int): Int {return param1+param2
}

fun main() { ... }

  • fun: 这是定义函数的关键字。无论你要定义什么函数,都需要用 fun 来声明。
  • main: 这是函数的名字。在 Kotlin 中,main 函数是程序的入口点。当你运行一个 Kotlin 程序时,它首先会执行 main 函数中的代码。
  • () { ... }: 函数名后面的括号里可以包含参数,但这里 main 函数没有任何参数。大括号 { ... } 包含了函数的主体部分,即实际执行的代码。
  • val a = methodName(10, 1): 调用 methodName 函数,并将返回的结果赋值给变量 a。这里传递了两个参数:101
  • println("a=$a"): 打印变量 a 的值到控制台

fun methodName(param1: Int, param2: Int): Int { ... }

  • 函数的参数列表。这个函数接收两个参数:

    • param1: Int: 参数 param1 的类型是 Int,即整数类型。
    • param2: Int: 参数 param2 的类型也是 Int
  • : Int: 函数的返回类型。这里的 Int 表示这个函数会返回一个整数值。

输出结果:

程序逻辑控制

  if

与java不同的是 Kotlin的if是有返回值的

fun main() {val a : Int = 10val c : Int = 1val b = methodName(a, c)println(b)}fun methodName(num1: Int , num2: Int) : Int{val value = if (num1 > num2) {num1}else {num2}return value
}

 when

如果你熟悉 Java,你可能会发现 Java 中的 switch 语句有一些局限性。传统的 switch 语句在以下几个方面不够理想:

  1. 类型限制:在 Java 中,switch 语句只能用于整型(intshort 等)、字符型(char)以及从 Java 7 开始支持的字符串(String)。对于其他数据类型,switch 不适用。

  2. 缺乏默认处理switch 语句中的每个 case 需要显式地添加 break 语句,否则会导致“穿透”现象,执行完当前 case 后会继续执行下一个 case,这容易导致意外的错误和难以追踪的 bug。

在 Kotlin 中,这些问题得到了解决,when 语句提供了更强大的功能和更简洁的语法。具体来说:

  1. 类型灵活性:Kotlin 的 when 语句支持多种数据类型,包括整型、字符型、字符串、甚至是自定义对象和范围。你可以用它处理更复杂的条件判断,而不必受限于 switch 语句的类型限制。

  2. 自动处理:Kotlin 的 when 语句自动处理了类型匹配,并且不需要像 switch 那样手动添加 break。每个 when 分支都是独立的,不会自动“穿透”到下一个分支,从而避免了 switch 中常见的错误。

  3. 类型匹配when 语句支持更复杂的匹配模式,如范围匹配、类型检查等,使得代码更加简洁易读。你还可以在 when 语句中使用任意表达式作为条件,而不仅仅是常量。

Java:

public class SwitchExample {public static void main(String[] args) {int day = 3; // Example input// Traditional switch statementswitch (day) {case 1:System.out.println("Monday");break;case 2:System.out.println("Tuesday");break;case 3:System.out.println("Wednesday");break;case 4:System.out.println("Thursday");break;case 5:System.out.println("Friday");break;case 6:System.out.println("Saturday");break;case 7:System.out.println("Sunday");break;default:System.out.println("Invalid day");break;}}
}

 Kotlin:

fun main() {val day = 3 // Example input// Kotlin when statementwhen (day) {1 -> println("Monday")2 -> println("Tuesday")3 -> println("Wednesday")4 -> println("Thursday")5 -> println("Friday")6 -> println("Saturday")7 -> println("Sunday")else -> println("Invalid day")}
}

循环

在 Java 中,我们主要使用两种循环语句:while 循环和 for 循环。Kotlin 也提供了这两种循环,但在 for 循环方面,Kotlin 对 Java 的 for 循环进行了很大的改进和优化。首先,我们来简要介绍一下 Kotlin 的 while 循环,因为它的用法与 Java 中的 while 循环几乎没有区别,所以我们这里不再详细讲解。如果你对 while 循环不太熟悉,通常在 C、C++ 或其他主流编程语言中,它们的用法是类似的。

接下来,我们重点介绍 Kotlin 中的 for 循环。在 Kotlin 中,for 循环与 Java 中的 for-i 循环有所不同。Kotlin 省略了 Java 中常用的 for-i 循环,而 for-each 循环则被改进为更为强大的 for-in 循环。我们只需学习 for-in 循环的用法即可。

在深入了解 for-in 循环之前,我们需要先了解一个 Kotlin 中的概念——区间。区间是 Kotlin 中一个非常实用的特性,它在 Java 中是没有的。我们可以使用如下 Kotlin 代码来定义一个区间:

val range = 0..10

这段代码定义了一个从 0 到 10 的区间,其中两个端点都是闭合的,也就是说 0 和 10 都包含在这个区间内。用数学符号表示就是 [0,10][0, 10][0,10]。这种语法虽然看起来有些特别,但在 Kotlin 中这是完全合法且非常常用的。

区间在 for-in 循环中发挥着重要作用,我们可以利用区间来简化循环逻辑,避免使用传统的计数器变量。接下来我们将详细介绍如何在 for-in 循环中使用这些区间,以及它们如何简化循环操作。

fun main() {for (i in 0..10) {println(i)}
}

Kotlin 中可以使用 until 关键字来创建一个左闭右开的区间
val range = 0 until 10
上述代码表示创建了一个 0 10 的左闭右开区间,它的数学表达方式是 [0, 10) 。修改 main()
数中的代码,使用 until 替代 .. 关键字,你就会发现最后一行 10 不会再打印出来了。
默认情况下, for-in 循环每次执行循环时会在区间范围内递增 1 ,相当于 Java for-i 循环中
i++ 的效果,而如果你想跳过其中的一些元素,可以使用 step 关键字:
fun main() {for (i in 0 until 10 step 2) {println(i)}
}
上述代码表示在遍历 [0, 10) 这个区间的时候,每次执行循环都会在区间范围内递增 2 ,相当于
for-i 循环中 i = i + 2 的效果。
.. until 关键字都要求区间的左端必须小于等于区间的右端,也就
是这两种关键字创建的都是一个升序的区间。如果你想创建一个降序的区间,可以使用 downTo
关键字,用法如下:
fun main() {for (i in 10 downTo 1) {println(i)}
}

这篇关于android开发---Kotlin语言基础语法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1143312

相关文章

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

OpenHarmony鸿蒙开发( Beta5.0)无感配网详解

1、简介 无感配网是指在设备联网过程中无需输入热点相关账号信息,即可快速实现设备配网,是一种兼顾高效性、可靠性和安全性的配网方式。 2、配网原理 2.1 通信原理 手机和智能设备之间的信息传递,利用特有的NAN协议实现。利用手机和智能设备之间的WiFi 感知订阅、发布能力,实现了数字管家应用和设备之间的发现。在完成设备间的认证和响应后,即可发送相关配网数据。同时还支持与常规Sof

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

Android平台播放RTSP流的几种方案探究(VLC VS ExoPlayer VS SmartPlayer)

技术背景 好多开发者需要遴选Android平台RTSP直播播放器的时候,不知道如何选的好,本文针对常用的方案,做个大概的说明: 1. 使用VLC for Android VLC Media Player(VLC多媒体播放器),最初命名为VideoLAN客户端,是VideoLAN品牌产品,是VideoLAN计划的多媒体播放器。它支持众多音频与视频解码器及文件格式,并支持DVD影音光盘,VCD影

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

透彻!驯服大型语言模型(LLMs)的五种方法,及具体方法选择思路

引言 随着时间的发展,大型语言模型不再停留在演示阶段而是逐步面向生产系统的应用,随着人们期望的不断增加,目标也发生了巨大的变化。在短短的几个月的时间里,人们对大模型的认识已经从对其zero-shot能力感到惊讶,转变为考虑改进模型质量、提高模型可用性。 「大语言模型(LLMs)其实就是利用高容量的模型架构(例如Transformer)对海量的、多种多样的数据分布进行建模得到,它包含了大量的先验