Kotlin完全抛弃了Java中的基本数据类型,全部使用了对象数据类型。举个栗子:在Java中,int 是一个关键字,有自己的包装类Integer,而在Kotlin中,Int就是一个类,有自己的方法和继承结构。
//定义整形常量
val x: Int
//定义整形变量 赋初始值
val y: Int = 2021
//赋初始值 才能使用
x = 2021
println(x) //2021
println(y) //2021
//再次重新赋值报错
x=2022 //Val cannot be reassigned
//定义整形变量 赋初始值
var x: Int = 2021
//打印值
println(x) //2021
//再次赋值
x = 2022
//打印值
println(x) //2022
//明确数据类型 Int
var a: Int = 2021
//自动推断为 Int 型
var b = 2021
//自动推断为 String 型
var c = "Hello,Kotlin"
fun methodName(param1: Int, param2: Int = 2021): Int {
return 0
}
/**
- 比较两个整数的大小
- @param a
- @param b
- @return 最大值
*/
fun getMaxValue(a: Int, b: Int): Int {
if (a > b) {
return a
} else {
return b
}
}
/**
- 比较两个整数的大小
- @param a
- @param b
- @return 最大值
*/
fun getMaxValue1(a: Int, b: Int) = if (a > b) a else b
//定义常量 a
val a: Int = 2021
//定义常量 b
val b: Int = 2021
//打印常量 a
println("a 的值:$a")
//打印 a + b 的值
println("a + b 的值:${a + b}")
a 的值:2021
a + b 的值:4042
/**
* 比较两个数的大小
* @param a
* @param b
* @return 返回最大值
*/
fun getMaxNumber(a: Int, b: Int): Int {
val maxNumber = if (a > b) {
a
} else {
b
}
return maxNumber
}
/**
* 比较两个数的大小
* @param a
* @param b
* @return 返回最大值
*/
fun getMaxNumber(a: Int, b: Int): Int {
return if (a > b) {
a
} else {
b
}
}
/**
* 比较两个数的大小
* @param a
* @param b
* @return 返回最大值
*/
fun getMaxNumber(a: Int, b: Int) = if (a > b) {
a
} else {
b
}
/**
* 比较两个数的大小
* @param a
* @param b
* @return 返回最大值
*/
fun getMaxNumber(a: Int, b: Int) = if (a > b) a else b
when 控制语句
将它的参数与所有的分支条件顺序比较,直到某个分支满足条件:
/**
* 查询学生的信息
* @param name 学生名称
* @return 学生信息
*/
fun getClassName(name: String) = when (name) {
"张三" -> "7年级1班"
"李四" -> "7年级3班"
else -> "查询不到该学生的信息!"
}
/**
* 获取数字的类型
* @param number
*/
fun getNmuberType(number: Number) {
when (number) {
is Int -> println("number is Int")
is Double -> println("number is Double")
else -> println("none of the above")
}
}
for - in 循环语句
for 循环,可以对任何提供迭代器(iterator)的对象进行遍历。
我们定义一个数组:
var heroNames = arrayOf("亚瑟", "刘邦", "露娜", "玄策")
for (i in heroNames.indices) {
println("这个英雄 在 $i 是 ${heroNames[i]}")
}
for (item in heroNames) {
println(item)
}
for ((index, value) in heroNames.withIndex()) {
println("$index ----$value")
}
var iterator = heroNames.iterator()
while (iterator.hasNext()) {
println(iterator.next())
}
/**
* 打印10以内的正偶数
*/
fun getNumByWhile() {
var i: Int = 10
var j: Int = 10
while (i >= 0) {
if (i % 2 == 0) {
println("偶数i:$i")
}
i--
}
do {
if (j % 2 == 0) {
println("偶数j:$j")
}
j--
} while (j >= 0)
}
return
默认从最直接包围它的函数或者函数返回。
break
终止最直接包围它的循环。
continue
结束当前,继续下一次直接包围它的循环。
//定义变量 a
var a: Int
//定义常量 b 赋空值报错
val b: String = null//Null can not be a value of a non-null type String
//赋空值报错
a = null//Null can not be a value of a non-null type In
//定义变量 a
var a: Int?
//定义常量 b 赋空值正常
val b: String? = null
赋空值正常
a = null
//获取 b 的长度
var lenght = if (b != null) b.length else -1
//获取 b 的长度
b?.length//表示:b 不为空才可以调用 length 属性
var lenght = b?.length ?: -1
//如果任意一个属性(环节)为空,这个链式调用就会返回 null
KPL.EDG?.LUNA?.SKIN
public open class Any {
public open operator fun equals(other: Any?): Boolean
public open fun hashCode(): Int
public open fun toString(): String
}
//定义 Animal 动物类
class Animal {
var name: String = ""
var age: Int = 0
fun getInfo() {
println("name: $name,age: $age")
}
}
//类的实例
var animal: Animal = Animal()
//修改熟悉值
animal.name = "狗"
//调用方法
animal.getInfo()
name: 狗,age: 0
//定义带参数的电脑类
class Computer(var brand: String, var price: Double) {
fun getInfo() {
println("brand: $brand,price: $price")
}
}
Computer("lenovo", 6655.00).getInfo()
brand: lenovo,price: 6655.0
//定义带参数的电脑类
class Computer(var brand: String, var price: Double) {
init {
//初始化代码
getInfo()
}
fun getInfo() {
println("brand: $brand,price: $price")
}
}
open class Animal {
}
class Cat : Animal() {
}
open fun getInfo() {
println("name: $name,age: $age")
}
override fun getInfo() {
super.getInfo()
}
final override fun getInfo() {
super.getInfo()
}
//定义 Animal 动物类
open class Animal {
var name: String = "我是父类的属性".also(::println)
init {
println("我是父类的 init 函数")
}
}
//定义猫类继承动物类
class Cat : Animal() {
var nameCat: String = "我是子类的属性".also(::println)
init {
println("我是子类的 init 函数")
}
}
我是父类的属性
我是父类的 init 函数
我是子类的属性
我是子类的 init 函数
object School {
fun getSchoolName() {
println("欢迎来到清华大学")
}
}
School.getSchoolName()
interface CommonMethod {
fun eat()
fun play()
}
class Dog : CommonMethod {
override fun eat() {
}
override fun play() {
}
}
//年龄在10岁(包含10)到15岁(包含15岁)的年龄段
10..15
//年龄在10岁(包含10)到15岁(不包含15岁)的年龄段
10 until 15
//输出年龄
for (i in 10..15) {
println("$i 岁")
}
10 岁
11 岁
12 岁
13 岁
14 岁
15 岁
//输出年龄
for (i in 15 downTo 10) {
println("$i 岁")
}
//输出年龄
for (i in 15 downTo 10 step 2) {
println("$i 岁")
}
15 岁
13 岁
11 岁
public interface Collection<out E> : Iterable<E> {
public val size: Int
public fun isEmpty(): Boolean
public operator fun contains(element: @UnsafeVariance E): Boolean
override fun iterator(): Iterator<E>
public fun containsAll(elements: Collection<@UnsafeVariance E>): Boolean
}
- MutableCollection
public interface MutableCollection<E> : Collection<E>, MutableIterable<E> {
override fun iterator(): MutableIterator<E>
public fun add(element: E): Boolean
public fun remove(element: E): Boolean
public fun addAll(elements: Collection<E>): Boolean
public fun removeAll(elements: Collection<E>): Boolean
public fun retainAll(elements: Collection<E>): Boolean
public fun clear(): Unit
}
public interface List<out E> : Collection<E> {
override val size: Int
override fun isEmpty(): Boolean
override fun contains(element: @UnsafeVariance E): Boolean
override fun iterator(): Iterator<E>
override fun containsAll(elements: Collection<@UnsafeVariance E>): Boolean
public operator fun get(index: Int): E
public fun indexOf(element: @UnsafeVariance E): Int
public fun lastIndexOf(element: @UnsafeVariance E): Int
public fun listIterator(): ListIterator<E>
public fun listIterator(index: Int): ListIterator<E>
public fun subList(fromIndex: Int, toIndex: Int): List<E>
}
//创建 List
val heros = listOf("大乔", "后裔", "伽罗")
println("heros 的大小:${heros.size}")
println("heros 的第二个英雄是:${heros[1]}")
println("heros 的第三个英雄是:${heros.get(2)}")
println("大乔在 heros 的位置是:${heros.indexOf("大乔")}")
//打印数据
var iterator = heros.iterator()
while (iterator.hasNext()) {
println(iterator.next())
}
heros 的大小:3
heros 的第二个英雄是:后裔
heros 的第三个英雄是:伽罗
大乔在 heros 的位置是:0
大乔
后裔
伽罗
public interface MutableList<E> : List<E>, MutableCollection<E> {
override fun add(element: E): Boolean
override fun remove(element: E): Boolean
override fun addAll(elements: Collection<E>): Boolean
public fun addAll(index: Int, elements: Collection<E>): Boolean
override fun removeAll(elements: Collection<E>): Boolean
override fun retainAll(elements: Collection<E>): Boolean
override fun clear(): Unit
public operator fun set(index: Int, element: E): E
public fun add(index: Int, element: E): Unit
public fun removeAt(index: Int): E
override fun listIterator(): MutableListIterator<E>
override fun listIterator(index: Int): MutableListIterator<E>
override fun subList(fromIndex: Int, toIndex: Int): MutableList<E>
}
//创建 MutableList
val heroRankings = mutableListOf("娜可露露", "公孙离", "镜")
//添加元素
heroRankings.add("张良")
//移除元素
heroRankings.remove("镜")
println("heroRankings 的数值:$heroRankings")
heroRankings 的数值:[娜可露露, 公孙离, 张良]
public interface Set<out E> : Collection<E> {
override val size: Int
override fun isEmpty(): Boolean
override fun contains(element: @UnsafeVariance E): Boolean
override fun iterator(): Iterator<E>
override fun containsAll(elements: Collection<@UnsafeVariance E>): Boolean
}
//创建 Set
var names = setOf("鲁班七号", "后裔", "张良")
println("names 的大小:${names.size}")
println("names :$names")
names 的大小:3
names :[鲁班七号, 后裔, 张良]
public interface MutableSet<E> : Set<E>, MutableCollection<E> {
override fun iterator(): MutableIterator<E>
override fun add(element: E): Boolean
override fun remove(element: E): Boolean
override fun addAll(elements: Collection<E>): Boolean
override fun removeAll(elements: Collection<E>): Boolean
override fun retainAll(elements: Collection<E>): Boolean
override fun clear(): Unit
}
//创建 MutableSet
var animals = mutableSetOf("狗", "猫", "老虎")
animals.add("猫")
animals.remove("老虎")
println("animals 的大小:${animals.size}")
println("animals 的值:$animals")
animals 的大小:2
animals 的值:[狗, 猫]
- Map
public interface Map<K, out V> {
public val size: Int
public fun isEmpty(): Boolean
public fun containsKey(key: K): Boolean
public fun containsValue(value: @UnsafeVariance V): Boolean
public operator fun get(key: K): V?
public val keys: Set<K>
public val values: Collection<V>
public val entries: Set<Map.Entry<K, V>>
public interface Entry<out K, out V> {
public val key: K
public val value: V
}
}
//创建 Map
var address = mapOf("小名" to 2021, "小王" to 2022)
println("mapHeros 的所有的 keys: ${address.keys}")
println("mapHeros 的所有的 values: ${address.values}")
println("小名在哪个位置:${address["小名"]}")
println("编号为2021的英雄是否存在:${2021 in address.values}")
mapHeros 的所有的 keys: [小名, 小王]
mapHeros 的所有的 values: [2021, 2022]
小名在哪个位置:2021
编号为2021的英雄是否存在:true
public interface MutableMap<K, V> : Map<K, V> {
public fun put(key: K, value: V): V?
public fun remove(key: K): V?
@SinceKotlin("1.1")
@PlatformDependent
public fun remove(key: K, value: V): Boolean {
// See default implementation in JDK sources
return true
}
public fun putAll(from: Map<out K, V>): Unit
public fun clear(): Unit
override val keys: MutableSet<K>
override val values: MutableCollection<V>
override val entries: MutableSet<MutableMap.MutableEntry<K, V>>
public interface MutableEntry<K, V> : Map.Entry<K, V> {
public fun setValue(newValue: V): V
}
}
//创建 MutableMap
var ranking = mutableMapOf(1 to "鲁班", 2 to "安琪拉")
ranking.put(3, "后裔")
println("ranking 的值:$ranking")
ranking 的值:{1=鲁班, 2=安琪拉, 3=后裔}
参考资料:
谢谢阅读,如有错误和侵权,望联系作者指正!本文完毕~