版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
倪红军OpenHarmony应用开发
零基础入门第三章ArkTS程序设计基础
3.1ArkTS基本语法
3.2函数
3.3类和对象
3.4接口
3.5泛型
3.6异常倪红军制作3.1ArkTS基本语法本节要点1.掌握ArkTS的变量和常量定义方法2.掌握ArkTS的数据类型3.掌握ArkTS的运算符4.掌握ArkTS的控制流程(顺序、选择和循环)倪红军制作3.1.1变量和常量1.变量变量是能存放计算结果或能表示值的标识符。变量名的命名规则如下所示。(1)变量名必须由数字、字母、下划线或中文字符组成;(2)变量名开头不能是数字;(3)变量名不能是保留字或关键字;(4)变量名区分大小写。变量使用前必须先声明,ArkTS中用let声明变量有下列4种方式。倪红军制作3.1.1变量和常量【范例3-1】定义1个用于存放学生姓名、语文成绩、数学成绩和总成绩的变量。代码如下所示。倪红军制作3.1.1变量和常量2.常量常量也称常数,是指在整个程序运行过程中一种恒定的或不可变的数据。它通常直接用数值或常量名表示,ArkTS中用const声明常量,可以有下列2种方式。倪红军制作3.1.2数据类型1.数值类型数值类型(number)的数据可以表示任何整数和浮点数。整数可以用十进制、十六进制(以0x或0X开头)、八进制(以0o或0O开头)及二进制(以0b或0B开头)表示。浮点数可以包含小数点(“.”)或以“e”、“E”开头的指数部分。【范例3-2】下列代码表示用不同的形式定义整数变量和浮点数变量。倪红军制作3.1.2数据类型2.字符串类型字符串类型(string)的数据由单引号(')或双引号(")之间括起来的零个或多个字符组成。反引号(`)定义字符串模板中包含的多行文本或内嵌表达式。上述第3行代码中的“${osName}”和“${years+1}”为内嵌表达式,内嵌表达式的值作为字符串模板内容。【范例3-3】下列代码表示用双引号定义字符串、反引号定义内嵌表达式。倪红军制作3.1.2数据类型2.字符串类型字符串是由一个个的字符元素组成,ArkTS中提供了一些方法和属性对字符串进行操作。表3-1中以“letdetail="HelloWorld!"letinfo="helloWorld!"”为例介绍字符串的常用操作方法和属性。倪红军制作3.1.2数据类型3.布尔类型布尔类型(boolean)的数据表示逻辑值true(真)和false(假)。倪红军制作3.1.2数据类型4.数组类型数组(array)是一个可以容纳多个数据的容器,容器中每个数据称为数组元素,数组中第一个元素的索引下标为0。声明变量为数组的语法格式如下所示。【范例3-3】下列代码表示声明1个能够存放班级平均分的avgs数组,班级平均分分别为87、79、73、85、65。倪红军制作3.1.2数据类型4.数组类型例如,下列代码表示定义1个info数组,该数组中可以包括number、boolean、string类型的数组元素。也可以使用数组泛型声明数组,语法格式如下所示。例如,范例3-3中的avgs数组也可以用如下代码声明倪红军制作3.1.2数据类型4.数组类型表3-2中以“letarr1:number[]=[1,2,3,1]letarr2:string[]=["a","b","c","d"]”为例介绍数组的常用操作方法和属性。倪红军制作3.1.2数据类型5.枚举类型枚举类型(enum)是预先定义的一组命名值的值类型,其中命名值又称为枚举常量。使用枚举常量时必须以枚举类型名称为前缀。【范例3-4】下列代码表示声明1个存放茶叶名称的枚举类型值,并给福建产的茶叶赋值。倪红军制作3.1.2数据类型6.void类型void类型用于指定函数没有返回值,该类型只有一个void值。由于void是引用类型,所以它可以用于泛型类型参数。7.Object类型Object类型是所有引用类型的基类型。任何值都可以直接被赋予Object类型的变量。例如,下列代码编译不会报错。倪红军制作3.1.2数据类型8.联合类型联合类型(Union)是由多个类型组合成的引用类型。联合类型包含了变量可能的所有类型。联合类型的语法格式如下所示。【范例3-5】定义1个可以存放number和string类型数据的联合类型,并声明1个该联合类型变量,实现代码如下所示。倪红军制作3.1.3运算符1.算术运算符算术运算符用于执行基本的数学运算,使用算术运算符、常量和变量等可以组成算术表达式。表3-3中以“leta=4letb=5”介绍ArkTS语言支持的算术运算符及功能。倪红军制作3.1.3运算符2.比较运算符比较运算符用于对操作数与操作数之间进行关系比较,使用关系运算符、常量和变量等可以组成比较表达式,比较表达式的值只能为true或false。表3-4中以“leta=4letb=5”介绍ArkTS语言支持的比较运算符及功能。倪红军制作3.1.3运算符3.逻辑运算符逻辑运算符用于判断操作数之间的关系,使用逻辑运算符、常量和变量等可以组成逻辑表达式。表3-5中以“leta=4letb=5”介绍ArkTS语言支持的逻辑运算符及功能。倪红军制作3.1.3运算符4.位运算符位运算是程序设计中对位模式按位或二进制数的一元和二元操作。表3-6中以“leta=4letb=5”介绍ArkTS语言支持的逻辑运算符及功能。倪红军制作3.1.3运算符5.赋值运算符赋值运算符用于将值赋给另一个变量,值的分配从右到左。表3-6中以“leta=4letb=5”介绍ArkTS语言支持的赋值运算符及功能。倪红军制作3.1.3运算符6.其他运算符(1)三元运算符三元运算符(?:)也称为条件表达式,它包含3个操作数,并且需要判断布尔表达式的值。该运算符的主要是决定哪个值应该赋值给变量。例如,求两个数中较大的数可以用如下代码实现。(2)类型运算符类型运算符(typeof)是一元运算符,返回操作数的数据类型。例如,输出a变量的数据类型可以用如下代码实现。倪红军制作3.1.4控制流程1.条件分支结构(1)if语句if语句由布尔表达式及代码块组成,其语法格式如下所示。【范例3-6】产生1个10~100间的随机整数,如果该随机整数为偶数,则输出“产生的随机数是偶数”。实现代码如下所示。倪红军制作3.1.4控制流程1.条件分支结构(2)if...else语句if...else语句由if语句及else语句组成,其语法格式如下所示。例如,在范例3-6的基础上,如果该随机数为奇数,则输出“产生的随机数是奇数”。实现代码如下所示。倪红军制作3.1.4控制流程1.条件分支结构(3)if...elseif...else语句if...elseif...else语句在执行多个判断条件的时候很有用,其语法格式如下所示。【范例3-7】产生1个-100~100间的随机整数x,如果x>0则输出“x>0”;如果x=0则输出“x=0”;如果x<0则输出“x<0”。实现代码如右所示。倪红军制作3.1.4控制流程1.条件分支结构(4)switch语句switch语句用来选择多个代码块中某一个代码块执行,也就是执行与switch表达式值匹配的代码块。其语法格式如下所示。倪红军制作3.1.4控制流程1.条件分支结构(4)switch语句switch语句用来选择多个代码块中某一个代码块执行,也就是执行与switch表达式值匹配的代码块。其语法格式如下所示。【范例3-8】产生1个随机整数week(week代表星期几),根据week值判断主食内容,周一、周三、周五吃面条;周二、周四、周六吃米饭;周日吃馒头。实现代码如右所示。倪红军制作3.1.4控制流程2.循环结构(1)for循环语句for循环语句用于多次执行一个语句块,其语法结构如下所示。【范例3-9】求10的阶乘,实现代码如下所示。倪红军制作3.1.4控制流程2.循环结构(2)for...of循环语句for...of循环语句用于遍历数组、字符串等可迭代的数据,其语法结构如下所示。【范例3-10】用for...of循环语句输出交通工具名称,实现代码如下所示。倪红军制作3.1.4控制流程2.循环结构(3)while循环语句while循环表示根据条件重复执行循环体的内容。它有两种while和do...while两种形式。while形式是先判断条件,然后才根据条件决定是否执行循环体。也就是当条件为真时,才循环执行循环体。其语法结构格式如下所示。【范例3-11】求满足1+2+3+4+5+......+n<10000表达式中最大的n值,实现代码如下所示。倪红军制作3.1.4控制流程2.循环结构(3)while循环语句while循环表示根据条件重复执行循环体的内容。它有两种while和do...while两种形式。while形式是先判断条件,然后才根据条件决定是否执行循环体。也就是当条件为真时,才循环执行循环体。其语法结构格式如下所示。【范例3-11】求满足1+2+3+4+5+......+n<10000表达式中最大的n值,实现代码如下所示。倪红军制作3.1.4控制流程2.循环结构(3)while循环语句while循环表示根据条件重复执行循环体的内容。它有两种while和do...while两种形式。do...while形式是先执行循环体,然后判断条件,当条件为真时,才继续循环执行循环体。其语法结构格式如下所示。例如,范例3-11也可以用如下代码实现。倪红军制作3.1.4控制流程2.循环结构(4)break、continue和returnbreak语句的作用是在循环结构中终止本层循环体,从而提前结束本层循环。continue语句的作用是跳过本次循环体中余下尚未执行的语句,立即进行下一次的循环条件判定,即仅结束本次循环。return语句的作用是终止程序的运行。例如,下列语句执行时将0~100间的所有奇数相加。倪红军制作3.2函数本节要点1.掌握常用标准库函数的使用方法2.掌握用户自定义函数的使用方法3.掌握函数重载的含义及使用方法倪红军制作3.2.1标准库函数已经存在于ArkTS语言标准库中的函数称为标准库函数或内置函数或预定义函数。例如,前面用到的Math.random()函数,表示取0~1之间的随机数,它在标准函数库中已经存在,所以可以直接在代码中调用。前面用到的Math.floor()、console()等也是标准库函数,开发者可以选择所需的标准库函数在代码中直接使用。倪红军制作3.2.2用户自定义函数ArkTS语言中函数的声明定义格式如下所示。根据不同的应用场景,ArkTS语言中将函数分为无参函数、有参函数、匿名函数和箭头函数。无参数就是声明函数时,不需要定义参数,调用时不需要传入参数。例如,下列函数调用时不需要传入参数,会直接显示版权信息。倪红军制作3.2.2用户自定义函数1.有参函数(1)没有默认值参数没有默认值参数也称为必选参数,就是在函数声明时并没有指定参数的默认值,但是在调用函数时必须指定参数的值。【范例3-12】定义一个求两数中较大值的函数,实现代码如下所示。倪红军制作3.2.2用户自定义函数1.有参函数(2)有默认值参数有默认值的参数就是在函数声明时指定了参数默认值,调用函数的时候,如果不传入该参数的值,则使用默认参数。例如,用有默认值参数函数实现范例3-12功能的代码如下所示。倪红军制作3.2.2用户自定义函数1.有参函数(3)可选参数可选参数表示在调用时可以传入参数的值,也可以不传入参数的值,声明函数时用“?”标识参数名。例如,下列代码表示根据传入的参数返回结果。倪红军制作3.2.2用户自定义函数1.有参函数(4)剩余参数在不能确定传入参数个数的开发场景中,可以用“...”将函数的参数声明为剩余参数。【范例3-13】定义一个能够求任意多个数之和的函数,实现代码如下所示。倪红军制作3.2.2用户自定义函数2.匿名函数匿名函数是一个没有函数名的函数。它在程序运行时动态声明,除了没有函数名外,其他与自定义函数一样。例如,用匿名函数求两数之和的实现代码如下所示。倪红军制作3.2.2用户自定义函数3.箭头函数箭头函数也称为Lambda函数,这种函数只有函数体而没有函数名称的函数。箭头函数的语法格式如下所示。【范例3-14】定义一个求两数之和的Lambda函数,实现代码如下所示。倪红军制作3.2.3函数重载函数重载是指通过为同一函数(函数名相同)提供多个不同的签名(包括参数类型、数量),以便根据实际传入的参数类型和数量,在编译时选择正确的函数进行调用。声明函数重载的语法格式如下所示。函数重载由多个函数声明组成,但仅有最后一个函数声明包含具体功能实现的函数体。每个重载函数声明的返回值类型可以相同,也可以不相同;如果返回值类型不相同,则最后一个函数声明的返回值类型为any。倪红军制作3.2.3函数重载例如,下面前三个函数的参数类型、函数返回值类型均不相同,最后一个具体功能实现函数的返回值类型为any。倪红军制作3.3类和对象本节要点1.掌握类的定义和使用方法2.掌握类继承的含义和使用方法3.掌握可见性修饰符的含义和使用方法4.掌握对象字面量的含义和使用方法倪红军制作3.3.1类的定义和使用类描述了所创建对象共同的特殊属性和方法。类的定义语法格式如下所示。类名的首字母一般为大写字母;字段用于表示类对象的有关属性特征;构造函数在类实例化对象时调用,用于为类对象分配内存;方法用于描述类对象的有关行为。类的构造函数是类的一种特殊方法,它会在每次创建类对象时调用。定义类时如果没有自定义任何构造函数,那么就会有一个默认的构造函数可以调用。但是,如果使用constructor声明构造函数后,默认构造函数就会失效。倪红军制作3.3.1类的定义和使用类定义后,可以使用new关键字创建实例化对象,对象的成员用“.”引用。实例化对象和引用对象成员的语法格式如下所示。【范例3-15】定义一个Person类,包含姓名、年龄2个特征属性和1个说话方法,实现代码如下所示。倪红军制作3.3.1类的定义和使用为了减少运行时的错误和获得更好的执行性能,ArkTS语法中要求所有字段在声明时或者构造函数中显式初始化。例如,用构造函数实现范例3-15。倪红军制作3.3.1类的定义和使用1.字段字段是直接在类中声明的某种类型的变量。类中可以定义实例字段或者静态字段。实例字段存在于类的每个实例化对象上,每个实例化对象都有自己的实例字段集合。要访问实例字段,需要使用类的实例化对象。静态字段用static关键字修饰,它属于类本身,类的所有实例化对象共享一个静态字段,静态字段使用类名访问。【范例3-16】定义一个动物类,包含1个用于计数的静态字段,用来记录动物的数量,实现代码如下所示。倪红军制作3.3.1类的定义和使用2.方法方法是直接在类中声明的某种行为。类中可以定义实例方法或者静态方法,实例方法既可以访问静态字段,也可以访问实例字段。要访问实例方法,需要使用类的实例化对象。静态方法用于定义类的一个公共行为,用static关键字修饰;静态方法属于类本身,只能访问静态字段,静态方法使用类名访问。例如,在范例3-16基础上添加静态方法,用于输出动物的数量。实现代码如下的所示。倪红军制作3.3.2类的继承在面向对象编程思想下,可以在创建类的时候继承一个已存在的类,这个已存在的类称为父类或基类,继承它的类称为子类或派生类。子类既可以继承父类的字段和方法,也可以覆盖父类的方法(覆写方法),并且可以新增定义字段和方法。类的继承定义语法格式如下所示。【范例3-17】定义一个继承自Person类的Student子类,在Student类中新增school字段代表就读学校、study方法代表学习行为,实现代码如下所示。倪红军制作3.3.2类的继承【范例3-18】定义继承自Student类的PStudent和MStudent子类,分别代表小学生类和中学生类,并覆写study方法,实现代码如下所示。倪红军制作3.3.3可见性修饰符类的字段和方法可以使用public、private和protected等可见性修饰符来控制访问权限,默认修饰符为public。由public修饰的类成员,可以在程序的任何可访问类的地方访问;由private修饰的类成员,只能在声明该成员的类内部访问;由protected修饰的类成员,可以在声明该成员的类内部和子类中访问。【范例3-19】下列代码定义在同一个程序中,分析它们的执行情况。倪红军制作3.3.4对象字面量对象字面量是一个表达式,用于代替new创建类实例,并同时提供一些初始值,以便提高实例化对象的方便性。【范例3-20】定义1个Bird类,并用对象字面量分别实例化2个bird对象,实现代码如下所示。倪红军制作3.4接口本节要点1.掌握接口的定义和使用方法2.掌握接口的继承方法倪红军制作3.4.1接口的定义和使用接口通常包含字段和方法的声明,这些字段和方法都是抽象的,需要由具体的类去实现后才可以使用。接口的定义语法格式如下所示。倪红军制作3.4.1接口的定义和使用(1)编写一个图形接口,分别在接口中定义图形名称抽象字段及图形条件输入、判断能否构成图形、计算图形面积和计算图形周长的4个抽象方法。【范例3-21】编写一个能求解多种平面图形(如圆形、三角形)面积与周长的程序,实现步骤如下所示。倪红军制作3.4.1接口的定义和使用(2)根据接口定义圆形、三角形等图形的类,依次实现接口的抽象字段和方法。【范例3-21】编写一个能求解多种平面图形(如圆形、三角形)面积与周长的程序,实现步骤如下所示。倪红军制作3.4.1接口的定义和使用(2)根据接口定义圆形、三角形等图形的类,依次实现接口的抽象字段和方法。【范例3-21】编写一个能求解多种平面图形(如圆形、三角形)面积与周长的程序,实现步骤如下所示。倪红军制作3.4.1接口的定义和使用(3)自定义result()方法输出图形面积和周长。【范例3-21】编写一个能求解多种平面图形(如圆形、三角形)面积与周长的程序,实现步骤如下所示。倪红军制作3.4.1接口的定义和使用(4)实例化圆形对象、三角形对象,并调用result()函数输出图形面积和周长。【范例3-21】编写一个能求解多种平面图形(如圆形、三角形)面积与周
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 4937.201-2026半导体器件机械和气候试验方法第20-1部分:对潮湿和焊接热综合影响敏感的表面安装器件的操作、包装、标志和运输
- 细菌性角斑病防治技术指南
- 高血压膳食调理方案实施指引
- 营养师一对一膳食咨询方案
- 门店服务质量检查考核标准
- 专项应急演练评估验收标准
- 肉牛繁育改良技术操作指引方案
- 枇杷树高接换种综合技术规程
- 体重管理膳食控制方案指引
- 消防火灾疏散逃生演练实施方案
- 2026中国冶金地质总局山东局校园招聘46人笔试历年参考题库附带答案详解
- 2026中共广州市海珠区委社会工作部招聘雇员1人备考题库(广东)含答案详解(完整版)
- 光伏电站基础沉降监测方案
- 2026国家知识产权局专利局专利审查协作招聘1500名专利审查员信息重点基础提升(共500题)附带答案详解
- 2026年入党积极分子培训考试试题及答案
- 2026新教材语文 16.1《阿房宫赋》教学课件统编版高中语文必修下册
- 初中物理跨学科实践活动的设计与实施课题报告教学研究课题报告
- 2026春青岛版(五四制)三年级科学下册(全册)各单元知识点复习要点梳理
- 断肢再植术后血液循环观察指标及护理要点
- 2026广东深圳市优才人力资源有限公司招聘编外聘用人员(派遣至深圳市龙岗区机关事务管理局)补充笔试备考试题及答案详解
- 2026年广东省高三语文二模作文题目解析及范文:“意外”的价值
评论
0/150
提交评论