Kotlin 进阶之路(一) 编程基础(上)

简介: Kotlin 进阶之路(一) 编程基础

Kotlin 进阶之路(一) 编程基础


1.1 Kotlin 基本语法

  • 代码基本格式
fun main(args:Array<String>){
    println("it's just for fun")
  //HelloKotlin::class.constructors.map (::println)
}


  1. kotlin 中严格区分大小写
  2. 编码规范可按照 Java 编码规范,使用驼峰式命名
  3. kotlin 编码风格最大区别于 Java 即语句结束不再需要写分号 ;
  • 注释


Kotlin 中的注释和 java 中注释大体一样

  1. 单行注释 //
  2. 多行注释 /* 开头 */结尾
  3. 文档注释 /** 开头 */结尾

区别

Kotlin 中的多行注释可以嵌套单行注释,多行注释可以嵌套多行注释

fun main(args:Array<String>){
    println("it's just for fun")
    /*HelloKotlin::class.constructors.map (::println)
    //println("hello world")
    /*
    println("test annotation")
    */
    */
}

1.2 Kotlin 变量声明

  • 变量定义

Kotlin 中的变量分为两种类型

  1. 可变变量 用关键字 var 修饰(对应 Java 中的普通变量)
  2. 不可变变量 用关键字 val 修饰(对应 Java 中的 final)
fun main(args:Array<String>){
    var a : Int   //声明一个Int类型的可变变量a
    val b : String //声明一个String类型的不可变变量b
    var c : Int = 1
    var c1 = 1   //和上面的语句一样,Kotlin 会根据变量值自动识别数据类型
    var d : Int
    d = 10
}


  • 变量数据类型

Kotlin 中的数据类型分为 数值型、字符型、布尔型、数组型、字符串型

1.数值型变量



类型名 描述 占用空间 存储值范围 示例
Byte 字节 8位(1个字节) -2⁷ ~(2⁷ - 1) var a : Byte = 1
Short 短整型 16位(2个字节) -2¹⁵ ~(2¹⁵ - 1) var b : Short = 1
Int 整型 32位(4个字节) -2³¹ ~(2³¹ - 1) var c : Int = 1
Long 长整型 64位(8个字节) -2⁶³ ~(2⁶³ - 1) var d :Long = 1L
Float 浮点型 32位(4个字节) 1.4E-45 ~ 3.4E+38
-3.4E+38 ~ -1.4E-45
var e : Float = 1f
Double 双精度浮点型 64位(8个字节) 4.9E - 324 ~ 1.7E+308,
-1.7E+308 ~ -4.9E - 324
var f : Double = 1.0


2.字符型变量


在 Kotlin 中用 “Char” 表示,每个字符类型变量会占用2个字节。给 Char 类型的变量赋值,需要使用 ‘’ 把字符括起来。

var a : Char = 'a'
var b = 'b'

3.布尔型变量

在 Kotlin 中用 Boolean 表示,分别是 true 和 false

var a : Boolean = true
var b = false


4.数组型变量

在 Kotlin 中数组用 Array 表示,类型包括 数值类型、布尔类型、字符类型。

两种初始化方式:


以数据类型 ArrayOf() 方法进行初始化

以 arrayOf() 方法进行初始化

var int_array : IntArray = intArrayOf(1, 2, 3)
var boolean_array : BooleanArray = booleanArrayOf(true, false, true)
var char_array : CharArray = charArrayOf('a', 'b', 'c')


注意: Kotlin 中不能使用 stringArrayOf() 方法创建字符串类型数组,因为 String 不属于基本数据类型。可以通过 Array,对应的初始化数组的方法也变成了 arrayOf()


var int_array : Array<Int> = arrayOf(1, 2, 3)
var boolean_array : Array<Boolean> = arrayOf(true, false, true)
var char_array : Array<Char> = arrayOf('a', 'b', 'c')
var string_array : Array<String> = arrayOf("Hello", "Kotlin", "Fun")
//变量的数据类型均可省略
//var int_array  = arrayOf(1, 2, 3)
//var boolean_array  = arrayOf(true, false, true)
//var char_array = arrayOf('a', 'b', 'c')
//var string_array  = arrayOf("Hello", "Kotlin", "Fun")

