大家好,我是鸿蒙学习新手,正在跟着黑马程序员课程学习鸿蒙ArkTS,今天总结【变量和类型、数组】这一节。

在编程的世界里,数据就像我们生活中的各种物品,而变量和类型就是存放和分类这些物品的“盒子”和“标签”。数组则像是一个“多格收纳盒”,可以整齐地存放多个同类物品。掌握它们,是写出任何程序的第一步。

一、学习环境准备

请确保你已安装好 DevEco Studio 并创建了一个 Empty Ability 项目,开发语言选择 ArkTS。我们将在 entry/src/main/ets/entryability/EntryAbility.ts 文件中编写和运行今天的代码。

二、变量与类型:数据的“盒子”与“标签”

想象一下,你要整理房间。变量就是你准备的“空盒子”,用来装东西。而类型就是你贴在盒子上的“标签”,告诉你这个盒子应该装什么(比如“书本盒”、“玩具盒”)。ArkTS 要求我们明确每个盒子的标签,这样程序才更安全、不易出错。

1. 声明变量:let 和 const

创建“盒子”有两种方式:

  • let:声明一个普通的“盒子”,里面的东西以后可以换。
  • const:声明一个“密封盒”,一旦放进东西,就不能再换了。
// 使用 let 声明变量(可变的盒子)
let myName: string = "小明";
myName = "小红"; // 正确,可以更换内容

// 使用 const 声明常量(不可变的密封盒)
const PI: number = 3.14159;
// PI = 3.14; // 错误!常量一旦赋值就不能修改

2. 基础数据类型

ArkTS 提供了几种基础的“物品分类”:

  • number:数字,包括整数和小数。
  • string:字符串,表示一段文本。
  • boolean:布尔值,只有 true(真)或 false(假)。
// number 类型
let age: number = 18;
let price: number = 9.9;

// string 类型
let greeting: string = "你好,鸿蒙!";
// 使用模板字符串可以方便地拼接变量
let message: string = `我今年 ${age} 岁`;

// boolean 类型
let isLogin: boolean = true;
let hasError: boolean = false;

3. 数组与元组

当我们需要把多个同类物品放在一起时:

  • 数组 (Array):就像一个“笔筒”,可以放很多支笔(同类型数据)。
  • 元组 (Tuple):像一个“定制药盒”,每个格子放什么药是固定的(固定长度和类型)。
// 数组 - 存放多个同类型数据
let scores: number[] = [90, 85, 88]; // 数字数组
let fruits: string[] = ["苹果", "香蕉"]; // 字符串数组

// 元组 - 固定长度和类型的数组
let person: [string, number] = ["张三", 20]; // 第一个必须是string,第二个必须是number

4. 枚举与联合类型

为了让“标签”更清晰、更灵活:

  • 枚举 (Enum):给一组数字起上好记的名字。
  • 联合类型 (Union Type):一个“盒子”可以贴多个允许的“标签”。
// 枚举 - 定义一组命名的常量
enum Direction {
  Up,
  Down,
  Left,
  Right
}
let move: Direction = Direction.Up;

// 联合类型 - 变量可以是多种类型之一
let id: string | number;
id = "A001"; // 正确
id = 1001;   // 正确
// id = true; // 错误,boolean 不在允许的类型中

三、数组基础:操作“多格收纳盒”

数组是我们最常用的“多格收纳盒”,ArkTS 提供了丰富的方法来操作它。

1. 创建数组

// 方式一:类型 + 方括号 (推荐)
let list1: number[] = [1, 2, 3];

// 方式二:Array<类型>
let list2: Array<string> = ["a", "b", "c"];

// 方式三:先声明空数组,再添加
let list3: number[] = [];
list3.push(1);
list3.push(2);

2. 访问与修改元素

let colors: string[] = ["红色", "绿色", "蓝色"];

// 访问:通过索引(从0开始计数)
let firstColor: string = colors[0]; // "红色"
let secondColor: string = colors[1]; // "绿色"

// 修改
colors[1] = "黄色"; // 数组变为 ["红色", "黄色", "蓝色"]

// 获取数组长度
let len: number = colors.length; // 3

3. 数组常用方法

这些方法就像给“收纳盒”增加各种功能:

let arr: number[] = [1, 2, 3];

// 访问数组长度
let len: number = arr.length; // 3

// 修改数组元素
arr[0] = 10; // 数组变为 [10, 2, 3]

// 遍历数组(将在下一小节详细学习)
for (let i = 0; i < arr.length; i++) {
  console.log(arr[i]);
}

注意:更多高级数组方法(如 push、pop、concat 等)将在后续课程中学习,这里我们先掌握基础的访问和修改操作。

4. 遍历数组

我们经常需要逐个处理“收纳盒”里的每个物品:

let names: string[] = ["张三", "李四", "王五"];

// 方法1:普通 for 循环
for (let i = 0; i < names.length; i++) {
  console.log(`学生${i + 1}: ${names[i]}`);
}

// 方法2:for...of 循环(直接拿到值)
for (let name of names) {
  console.log(`姓名: ${name}`);
}

// 方法3:forEach 方法
names.forEach((name, index) => {
  console.log(`索引${index}对应: ${name}`);
});

五、常见问题

  • Q: let 和 const 怎么选?
    A: 如果确定这个值不会改变,就用 const(比如圆周率 PI)。如果值可能改变,就用 let(比如计数器)。多用 const 可以让意图更清晰。
  • Q: 不写类型可以吗?
    A: ArkTS 有类型推断,像 let name = "小黑" 会自动推断为 string。但建议初学者明确写上类型,这样代码更易懂,也能避免一些错误。
  • Q: 数组越界访问会报错吗?
    A: 不会报错,但会返回 undefined。例如访问 arr[10] 而数组长度只有3,得到的就是 undefined。这是逻辑错误,需要自己注意。

六、总结与下节预告

本节总结

本节我们学习了鸿蒙 ArkTS 中关于数据和集合的基础:

  1. 变量与类型:掌握了如何使用 letconst 声明变量,理解了 numberstringboolean、数组、元组、枚举和联合类型这些基础类型。
  2. 数组操作:学会了创建数组、访问和修改元素,以及三种遍历数组的方式。

下节预告

在下一节,我们将学习 函数与类,这是组织代码、实现复杂功能的关键。你将了解如何定义函数、传递参数、使用箭头函数,以及如何用类来创建对象。掌握了函数和类,你就能写出更模块化、更强大的鸿蒙应用了!

如果你在学习中遇到问题,欢迎在评论区留言讨论。也欢迎关注我,一起跟着黑马程序员课程从零学透鸿蒙 ArkTS!

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