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
}


目录
相关文章
|
2月前
|
前端开发 Java 程序员
Kotlin零基础入门到进阶实战
Kotlin现在是Google官方认定Android一级开发语言,与Java100%互通,并具备诸多Java尚不支持的新特性,每个Android程序员必备的Kotlin课程,每个Java程序员都需要了解的Kotlin,掌握kotlin可以开发Web前端、Web后端、Android移动端、Server脚本、桌面游戏等,采用真实案例讲解,拒绝纸上谈兵。
25 0
|
12月前
|
XML 存储 Java
Kotlin 进阶 | 不变型、协变、逆变
Kotlin 进阶 | 不变型、协变、逆变
10888 1
|
存储 Java Kotlin
Kotlin 进阶之路(四) 集合
Kotlin 进阶之路(四) 集合
127 0
|
设计模式 Java 编译器
Kotlin 进阶之路(三) 面向对象
Kotlin 进阶之路(三) 面向对象
101 0
|
Java 编译器 Kotlin
Kotlin 进阶之路(二) 函数
Kotlin 进阶之路(二) 函数
99 0
|
安全 Java 编译器
Kotlin 进阶之路(一) 编程基础(下)
Kotlin 进阶之路(一) 编程基础(下)
79 0
|
Java 程序员 Android开发
Kotlin 进阶之路 开篇
Kotlin 进阶之路 开篇
88 0
|
API Kotlin
【Kotlin 初学者】扩展-享受编程
一、介绍 Kotlin 可以对一个类的属性和函数进行扩展,且不需要继承或使用 Decorator 模式。 扩展是一种静态行为,对被扩展的类代码本身不会造成任何影响。
214 0
【Kotlin 初学者】扩展-享受编程
|
XML 前端开发 JavaScript
用kotlin来实现dsl风格的编程
用kotlin来实现dsl风格的编程
252 0
用kotlin来实现dsl风格的编程
|
安全 Java Android开发
图书推荐:Kotlin从入门到进阶实战
图片发自简书App 《Kotlin从入门到进阶实战》从Kotlin 语言的基础语法讲起,逐步深入到Kotlin进阶实战,并在最后配合项目实战案例,重点介绍了使用Kotlin+Spring Boot进行服务端开发和使用Kotlin进行Android应用程序开发的内容,让读者不但可以系统地学习Kotlin编程的相关知识,而且还能对Kotlin应用开发有更为深入的理解。
2260 0