5.字符串型变量

Kotlin 中的字符串和 Java 中的字符串非常相似,使用 String 表示

var a : String = "Hello Kotlin"
var a = "Hello Kotlin"


1.3 Kotlin 运算符


  • 算术运算符

Kotlin 中的算术运算符就是用来处理四则运算的符号,也就是常见的加减乘除。


运算符 运算 范例 结果
+ 正号 +5 5
- 负号 b=6;-b b=-6
+ 4+4 8
- 6-5 1
* 5*3 15
/ 6/3 2
% 取模(算术中的求余数) 8%3 2
范围 a=1;b=a…2; a=1;b=1…2
++ 自增(前) a=1;b=++a; a=1;b=2
++ 自增(后) a=1;b=a++; a=1;b=1
- - 自减(前) a=1;b=–a; a=0;b=0
- - 自减(后) a=1;b=a–; a=0;b=1


注意:

1.在进行除法运算时,当除数和被除数都为整数时,结果也是整数。若当中有小数参与,

得到的结果也会是小数。

var a = 3/2 //1
var b = 1.0/2 //0.5
var c = 1500/1000*1000 //1000


2.在进行取模运算时,运算结果的正负取决于(%左边的数)的符号

var a = (-1)%2 //-1
var b = 1%(-2) //1


3.自增 “++” 和自减 “–” 运算符,在操作数的左边则先加/减再引用,

在操作数的右边则先引用再加/减

  • 赋值运算符

Kotlin 中的赋值运算符也遵循从左往右的运算顺序,将右边表达式的结果赋值给左边变量。


运算符 运算 范例 结果
= 赋值 a=6;b=5; a=6;b=5;
+= 加等于 a=6;b=5;a+=b; a=11;b=5
-= 减等于 a=6;b=5;a-=b; a=1;b=5
*= 乘等于 a=6;b=5;a*=b; a=30;b=5
/= 除等于 a=6;b=5;a/=b; a=1;b=5
%= 模等于 a=6;b=5;a%=b; a=1;b=5


  • 比较运算符

比较运算符用于对两个数值、变量或者表达式进行比较,结果为布尔值,true 或 false


运算符 运算 翻译 范例 结果
== 等于 == ; a=6;b=5; a==b false
!= 不等于 != ; a=6;b=5; a!=b true
< 小于 a.compareTo(b) < 0; a=6;b=5; a < b false
> 大于 a.compareTo(b) > 0; a=6;b=5; a > b true
<= 小于等于 a.compareTo(b) < =0; a=6;b=6; a <= b true
>= 大于等于 a.compareTo(b) >= 0; a=6;b=6; a >= b true


  • 逻辑运算符
运算符 运算 范例 结果
! !true false
!false true
&& 短路与 true&&true true
true&&false false
fasle&&false false
false&&true false
|| 短路或 true||true true
true||false true
fasle||false false
false||true true


注意:

  1. && 称为短路与,当运算符左边的值为 false 时,右边不进行运算
  2. || 称为短路或,当运算符左边的值为 true 时, 右边不进行运算

1.4 Kotlin 字符串

  • 字符串声明

Kotlin 中用 String 表示字符串,定义如下

var str : String = "Hello Kotlin"
var str = "Hello Kotlin"


  • 字符串常用操作

1.字符串查找

Kotlin 中提供了多个查找函数, first()、 last()、 get(index),分别对应查找字符串的第1个、最后1个、具体角标为 index 的元素

fun main(args : Array<String>){
  var str = "Hello Kotlin"
  println(str.first())// H
  println(str.last())// n
  println(str.get(3))// l
  println(str.indexOf('o'))// 4
  println(str.lastIndexOf('o'))// 6
}

2.字符串截取

Kotlin 中截取字符串函数为 subString() 和 subSequence(),对应重载函数见下表


