这是暑期实训时记录的一些笔记和心得,学习了ArkTS的语法,与其说是学习新语言,不如说是温习了一些编程相关的知识,模仿老师的一些编程风格,时间蛮赶的,很多东西需要值得消化。
一、开发工具:
- devEco Studio
二、ArkTS
调试输出与注释
调试输出:console.log(参数1,参数2,…)
1
console.log("周三") //日志
多个参数用英文逗号分隔,第一个参数必须是字符串。
注释:
- 单行注释://
- 多行注释:/: :/
变量、常量、数据类型
- 变量:
- 声明:let 变量名:类型;
声明并初始化:let 变量名:类型 = 值1;1
let student01:string = 'jack'
- 不能以数字开头,不能包含运算符,严格区分大小写,不能以关键字命名
- 为了提升代码可读性:使用字符数字下划线或$命名;尽量见名知义;用下划线分割多个单词
- 赋值
- 声明:let 变量名:类型;
- 常量:程序运行中始终不变的数据,通常const声明的常量名全大写
1
let STUDENT:string = 'tom';
- 数据类型:
- string(字符串):可以用单引号,双引号,反引号标注(模板字符串,通过${变量名}来使用变量的值)
1
2
3let stu1:string = 'jack';
let stu2:string = 'rose';
let introduce:string = `${stu1}和${stu2}是好伙伴`; - number(数字):分为整数、浮点数和特殊值,数字前可加-表示负号
- 整数:可赋值为二进制、八进制、十进制、十六进制
1
2
3
4let bin:number = 0b11010
let oct:number = 0o32
let dec:number = 26
let hex:number = 0x1a; - 浮点数
1
2let fnumber01:number = -3.14;
let fnumber02:number = 3.14; - 特殊值:
- Infinity:计算结果超出了最大可表示数字
- -Infinity:计算结果超出了最小可表示数字
- NaN(not a number):进行了非法运算操作,不是数字
- 整数:可赋值为二进制、八进制、十进制、十六进制
- boolean(布尔)
1
2let result01:boolean = true;
let result02:boolean = false; - null(空):变量为指向任何对象
1
let empty:null = null;
- void(空):函数没有返回值
1
let data:void;
- undefined(未定义):声明的对象未赋值
1
2let num01:undefined = undefined;
let num02:undefined; - object(对象)
运算符
- 算术运算符
- +、-、*、/、%
1
2
3
4
5
6let a=10,b=3,c=3,d=3;
console.log('a+b',(a+b));
console.log('a-b',(a-b));
console.log('a*b',(a*b));
console.log('a/b',(a/b));
console.log('a%b',(a%b)); - 自增自减:++a和a++对于a本身没有区别,都是自增1,但是一旦参与运算,前置先自增再参与运算,后置先参与运算再自增
1
2
3
4
5
6
7let s1 = ++a;
console.log('a=',a);//a=11
console.log('s1=',s1);//a==11
let s2 = a++;
console.log('a=',a);//a=12
console.log('s2=',s2);//a==11
- +、-、*、/、%
- 字符串运算符
- 字符串拼接(+)
1
2
3
4let username = 'jack';
let gender = 'male';
console.log(username + ',' + gender);
console.log(username + 1000);
- 字符串拼接(+)
- 赋值运算符:=、+=、-=、*=、/=、%=等
- 比较运算符:==(等于(值))、===(全等(值+数据类型))
- 逻辑运算符:
- 与:&&
- 或:||
- 非:!
- 三元运算符:条件表达式 ? 表达式1:表达式2;
- 数据类型检测运算符:
- typeof 数据 单个数据
- typeof(数据) 可以对表达式进行检测
流程控制
- 选择结构:
- (if语句)单分支、、双分支、多重分支(if、if…else…、if…else if…else)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27//选择结构单分支
let age1 = 21;
if(age1>18){
console.log("已成年");
}
//双分支
let age2 = 16;
if(age2>18){
console.log("已成年");
}else{
console.log("未成年");
}
//多重分支
let score = 80;
if(score >= 90){
console.log("优秀");
}else if(score >= 80){
console.log("良好");
}else if(score >= 70){
console.log("一般");
}else if(score >= 60){
console.log("合格");
}else{
console.log("不及格")
} - switch(表达式){
case1:
代码段1;
…
default:
代码段n;
}for(let i=1;i<100;i++){1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23let week:number = 3;
let result:string;
switch(week){
case 0:
result = '星期天';
case 1:
result = '星期一';
case 2:
result = '星期二';
case 3:
result = '星期三';
case 4:
result = '星期四';
case 5:
result = '星期五';
case 6:
result = '星期六';
}
2. 循环结构
* for循环:
for(初始化变量1;条件表达式2;操作表达式3){
循环体4;
}
console.log(‘’,i);
}let i =1;1
2
3
4
5
* while循环:
while(条件表达式1){
循环体2;
}
while(i<=100){
console.log(‘’,i);
i++;
}let j = 1;1
2
3
4* do...while循环:
do{
循环体1;
}while(条件表达式2);
do{
console.log(‘’,j);
j++;
}while(j<100);//小明吃六个桃子,当吃第二个桃子时,发现里面有虫子,丢掉第二个继续吃剩下四个1
2
33. 跳转语句
* continue:
终止循环,终止本层循环的本次循环
for(let i =1;i<=6;i++){
if(i == 2){
continue;
}
console.log(小明吃完了第${i}个桃子
)
}//小明吃六个桃子,当吃第二个桃子时,发现里面有虫子,于是剩下桃子都不吃了1
2* break:
终止循环,终止本层循环
for(let i =1;i<=6;i++){
if(i == 2){
break;
}
console.log(小明吃完了第${i}个桃子
)
}let fruits:string[] = [‘苹果’,’橙子’,’香蕉’];1
2
3
## 数组和枚举
1. 数组:索引+值
let index = 1;
console.log(fruits[0]);
console.log(fruits[index])
- (if语句)单分支、、双分支、多重分支(if、if…else…、if…else if…else)
//添加
fruits[3] = ‘草莓’;
console.log(fruits[3]);
//修改
fruits[2] = ‘菠萝’;
console.log(fruits[2]);
1 | 2. 二维数组:行+列 |
let arr:number[][] = [[23,45,73],[34,52,32]];
console.log(‘’,arr[0][0]);
console.log(‘’,arr[0]);
1 | 3. 枚举: |
console.log('',parseInt('100.56'));//100
1
* parseFloat():将给定的数据转换成 number 类型的浮点数
console.log('',parseFloat('1000.56'))//100.56
1
2
* setTimeout()和 setInterval():前者执行一次。后者以给定周期重复执行
* clearTimeout()和 clearInterval():清除对应的定时器
let time1 = setTimeout(()=>{
console.log('1秒输出1次');
},1000);
let time2 = setInterval(()=>{
console.log('setIntervl每隔一秒输出一次')
},1000);
1
2
3
4
5
6
* 自定义函数:
* 定义:
function 函数名(参数):返回值类型{
函数体;
}
* 调用:自动推断,类型断言
function sum7(num1:number,num2:number):number{
return num1+num2;
}
console.log(‘’,sum7(10,20));
function sum2(num1:number,num2:number){
return num1+num2;
}
//调用 自动推断
let s11 = sum2(100,200);
//类型断言
let s22 = sum2(100,200) as number;
1 | * 箭头函数: |
let sum3 = (num1:number,num2:number)=>{
return num1+num2;
}
console.log(‘’,sum3(1000,2000));
1
* 当函数体只有一条语句且运行结果为函数的返回值时,可省略函数体的大括号和return关键字
let sum33 = (num1:number,num2:number)=>num1+num2;
console.log(‘’,sum33(1,2));
1
2
3
4* 函数自调用:
((num1:number,num2:number)=>{
console.log('',num1+num2)
})(1,2);
((num1:number,num2:number)=>{
console.log(‘’,num1+num2);
})(100,200);
```