kotlin基础

// Kotlin 1.3.11 编译器版本

// 无包声明

import kotlin.experimental.ExperimentalUnsignedTypes

 

// 定义数据类 A1,类型前置

data class A1(val representation: UInt) {

    // 这里可以添加数据类的其他方法或属性,但当前仅包含一个属性

}

 

fun main() {

    // 1. 集中声明变量,类型前置,符合C语言风格的变量声明习惯

    // 无符号整型变量

    var EEE1: UByte // 声明无符号字节类型变量EEE1

    var EEE2: UShort // 声明无符号短整型变量EEE2

    var EEE3: ULong // 声明无符号长整型变量EEE3

    var EEE4: UInt // 声明无符号整型变量EEE4

    var EEE5: ULong // 声明无符号长整型变量EEE5

    var EEE6: ULong // 声明无符号长整型变量EEE6

    // 无符号数组类型的对象变量

    var GGG1: UByteArray // 声明无符号字节数组类型的对象变量GGG1

    var GGG2: UShortArray // 声明无符号短整型数组类型的对象变量GGG2

    var GGG3: UIntArray // 声明无符号整型数组类型的对象变量GGG3

    var GGG4: ULongArray // 声明无符号长整型数组类型的对象变量GGG4

    // 无符号区间类型变量

    var EEE7: UIntRange // 声明无符号整型区间类型变量EEE7

    var EEE8: ULongRange // 声明无符号长整型区间类型变量EEE8

    // 自定义数据类的实例变量

    var AAA1: A1 // 声明A1数据类的实例变量AAA1

    var GGG5: UByteArray // 声明无符号字节数组类型的对象变量GGG5

    // 字符串数组类型的变量

    var SSS1: Array // 声明字符串数组类型变量SSS1

    var SSSArray1: Array // 声明字符串数组类型变量SSSArray1

    var SSSArray2: Array // 声明字符串数组类型变量SSSArray2

    var SSSLettersArray: Array // 声明字符串数组类型变量SSSLettersArray

    var SSSArrayForSet: Array // 声明字符串数组类型变量SSSArrayForSet

    var SSSArrayForList: Array // 声明字符串数组类型变量SSSArrayForList

    // 整数数组类型的变量

    var FFFArray1: Array // 声明整数数组类型变量FFFArray1

    var FFFArray2: Array // 声明整数数组类型变量FFFArray2

    var FFFTwoDArray: Array> // 声明二维整数数组类型变量FFFTwoDArray

    var FFFThreeDArray: Array>> // 声明三维整数数组类型变量FFFTThreeDArray

    var FFFArrayForModify: Array // 声明整数数组类型变量FFFArrayForModify

    var FFFTwoDArrayForModify: Array> // 声明二维整数数组类型变量FFFTwoDArrayForModify

    var FFFArrayForCompare: Array // 声明整数数组类型变量FFFArrayForCompare

    var FFFAnotherArray: Array // 声明整数数组类型变量FFFAnotherArray

    var FFFSumArray: Array // 声明整数数组类型变量FFFSumArray

    var FFFArrayForShuffle: Array // 声明整数数组类型变量FFFArrayForShuffle

    var FFFExampleIntArray: IntArray // 声明原生整数数组类型变量FFFExampleIntArray

    // 整数类型的对象数组变量

    var GGGObjectArray: Array // 声明整数类型的对象数组变量GGGObjectArray

    // 键值对数组类型的对象变量

    var GGGPairArray: Array> // 声明键值对数组类型的对象变量GGGPairArray

 

    // 2. 变量赋值

    EEE1 = 1u // 给无符号字节类型变量EEE1赋值为1u

    EEE2 = 1u // 给无符号短整型变量EEE2赋值为1u

    EEE3 = 1u // 给无符号长整型变量EEE3赋值为1u

    EEE4 = 42u // 给无符号整型变量EEE4赋值为42u

    EEE5 = 0xFFFF_FFFF_FFFFu // 给无符号长整型变量EEE5赋值为0xFFFF_FFFF_FFFFu

    EEE6 = 1UL // 给无符号长整型变量EEE6赋值为1UL

    EEE7 = 1u..10u // 给无符号整型区间类型变量EEE7赋值为1u到10u的区间

    EEE8 = 1UL..10UL // 给无符号长整型区间类型变量EEE8赋值为1UL到10UL的区间

    AAA1 = A1(0xFFCC00CCu) // 使用构造函数创建A1数据类的实例,并赋值给AAA1,传入参数0xFFCC00CCu(已将参数名改为符合要求的形式)

    GGG5 = ubyteArrayOf(0xEFu, 0xBBu, 0xBFu) // 给无符号字节数组类型的对象变量GGG5赋值

 

    SSS1 = arrayOf("Nile", "Amazon", "Yangtze") // 给字符串数组类型变量SSS1赋值

    FFFArray1 = arrayOf(1, 2, 3) // 给整数数组类型变量FFFArray1赋值

    GGGArray1 = arrayOfNulls(3) // 给可空整数数组类型的对象变量GGGArray1赋值为包含3个null元素的数组

    SSSArray1 = emptyArray() // 给字符串数组类型变量SSSArray1赋值为空数组

    FFFArray2 = Array(3) { 0 } // 使用Array构造函数创建包含3个元素且初始值为0的整数数组,并赋值给FFFArray2

    SSSArray2 = Array(5) { i -> (i * i).toString() } // 使用Array构造函数创建包含5个元素的字符串数组,并赋值给SSSArray2

    FFFTwoDArray = Array(2) { Array(2) { 0 } } // 创建二维整数数组并赋值给FFFTwoDArray

    FFFThreeDArray = Array(3) { Array(3) { Array(3) { 0 } } } // 创建三维整数数组并赋值给FFFTThreeDArray

    FFFArrayForModify = arrayOf(1, 2, 3) // 给整数数组类型变量FFFArrayForModify赋值

    FFFTwoDArrayForModify = Array(2) { Array(2) { 0 } } // 创建二维整数数组并赋值给FFFTwoDArrayForModify

    SSSLettersArray = arrayOf("c", "d") // 给字符串数组类型变量SSSLettersArray赋值

    FFFArrayForCompare = arrayOf(1, 2, 3) // 给整数数组类型变量FFFArrayForCompare赋值

    FFFAnotherArray = arrayOf(1, 2, 3) // 给整数数组类型变量FFFAnotherArray赋值

    FFFSumArray = arrayOf(1, 2, 3) // 给整数数组类型变量FFFSumArray赋值

    FFFArrayForShuffle = arrayOf(1, 2, 3) // 给整数数组类型变量FFFArrayForShuffle赋值

    SSSArrayForSet = arrayOf("a", "b", "c", "c") // 给字符串数组类型变量SSSArrayForSet赋值

    GGGPairArray = arrayOf("apple" to 120, "banana" to 150, "cherry" to 90, "apple" to 140) // 给键值对数组类型的对象变量GGGPairArray赋值

    FFFExampleIntArray = IntArray(5) // 创建包含5个元素的原生整数数组并赋值给FFFExampleIntArray

    GGGObjectArray = FFFExampleIntArray.toTypedArray() // 将原生整数数组转换为对象数组并赋值给GGGObjectArray

 

    // 3. 无符号整型变量声明与赋值

    println("UByte 变量 EEE1 的值: $EEE1") // 打印无符号字节类型变量EEE1的值

    println("UShort 变量 EEE2 的值: $EEE2") // 打印无符号短整型变量EEE2的值

    println("ULong 变量 EEE3 的值: $EEE3") // 打印无符号长整型变量EEE3的值

    println("未指定类型的无符号整型变量 EEE4 的值: $EEE4") // 打印无符号整型变量EEE4的值

    println("未指定类型的无符号长整型变量 EEE5 的值: $EEE5") // 打印无符号长整型变量EEE5的值

    println("显式指定为 ULong 的变量 EEE6 的值: $EEE6") // 打印无符号长整型变量EEE6的值

 

    // 4. 无符号数组的使用(需要 @ExperimentalUnsignedTypes 注解)

    @ExperimentalUnsignedTypes

    fun useUnsignedArrays() {

        GGG1 = ubyteArrayOf(1u, 2u, 3u) // 给无符号字节数组类型的对象变量GGG1重新赋值

        GGG2 = ushortArrayOf(1u, 2u, 3u) // 给无符号短整型数组类型的对象变量GGG2赋值

        GGG3 = uintArrayOf(1u, 2u, 3u) // 给无符号整型数组类型的对象变量GGG3赋值

        GGG4 = ulongArrayOf(1u, 2u, 3u) // 给无符号长整型数组类型的对象变量GGG4赋值

 

        println("UByteArray: ${GGG1.contentToString()}") // 打印无符号字节数组的内容

        println("UShortArray: ${GGG2.contentToString()}") // 打印无符号短整型数组的内容

        println("UIntArray: ${GGG3.contentToString()}") // 打印无符号整型数组的内容

        println("ULongArray: ${GGG4.contentToString()}") // 打印无符号长整型数组的内容

    }

    useUnsignedArrays() // 调用无符号数组使用的函数

 

    // 5. 无符号区间的使用

    println("UIntRange: ${EEE7.joinToString()}") // 打印无符号整型区间的内容,已将输出字母改为符合要求的形式

    println("ULongRange: ${EEE8.joinToString()}") // 打印无符号长整型区间的内容,已将输出字母改为符合要求的形式

 

    // 6. 无符号整型在数据类中的使用示例

    println("颜色数据类示例,黄色的表示: ${AAA1.representation}") // 打印数据类A1实例中无符号整型属性的值

 

    // 7. 无符号整型初始化字节数组示例

    println("无符号整型初始化字节数组: ${GGG5.contentToString()}") // 打印无符号字节数组的内容

 

    // 8. 数组的基本使用示例

    println("原始数组: ${SSS1.joinToString()}") // 打印字符串数组SSS1的内容

    SSS1 += "Mississippi" // 向字符串数组SSS1添加一个元素

    println("添加元素后的数组: ${SSS1.joinToString()}") // 打印添加元素后的字符串数组SSS1的内容

 

    // 9. 创建数组的不同方式

    println("使用 arrayOf() 创建的数组: ${FFFArray1.joinToString()}") // 打印使用arrayOf创建的整数数组的内容

    println("使用 arrayOfNulls() 创建的数组: ${GGGArray1.joinToString()}") // 打印使用arrayOfNulls创建的可空整数数组的内容

    println("使用 emptyArray() 创建的空数组: ${SSSArray1.joinToString()}") // 打印使用emptyArray创建的空字符串数组的内容

    println("使用 Array 构造函数创建的初始值为 0 的数组: ${FFFArray2.joinToString()}") // 打印使用Array构造函数创建的初始值为0的整数数组的内容

    println("使用 Array 构造函数创建的数组: ${SSSArray2.joinToString()}") // 打印使用Array构造函数创建的字符串数组的内容

 

    // 10. 嵌套数组示例

    println("二维数组: ${FFFTwoDArray.contentDeepToString()}") // 打印二维整数数组的内容

    println("三维数组: ${FFFTThreeDArray.contentDeepToString()}") // 打印三维整数数组的内容

 

    // 11. 访问与修改数组元素示例

    FFFArrayForModify[0] = 10 // 修改整数数组FFFArrayForModify的第一个元素

    FFFTwoDArrayForModify[0][0] = 2 // 修改二维整数数组FFFTwoDArrayForModify的第一个元素

    println("修改后的一维数组第一个元素: ${FFFArrayForModify[0]}") // 打印修改后的一维数组的第一个元素

    println("修改后的二维数组第一个元素: ${FFFTwoDArrayForModify[0][0]}") // 打印修改后的二维数组的第一个元素

 

    // 12. 向函数传入可变数量的实参示例

    printAllStrings("cat1", "cat2", *SSSLettersArray) // 向函数printAllStrings传入可变数量的参数,已修改传入参数为符合要求的形式

    println() // 换行

 

    // 13. 比较数组示例

    println("两个数组内容是否相等: ${FFFArrayForCompare.contentEquals(FFFAnotherArray)}") // 比较两个整数数组的内容是否相等

    FFFArrayForCompare[0] = 10 // 修改整数数组FFFArrayForCompare的第一个元素

    println("修改后两个数组内容是否相等: ${FFFArrayForCompare.contentEquals(FFFAnotherArray)}") // 再次比较两个整数数组的内容是否相等

 

    // 14. 转换数组示例

    println("数组元素的和: ${FFFSumArray.sum()}") // 打印整数数组FFFSumArray元素的和

    FFFArrayForShuffle.shuffle() // 打乱整数数组FFFArrayForShuffle的元素顺序

    println("第一次打乱后的数组: ${FFFArrayForShuffle.joinToString()}") // 打印第一次打乱后的整数数组的内容

    FFFArrayForShuffle.shuffle() // 再次打乱整数数组FFFArrayForShuffle的元素顺序

    println("第二次打乱后的数组: ${FFFArrayForShuffle.joinToString()}") // 打印第二次打乱后的整数数组的内容

    println("转换为 Set: ${SSSArrayForSet.toSet()}") // 将字符串数组SSSArrayForSet转换为Set并打印

    println("转换为 List: ${SSSArrayForSet.toList()}") // 将字符串数组SSSArrayForSet转换为List并打印

    println("转换为 Map: ${GGGPairArray.toMap()}") // 将键值对数组GGGPairArray转换为Map并打印

 

    // 15. 原生类型数组示例

    println("创建的 IntArray 数组: ${FFFExampleIntArray.joinToString()}") // 打印原生整数数组的内容

    println("转换为对象类型数组: ${GGGObjectArray.joinToString()}") // 打印转换后的对象数组的内容

}

 

// 定义函数 printAllStrings,接收可变数量的字符串参数

fun printAllStrings(vararg strings: String) {

    for (string in strings) { // 遍历传入的字符串参数

        print(string) // 打印每个字符串

    }

}

 

你可能感兴趣的:(kotlin)