方法声明 功能描述
subString(startIndex : Int) startIndex 为起始索引下标,从下标位置截取到字符串末尾,返回值为 String 类型
subString(startIndex : Int, endIndex : Int) startIndex 为起始索引下标, endIndex 为结束索引下标,字符串从 startIndex 位置截取到 endIndex - 1 处的字符
subString(range: IntRange) IntRange 表示 截取范围, 截取范围内的字符串
subSequence(startIndex : Int, endIndex : Int) 与 subString() 类似,字符串从 startIndex 位置截取到 endIndex - 1 处的字符, 只不过返回值类型为 CharSequence
subSequence(range : IntRange) 与 subString() 类似,截取一定范围的字符串, 返回值类型为 CharSequence


fun main(args : Array<String>){
  var str = "Hello Kotlin"
  println(str.substring(3))// lo Kotlin
  println(str.substring(3, 7))// lo K
  println(str.subSequence(3, 7))// lo K
  println(str.substring(IntRange(3, 7)))// lo Ko
  println(str.subSequence(IntRange(3, 7)))// lo Ko
}

3.字符串替换

Kotlin 中替换字符串函数为 replace()、replaceFirst()、replaceAfter()、replaceBefore()

image.png

fun main(args : Array<String>){
    var str = "Hello World! Hello World!"
    println(str.replace("World", "Kotlin"))
    println(str.replaceFirst("World", "Kotlin"))
    println(str.replaceBefore("!", "Kotlin"))
    println(str.replaceAfter("Hello ", "Kotlin!"))
    /*Hello Kotlin! Hello Kotlin!
    Hello Kotlin! Hello World!
    Kotlin! Hello World!
    Hello Kotlin!*/
}


4.字符串分割

Kotlin 中字符串分割函数为 split()

fun main(args : Array<String>){
    var str = "hello.kotlin"
    val split = str.split(".")
    println(split)
    //[hello, kotlin]
    var test = "hello.kotlin/world"
    var splitTest = test.split(".", "/")
    println(splitTest)
    //[hello, kotlin, world]
}

5.字符串去空格

Kotlin 中字符串去空格函数为 trim()、 trimEnd()等,分别去除前面、后面的空格

fun main(args : Array<String>){
    var str = "     Hello  Kotlin!      "
    println(str.trim())
    println(str.trimEnd())
    //Hello  Kotlin!
    //     Hello  Kotlin!
}


6.字符串字面值


字符串的字面值是一串字符常量,字符串字面值常量是用双引号括起来" "的零个或多个字符,

如"hello". Kotlin 中有两种类型的字符串字面值,一种是转义字符串,可以包含转义字符,另一种是

原生字符串,可以包含转义字符、换行和任意文本。

  • 转义字符串

转义采用传统的反斜杠 “” 方式将字符进行转义,

比如 \t, \b, \n, \r, ', ", \, \¥

fun main(args : Array<String>){
    var str = "您\n好"
    println(str)
    //您
    //好
}


  • 原生字符串

原生字符串是使用 3 对引号( “”" “”" )把所有字符括起来,原生字符串可以有效地保证字符串中原有

内容的输出,即使原生字符串中包含转义字符串也不会转义。

fun main(args : Array<String>){
    //转义字符串
    var str1 = "您\n好"
    println(str1)
    //原生字符串
    var str2 = """您  \n  好"""
    println(str2)
    /*您
    您  \n  好*/
}


7.模版表达式


字符串可以包含模版表达式,所谓模板表达式就是在字符串中添加占位符,字符串模版表达式由


变 量 名 / 函 数 / 表 达 式 组 成 , 也 可 以 省 略 , 例 如 &quot; {变量名/函数/表达式} 组成,也可以省略{}, 例如 &quot;变量名/函数/表达式组成,也可以省略,例如"变量名"。


  • 在字符串中,使用模板标识式存储字符串的值
fun main(args : Array<String>){
    var a = 1
    //语法格式 ${变量}
    var s1 = "a is ${a}"
    //可以省略大括号
    var s2 = "a is $a"
    println(s1)
    println(s2)
    //a is 1
    //a is 1
}
  • 在字符串中,使用模板表达式调用其它方法
fun main(args : Array<String>){
    //语法格式 ${方法()}
    println("${helloWorld()}")
    //hello world
}
fun  helloWorld() : String{
    return  "hello world"
}


  • 在字符串中,使用模版表达式执行替换操作
