// 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
var SSSArray1: Array
var SSSArray2: Array
var SSSLettersArray: Array
var SSSArrayForSet: Array
var SSSArrayForList: Array
// 整数数组类型的变量
var FFFArray1: Array
var FFFArray2: Array
var FFFTwoDArray: Array
var FFFThreeDArray: Array
var FFFArrayForModify: Array
var FFFTwoDArrayForModify: Array
var FFFArrayForCompare: Array
var FFFAnotherArray: Array
var FFFSumArray: Array
var FFFArrayForShuffle: Array
var FFFExampleIntArray: IntArray // 声明原生整数数组类型变量FFFExampleIntArray
// 整数类型的对象数组变量
var GGGObjectArray: Array
// 键值对数组类型的对象变量
var GGGPairArray: Array
// 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
SSSArray1 = emptyArray
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) // 打印每个字符串
}
}