void main() {
// (1)分别使用 var、bool, int, double, String、dynamic、Object 进行变量的定义
// 使用 var 自动推导类型
var variable = "Dart"; // var 根据初始化值自动推断为 String 类型
// 定义布尔类型变量
bool isStudent = true; // 表示是否是学生
// 定义整数类型变量
int age = 20; // 年龄
// 定义浮点数类型变量
double height = 175.5; // 身高
// 定义字符串类型变量
String name = "郭良辰"; // 姓名
// 定义动态类型变量
dynamic dynamicVar = "可以是任何类型"; // 动态类型,运行时决定
// 定义对象类型变量
Object objectVar = "对象类型"; // 对象类型,默认为 Object 类型
// 输出变量值
print("姓名: $name");
print("年龄: $age");
print("是否学生: $isStudent");
print("身高: $height");
print("变量: $variable");
print("动态变量: $dynamicVar");
print("对象变量: $objectVar");
// 修改变量值并输出,展示不同定义方法的区别
// var 类型的变量在推断后类型固定,不能更改类型
// variable = 100; // 错误:var 已被推断为 String 类型,不能赋值为 int
// dynamic 类型的变量可以在运行时更改类型和值
dynamicVar = 42; // 正确:dynamic 可以更改类型和值
print("修改后的动态变量: $dynamicVar");
// Object 类型的变量只能存储对象,但无法直接操作具体类型的特性
objectVar = 100; // 正确:Object 类型可以存储任何对象
print("修改后的对象变量: $objectVar");
// (3)分别使用 final 和 const 关键字来声明常量
// 使用 final 声明运行时常量
final String finalName = "计科(专起本)24-1 郭良辰"; // final 在运行时赋值一次后不可修改
// 使用 const 声明编译时常量
const int constNumber = 42; // const 在编译时赋值,值不可更改
// 输出常量值
print("Final 常量: $finalName");
print("Const 常量: $constNumber");
// 尝试修改 final 和 const 会报错
// finalName = "修改后的名字"; // 报错:final 只能赋值一次
// constNumber = 100; // 报错:const 值不可更改
// 展示 final 和 const 的区别
// final 可以在运行时初始化,而 const 必须在编译时初始化
final runtimeValue = DateTime.now(); // final 可以引用运行时生成的值
// const compileTimeValue = DateTime.now(); // 错误:const 只能引用编译时已知的值
print("运行时常量 (final): $runtimeValue");
print("个人信息:");
print("班级: 计科(专起本)24-1");
print("姓名: 郭良辰");
}