这是暑期实训时记录的一些笔记和心得,学习了ArkTS的语法,与其说是学习新语言,不如说是温习了一些编程相关的知识,模仿老师的一些编程风格,时间蛮赶的,很多东西需要值得消化。

一、开发工具:

  1. devEco Studio

二、ArkTS

调试输出与注释

  1. 调试输出:console.log(参数1,参数2,…)

    1
    console.log("周三") //日志

    多个参数用英文逗号分隔,第一个参数必须是字符串。

  2. 注释:

    • 单行注释://
    • 多行注释:/: :/

变量、常量、数据类型

  1. 变量:
    • 声明:let 变量名:类型;
      声明并初始化:let 变量名:类型 = 值1;
      1
      let student01:string = 'jack' 
    • 不能以数字开头,不能包含运算符,严格区分大小写,不能以关键字命名
    • 为了提升代码可读性:使用字符数字下划线或$命名;尽量见名知义;用下划线分割多个单词
    • 赋值
  2. 常量:程序运行中始终不变的数据,通常const声明的常量名全大写
    1
    let STUDENT:string = 'tom';
  3. 数据类型:
  • string(字符串):可以用单引号,双引号,反引号标注(模板字符串,通过${变量名}来使用变量的值)
    1
    2
    3
    let stu1:string = 'jack';
    let stu2:string = 'rose';
    let introduce:string = `${stu1}和${stu2}是好伙伴`;
  • number(数字):分为整数、浮点数和特殊值,数字前可加-表示负号
    • 整数:可赋值为二进制、八进制、十进制、十六进制
      1
      2
      3
      4
      let bin:number = 0b11010
      let oct:number = 0o32
      let dec:number = 26
      let hex:number = 0x1a;
    • 浮点数
      1
      2
      let fnumber01:number = -3.14;
      let fnumber02:number = 3.14;
    • 特殊值:
      • Infinity:计算结果超出了最大可表示数字
      • -Infinity:计算结果超出了最小可表示数字
      • NaN(not a number):进行了非法运算操作,不是数字
  • boolean(布尔)
    1
    2
    let result01:boolean = true;
    let result02:boolean = false;
  • null(空):变量为指向任何对象
    1
    let empty:null = null;
  • void(空):函数没有返回值
    1
    let data:void;
  • undefined(未定义):声明的对象未赋值
    1
    2
    let num01:undefined = undefined;
    let num02:undefined;
  • object(对象)

运算符

  1. 算术运算符
    • +、-、*、/、%
      1
      2
      3
      4
      5
      6
      let 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
      7
      let 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
  2. 字符串运算符
    • 字符串拼接(+)
      1
      2
      3
      4
      let username = 'jack';
      let gender = 'male';
      console.log(username + ',' + gender);
      console.log(username + 1000);
  3. 赋值运算符:=、+=、-=、*=、/=、%=等
  4. 比较运算符:==(等于(值))、===(全等(值+数据类型))
  5. 逻辑运算符:
    • 与:&&
    • 或:||
    • 非:!
  6. 三元运算符:条件表达式 ? 表达式1:表达式2;
  7. 数据类型检测运算符:
  • typeof 数据 单个数据
  • typeof(数据) 可以对表达式进行检测

流程控制

  1. 选择结构:
    • (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;
      }
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
         let 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;     
      }
      for(let i=1;i<100;i++){
      console.log(‘’,i);
      }
      1
      2
      3
      4
      5

      * while循环:
      while(条件表达式1){
                          循环体2;
       }
      let i =1;
      while(i<=100){
      console.log(‘’,i);
      i++;
      }
      1
      2
      3
      4
      * do...while循环:  
      do{
      循环体1;
      }while(条件表达式2);
      let j = 1;
      do{
      console.log(‘’,j);
      j++;
      }while(j<100);
      1
      2
      3
      3. 跳转语句
      * 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}个桃子)
      }
      1
      2
      3

      ## 数组和枚举
      1. 数组:索引+值
      let fruits:string[] = [‘苹果’,’橙子’,’香蕉’];
      let index = 1;
      console.log(fruits[0]);
      console.log(fruits[index])

//添加
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
2
3
4
5
6
7
3. 枚举:  
* enum 枚举名(枚举常量名1,枚举常量名2...)
* enum 枚举名(枚举常量名1 = 值1,枚举常量名2 = 值2,...)
* 定义了枚举后,可用枚举名.枚举常量名访问枚举常量的值
## 函数
* 内置函数(常用):
* parseInt():将给定的数据转换成 number 类型的数据。并且省略数据的小数部分,返回数据的整数部分
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
2
3
4
* 箭头函数:  
* (参数1:类型,参数2:类型,...):返回值类型=>{
函数体
}
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);
```