// Kotlin 1.3.11 编译器版本
// 无包声明
// 1. 基础变量声明
// 声明实例变量AAA1,类型为Int,初始值为0,类似C语言先声明后初始化的习惯
var AAA1: Int = 0
// 声明实例变量AAA2,类型为Double,初始值为0.0
var AAA2: Double = 0.0
// 声明实例变量AAA3,类型为String,初始值为空字符串
var AAA3: String = ""
// 2. 静态变量声明
// 声明静态常量BBB1,值为3.14,在Kotlin中用val声明且不可变,类似C语言的常量
val BBB1 = 3.14
// 声明静态变量BBB2,类型为Boolean,初始值为false
var BBB2: Boolean = false
// 3. 自定义类定义
// 定义开放类A1,开放类允许其他类继承它
open class A1 {
// 定义A1的构造函数,为空构造函数,满足C语言风格中先声明构造函数结构的习惯
constructor() {}
// 定义A1的实例方法CCC1,用于打印输出表示是A1类的实例方法
fun CCC1() {
println("A1 instance method")
}
}
// 定义类A2,继承自A1类
class A2 : A1 {
// 定义A2的构造函数,接受两个Double类型的参数TTT1和TTT2
// 并显式调用父类A1的构造函数super()
constructor(TTT1: Double, TTT2: Double) : super() {
// 将参数TTT1的值赋给实例变量AAA2
AAA2 = TTT1
// 将字符串和参数TTT2的值组合后赋给实例变量AAA3,输出格式改为Dog开头
AAA3 = "Dog $TTT2"
}
// 定义A2的实例方法CCC2,用于打印输出表示是A2类的实例方法
fun CCC2() {
println("A2 instance method")
}
}
// 4. 静态方法定义
// 定义静态方法容器DDD,在Kotlin中用object关键字来实现类似C语言中静态方法的概念
object DDD {
// 使用@JvmStatic注解确保该方法在JVM中可见,类似C语言中静态方法的调用方式
@JvmStatic
// 定义静态方法DDD1,接受两个Int类型的参数TTT1和TTT2,返回它们的和
fun DDD1(TTT1: Int, TTT2: Int): Int {
return TTT1 + TTT2
}
}
fun main() {
// 5. 变量初始化与输出
// 重新给实例变量AAA1赋值为100
AAA1 = 100
// 重新给静态变量BBB2赋值为true
BBB2 = true
println("1. Basic Variables:")
// 使用字符串的format方法来模拟C语言中printf的格式化输出
// 输出实例变量AAA1和静态常量BBB1(保留两位小数)
println("AAA1: ${AAA1}, BBB1: ${String.format("%.2f", BBB1)}")
// 输出静态变量BBB2
println("BBB2: ${BBB2}")
// 6. 对象实例化与方法调用
// 实例化A2类的对象,将其赋值给对象变量GGG1,并传入参数5.5和2.0
val GGG1 = A2(5.5, 2.0)
println("\n2. Object Operations:")
// 调用对象GGG1的从父类A1继承来的实例方法CCC1
GGG1.CCC1()
// 调用对象GGG1自身的实例方法CCC2
GGG1.CCC2()
// 7. 静态方法调用
// 声明整数变量FFF1并赋值为3
val FFF1 = 3
// 声明整数变量FFF2并赋值为5
val FFF2 = 5
// 调用静态方法DDD1,传入FFF1和FFF2作为参数,并将返回值赋给FFF3
val FFF3 = DDD.DDD1(FFF1, FFF2)
println("\n3. Calculation:")
// 打印输出两个整数变量FFF1和FFF2的和
println("Sum of ${FFF1} and ${FFF2} is ${FFF3}")
// 8. 字符串操作
// 声明字符串变量SSS1并赋值为"Hello"
val SSS1 = "Hello"
// 声明字符串变量SSS2并赋值为"World"
val SSS2 = "World"
// 将SSS1和SSS2通过字符串模板拼接起来赋给SSS3
val SSS3 = "$SSS1, $SSS2!"
println("\n4. String Operations:")
// 打印输出拼接后的字符串
println("Concatenated: ${SSS3}")
// 9. 循环结构
println("\n5. Loop Structures:")
// 使用for循环,从1到5进行迭代,类似C语言中for循环的结构
for (FFF4 in 1..5) {
// 打印输出循环的序号和对应的Dog开头的字符串
println("Loop ${FFF4}: Dog ${FFF4}")
}
// 10. 条件判断
// 声明特殊字符串变量HHH1并赋值为"Valid"
val HHH1 = "Valid"
println("\n6. Conditional Check:")
// 判断字符串HHH1的长度是否大于5
if (HHH1.length > 5) {
// 如果大于5,打印输出该字符串有效
println("String '$HHH1' is valid")
} else {
// 否则,打印输出该字符串无效
println("String '$HHH1' is invalid")
}
}