fun main(args : Array<String>){
    var s2 = "a is 1"
    //语法格式 ${表达式}, 执行表达式
    var s3 = "${s2.replace("is", "was")}"
    println(s3)
    //a was 1
}


  • 在原生字符串中,使用模版表达式输出 $ 需要使用 KaTeX parse error: Expected '}', got 'EOF' at end of input: {''}, 因为原生字符串不支持反斜杠转义
fun main(args : Array<String>){
    var price = """${'$'}8.88"""
    println(price)
    //$8.88
}


目录
相关文章
|
6月前
|
Java 调度 Android开发
构建高效Android应用:探究Kotlin多线程编程
【2月更文挑战第17天】 在现代移动开发领域,性能优化一直是开发者关注的焦点。特别是在Android平台上,合理利用多线程技术可以显著提升应用程序的响应性和用户体验。本文将深入探讨使用Kotlin进行Android多线程编程的策略与实践,旨在为开发者提供系统化的解决方案和性能提升技巧。我们将从基础概念入手,逐步介绍高级特性,并通过实际案例分析如何有效利用Kotlin协程、线程池以及异步任务处理机制来构建一个更加高效的Android应用。
|
6月前
|
前端开发 Java 程序员
Kotlin零基础入门到进阶实战
Kotlin现在是Google官方认定Android一级开发语言,与Java100%互通,并具备诸多Java尚不支持的新特性,每个Android程序员必备的Kotlin课程,每个Java程序员都需要了解的Kotlin,掌握kotlin可以开发Web前端、Web后端、Android移动端、Server脚本、桌面游戏等,采用真实案例讲解,拒绝纸上谈兵。
66 0
|
3月前
|
Java Android开发 开发者
Kotlin 循环与函数详解:高效编程指南
高效编程实践 • 避免不必要的循环 - 尽量使用集合操作如 map、filter 来减少显式的循环。 • 使用尾递归优化 - 对于需要大量递归的情况,考虑使用尾递归以优化性能。 • 内联函数 - 对于传递 Lambda 表达式的函数,使用 inline 关键字可以减少运行时开销。 通过上述指南,您应该能够更好地理解 Kotlin 中的循环和函数,并能够编写更加高效和简洁的代码。Kotlin 的设计哲学鼓励开发者编写易于理解和维护的代码,而掌握循环和函数是实现这一目标的关键步骤。 如果您想了解更多关于 Kotlin 的循环和函数的信息,以下是一些官方文档和资源,它们可以提供额外的参考
48 1
|
3月前
|
Java Kotlin
Kotlin 循环与函数详解:高效编程指南
Kotlin中的循环结构让你能轻松遍历数组或范围内的元素。使用`for`循环结合`in`操作符,可以简洁地访问数组中的每个项,如字符串数组或整数数组。对于范围,可以用`..`来定义一系列连续的值并进行迭代。此外,Kotlin支持通过`break`和`continue`控制循环流程。函数则允许封装可复用的代码块,你可以定义接受参数并返回值的函数,利用简写语法使代码更加紧凑。例如,`myFunction(x: Int, y: Int) = x + y`简洁地定义了一个计算两数之和的函数。
48 1
|
Java Shell API
Scala和Kotlin脚本编程
Scala和Kotlin作为运行在JVM上的编程语言,解决了Java的很多痛点。今天我们来聊聊如何将Scala和Kotlin作为脚本语言使用(Java不支持以脚本形式运行哦)。
89 0
|
XML 存储 Java
Kotlin 进阶 | 不变型、协变、逆变
Kotlin 进阶 | 不变型、协变、逆变
10919 1
|
存储 Java Kotlin
Kotlin 进阶之路(四) 集合
Kotlin 进阶之路(四) 集合
159 0
|
设计模式 Java 编译器
Kotlin 进阶之路(三) 面向对象
Kotlin 进阶之路(三) 面向对象
120 0
|
Java 编译器 Kotlin
Kotlin 进阶之路(二) 函数
Kotlin 进阶之路(二) 函数
131 0
|
安全 Java 编译器
Kotlin 进阶之路(一) 编程基础(下)
Kotlin 进阶之路(一) 编程基础(下)
108 0