ArkTS 变量、常量、数据类型、流程控制、运算符、数组
掌握 ArkTS 语言的声明、类型、运算符和语句是构建高效、稳定 HarmonyOS 应用的基础。这些基本概念不仅为编写清晰、可维护的代码提供了框架,还为你在开发过程中进行错误检查和性能优化奠定了基础,从而确保应用的可靠性和用户体验。
基础语法
掌握 ArkTS 语言的声明、类型、运算符和语句是构建高效、稳定 HarmonyOS 应用的基础。这些基本概念不仅为编写清晰、可维护的代码提供了框架,还为你在开发过程中进行错误检查和性能优化奠定了基础,从而确保应用的可靠性和用户体验。
变量和常量
ArkTS 通过 let
const
声明变量和常量
let title: string = 'HarmonyOS'
title = '鸿蒙' //变量可以修改
const author: string = 'huawei'
author = '华为' //编译报错,常量不可以修改
类型推断
类型推断指的是ArkTS可以根据变量的赋值自动推断其数据类型,无需显式声明。
let title = 'HarmonyOS' //没有声明数据类型,自动推断为string类型
数据类型
数据类型就是给数据分个类,在编程中不同类型的数据采用不同的关键字进行标识,比如字符串用string
,整数用number
。数据类型按照复杂程度可分为基本数据类型和引用数据类型。
-
基本数据类型包括number、string等简单类型,它们可以准确地表示单一的数据类型。基本类型确保数据在存储和访问时是直接的,比较时直接比较其值。
-
引用类型包括对象、数组和函数等复杂数据结构。这些类型通过引用访问数据,对象和数组可以包含多个值或键值对,函数则可以封装可执行的代码逻辑。
[!warning]
引用类型在内存中通过指针访问数据,修改引用会影响原始数据。
基本数据类型
基本数据类型包括:number
string
boolean
等简单类型,可以准确表达单一的数据,确保数据存、取、比较时都是直接的。
let a: number = 3
let b: boolean = true
let c: string = 'HarmonyOS'
console.log("a的值:"+a)
console.log("b的值:"+b)
console.log("c的值:"+c)
引用数据类型
引用类型包括对象、数组和函数等复杂数据结构。这些类型通过引用访问数据,对象和数组可以包含多个值或键值对,函数则可以封装可执行的代码逻辑。
[!warning]
函数也是一种数据类型,关于函数的用法后面单独讲解。
数组类型
数组是一个存储多个数据的容器,容器中的数据可以是基本数据类型也可以是引用数据类型。
数组的相关概念:
- 元素:数组容器中存储的数据。
- 索引:每一个元素都对英一个编号,从0开始依次递增。
- 长度:数组中元素的个数,可以通过
数组名.length
获取。
演示代码如下
//索引 0 1 2
let arr:string[] = ['aa','bb','cc']
//修改arr数组的0索引元素
arr[0] = 'AA'
//打印数组中的每一个元素
console.log(arr[0]) //输出 aa
console.log(arr[1]) //输出 bb
console.log(arr[2]) //输出 cc
//打印数组中最后一个元素
console.log(arr[arr.length-1]) //cc
对象类型
对象就像是一个收纳盒📦,里面可以装各种不同类型的数据(属性),还给每个数据取了名字(属性名),方便随时取用。
- 例如,可以把一个用户看作一个对象,这个用户对象拥有姓名、年龄、是否VIP属性。 代码如下:
// 1. 定义用户类
class User {
// 属性(可添加类型注解)
name: string = ''
age: number = 20
isVIP: boolean = true
}
// 2. 创建对象
const user: User = new User();
// 3. 打印属性(两种方式)
console.log(user.name); // "张三"
console.log(`${user.age}`); // 25
console.log(`${user.isVIP}`); // false
联合类型
联合类型本质上是类型层面的逻辑组合。用于约束变量可接受多种类型,仅在编译时存在,运行时被擦除。
let id: string | number
id = '1'
id = 2
id = true //报错
类型别名
类型别名为匿名类型(数组、函数、对象字面量或联合类型)提供名称,或为已有类型提供替代名称。
//定义联合类型定义别名
type idType = string | number
//使用类型别名
let id: idType
id = '1'
id = true //报错
枚举类型
枚举是一种预先定义好的命名常量集合,每个常量都有对应的值(可以是数字或字符串),让代码更易读且避免硬编码。
//定义枚举类
enum Direction{
LEFT ,RIGHT,UP,DOWN
}
console.log(`${Direction.LEFT}`) //输出 0
console.log(`${Direction.RIGHT}`) //输出 1
命名规范
不管定义变量还是定义常量,取名也是不是乱取的,是有一些命名规则的,必须遵守这些规则,否则代码编译不通过。
- 只能包含数字、字母、下划线、$,不能以数字开头
- 不能使用内置关键字或者保留字
- 严格区分大小写
运算符
运算符(Operator)是一种告诉编译器执行特定数学或逻辑操作的符号。
算术运算符
算数运算符包含:+ - * / % ++ --
,其中+ - *(乘) /(除)
就是字面上意思,小学数学都学过,不做过多阐述。
下面重点讲解一下++
或者--
运算符的运算规则,分为单独使用和混合使用两种情况
- 单独使用:不断++或者–放在操作数的前面还是后面,都表示对操作数自增1或者自减1
let a = 3
let b = 4
a++
console.log(`a的值为${a}`) // 4
++b;
console.log(`b的值为${b}`) // 5
- 混合使用:++和–可以放在变量前面或者后面,运算顺序有所不同
let x = 3
let y = ++x //x先+1,再把x的结果赋值给y
console.log(`x的值为${x}`) //x的值为4
console.log(`y的值为${y}`) //y的值为4
let i = 3
let j = i++ //先把i的值赋值给j,i再+1
console.log(`i的值为${i}`) //x的值为4
console.log(`j的值为${j}`) //y的值为3
赋值运算符
赋值运算就是把具体数据值赋值给变量,有下面的几个运算符
let a1 = 10 //把整数10赋值给var类型的变量a
let b1 = 20
b1+=10 //把b1+10之后,把结果再赋值给b,最终b=30
console.log(`b1的值为${b1}`) //b1的值为30
let c1 = 10
c1 %= 4 //把c对4取余数,把结果再赋值给c,最终c=2
console.log(`c1的值为${c1}`) //c1的值为2
比较运算符
用来对两个数据做比较运算,最终结果只能是true或者false。需要注意的是==和=千万不要搞混淆了
- = 用于赋值
- == 用于判断两个数据是否相等
let a2 = 10
let b2 = 10
let c2 = a2==b2
console.log(`c2的值为${c2}`) //c2的值为true
逻辑运算符
逻辑运算可以对多个条件进行连接,最终结果也是true或者false
let a3 = 3;
let b3 = 4;
let c3 = 5;
//&&(双与): 左右两边都是true,结果才是true。
console.log('逻辑运算',a3 > b3 && b3 < c3) //false
console.log('逻辑运算',a3 < b3 && b3 < c3) //true
//||(双或): 左右两边有一个是true,结果就是true。
console.log('逻辑运算',a3 > b3 || b3 > c3) //false
console.log('逻辑运算',a3 < b3 || b3 < c3) //true
//!(非): 对值取反
console.log('逻辑运算',!(a3 < b3)) //false
三元运算符
三元运算符是ArkTS 中一种简洁的条件表达式,格式为:条件 ? 表达式1 : 表达式2
。以下是详细解析和示例:
// 基本语法
let result = 条件 ? 值1 : 值2;
// 示例:判断成年
let age = 20;
let message = age >= 18 ? "成年人" : "未成年人";
console.log(message); // "成年人"
流程控制语句
if
if语句用于需要根据逻辑条件执行不同语句的场景。当逻辑条件为真时,执行对应的一组语句,否则执行另一组语句(如果有的话)。
if语句如下所示:
if (condition1) {
// 语句1
} else if (condition2) {
// 语句2
} else {
// else语句
}
条件表达式可以是任何类型。但是对于boolean以外的类型,会进行隐式类型转换:
let s1:string = "Hello"
if (s1) {
console.log(s1); // 打印“Hello”
}
let s2 = 'World';
if (s2.length != 0) {
console.log(s2); // 打印“World”
}
switch
switch用于在几个固定的值当中,选择一个匹配的值,执行对应的代码块。
switch (expression) {
case label1: // 如果label1匹配,则执行
// ...
// 语句1
break; // 可省略
case label2:
//语句2
break;
case label3: // 如果label2或label3匹配,则执行
// ...
// 语句3
break; // 可省略
default:
// 默认语句
}
执行流程:
-
如果switch表达式的值等于某个label的值,则执行相应的语句。
-
如果没有任何一个label值与表达式值相匹配,并且switch具有default子句,那么程序会执行default子句对应的代码块。
-
break语句(可选的),用于跳出switch语句并继续执行switch语句之后的语句。
-
如果没有break语句,则执行switch中的下一个label对应的代码块。
示例代码:
let score = 99
//匹配成绩等级
switch (true) { // 特殊用法:比较表达式
case score >= 90:
console.log("当前等级为:"+'A')
case score >= 80:
console.log("当前等级为:"+'B')
case score >= 60:
console.log("当前等级为:"+'C')
default:
console.log("当前等级为:"+'D')
}
for
for语句会被重复执行,直到循环退出语句值为false。for语句如下所示:
for (初始化语句; 条件判断; 变量更新) {
循环体语句
}
示例:打印输出1~10之间所有的整数
for(let i=1; i<=10; i++){
console.log(`${i}`)
}
示例:求0~10范围内所有偶数的和
let sum = 0;
for (let i = 0; i <= 10; i+=2) {
sum+=i
}
console.log(`${sum}`)
for of
使用for-of语句可遍历数组或字符串。示例如下:
for (forVar of expression) {
statements
}
示例:
let array = ['你好', '鸿蒙', 'HarmonyOS'];
for (let s of array) {
console.log(s); //'你好', '鸿蒙', 'HarmonyOS'
}
while
只要condition为真值(转换后为true的值),while语句就会执行statements语句。示例如下:
while (condition) {
statements
}
示例:
let n = 0;
let x = 0;
while (n < 3) {
x += n;
n++;
}
console.log(`${n}`)
do while
如果condition的值为真值(转换后为true的值),那么statements语句会重复执行。示例如下:
do {
statements
} while (condition)
示例:
let sum3 = 0
let i = 0;
do {
sum3 += i
i++
} while (i <= 10)
console.log(`${sum3}`) //55
break
使用break语句可以终止循环语句或switch。
示例:
for (let x = 1; x <=10; x++) {
if (x % 2 == 0) {
break
}
console.log(`${x}`) //1
}
如果break语句后带有标识符,则将控制流转移到该标识符所包含的语句块之外。
示例:
let x = 1
label: while (true) {
switch (x) {
case 1:
// statements
break label; // 中断while语句
}
}
continue
continue语句会停止当前循环迭代的执行,并继续执行下一次循环。
示例:
for (let x = 1; x <=10; x++) {
if (x % 2 == 0) {
continue
}
console.log(`${x}`) //1 3 5 7 9
}
更多推荐
所有评论(0)