初识鸿蒙之ArkTS基础

前言

学习一种应用程序开发,需要从这种程序的开发语言开始,比如说Android开发从入门到放弃,肯定是从Java基础或者是Kotlin语言基础开始学习的,IOS程序开发也肯定是从object-c开始学习的。鸿蒙软件开发也不例外,如果做鸿蒙软件开发,那么就需要我们从ArkTS开始学习了。笔者这里不再赘述什么JavaScript、TypeScript、ArkTS的发展历程和各种包含包括的关系了,下面我们直接进入正题。

基本数据格式


/**
 * 数据类型 文本类型数据
 */

let msg: string = '文本类型数据'
console.log(TAG,'msg: '+msg)
/**
 * 数字类型数据
 */
let age: number = 18
console.log(TAG,'age: '+age)

/**
 * 布尔类型数据
 */
let isBoy:boolean = true
console.log(TAG,'isBoy: '+isBoy)

/**
 * 联合类型
 */
let union: string | number | boolean = 'union'
console.log(TAG,'union: '+union)
union = 35
console.log(TAG,'union: '+union)

ArkTS 支持了string、number、boolean、any、以及联合类型,如上面的代码,把这些代码在方舟编译器上面运行一下,得到如下结果:
在这里插入图片描述
在这里你可能会发一个问题,我们在上一篇文章的代码的所有括号外面进行了编程,并且可直接运行,相当于Java代码方便了许多。可以在一个文件内直接运行。对了,这里有一点需要注意下,下图中红框内的代码不要删除,至于为什么在之后的文章会说到。
在这里插入图片描述

定义数组


/**
 * 定义数组类型
 */
let names: Array<string> = ['张三', '李四']
let ages: number[] = [18, 22, 30, 35]
console.log(TAG,"names: "+names)
console.log(TAG,"ages: "+ages)

效果如下:
在这里插入图片描述

if判断语句使用


 /**
 * if 使用 == 判断等于可能涉及类型转换;正常比较两个元素是否相等 推荐使用 ===
 * Ts 中空串、数字0、null、undefined 都被认为是false
 */
if (names[0] === '张三') {
  console.log(`names 第一个是 ${names[0]}`)
} else {
  console.log('输入数据正确')

这里注意一点 ArkTS 中空串、数字0、null、undefined 都被认为是false,这里在日后的代码中还是很方便的。

switch语句

/**
 * switch 的每个case 需要大括号
 */

switch (ages[0]) {
  case 0: {
    console.log('是0')
    break
  }
  case 15: {
    console.log('是15')
    break
  }
  default: {
    console.log('是18')
    break
  }
}

这里有一点是:switch 的每个case 需要大括号。

方法创建(函数创建)


/**
*无返回值 函数
*/

function test(name): void {
 console.log(`测试函数:${name}`)
}

/**
* 调用函数
*/
test("Ts无返回值函数")

/**
* 有返回值函数
*/
function testAdd(x: number, y: number): number {
 return x + y
}

let result = testAdd(12, 25)
console.log(`result: ${result}`)

/**
* 可选参数的函数
*/
function select(name?: string) {
 console.log(`箭头函数:${name ? name : '没有参数'}`)
}

select()

/**
* 默认参数的函数
*/
function def(name: string = '默认参数') {
 console.log(`箭头函数:${name}`)
}

def()

方法创建时需要用基本格式为:


function 方法名称(参数名称:参数类型=默认值(可选)):返回值类型{
//方法体 TODO: 需要执行的内容
return 返回值
}

这里的定义方式和Java定义方法基本类似,但是也有不同点:
1、方法需要用 function 关键字;
2、参数可以添加默认值;
3、返回值类型写在方法参数括号后面,属于先命名、再参数、再返回,更符合我们的主观逻辑。
4、这里还用到了一个新的字符串拼接方式 :反引号内用${}的方式直接将参数拼接到字符串内,类似于Kotlin内字符串拼接,笔者认为这种方式比用加号的方式拼接的更加方便,各位朋友后面开发过程中可尝试一下。
5、没有返回值的用vod。

箭头函数(箭头方法)


/**
 * 箭头函数
 */

let hoTest = (name: string) => {
  console.log(`箭头函数:${name}`)
}

/**
 * 箭头函数调用
 */
hoTest('箭头')

这里使用了(参数)=>{}的方式创建了一个函数,并且将这个函数赋值给了一个变量,这样在之后的代码操作中方便调用。

枚举


/**
 * 枚举
 */
enum Msg {
  HI = 'hi',
  HELLO = 'hello'
}

接口和类

/**
 * 接口
 */
interface A {
  a(msg: Msg): void
}

/**
 * 类
 */
class B implements A {
  a(msg: Msg) {
    console.log(`Msg: ${msg}`)
  }
}
//多态 初始化
let a: A = new B()
//调用方法
a.a(Msg.HI)

//相对复杂的类
class People {
  private age: number
  private name: string

  //构造函数
  constructor(age: number, name: string) {
    this.age = age
    this.name = name
  }

  public work(name: string): void {
    //如果这里不加this 会调用文件里面的 name 和 age 并不是调用类内的数据
    console.log(`姓名:${this.name} , 年龄:${this.age} , 工作:${name}`)
  }
}

//继承父类
class Teacher extends People {
  constructor(age: number) {
    //调用父类构造方法
    super(age, '教师')
  }
}

let t: People = new Teacher(35)
t.work('教书育人')

这里的接口和类与Java代码类似,ArkTS的接口声明使用 interface 关键字,接口的实现使用 implements 关键字,类的声明使用 class 关键字,类的继承使用 extends 关键字。这些都和Java属于一模一样的,而且一个类可实现多个接口,但是只能继承一个类,同时也支持多态等,毕竟都是面向对象的编程语言。所以面向对象编程的三要素都是具备的。以上所有代码执行结果如下:
在这里插入图片描述

总结

笔者认为到这里,就可以写一些基础的ArkTS的小项目了,对了以后关于公众号的鸿蒙代码都会上传码云,项目地址为:鸿蒙demo地址

最后欢迎大家关注我的 VX 公众号: 韩小怂请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/627031.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

二叉树的前序遍历(leetcode)

144. 二叉树的前序遍历 - 力扣&#xff08;LeetCode&#xff09; 给你二叉树的根节点 root &#xff0c;返回它节点值的 前序 遍历。 这道题的启发性真的很强 &#xff0c;这里必须传入i的指针进去&#xff0c;下一次栈帧i&#xff0c;但回到了上一层i又变回到了原来的i&#…

办公园区建筑科技风效果(html+threejs)

办公楼科技风(Htmlthreejs) 初始化三维场景 function init() {container document.getElementById(container);camera new THREE.PerspectiveCamera(65, window.innerWidth / window.innerHeight, 0.1, 150000000);camera.position.set(550, 600, 690);scene new THREE.Sce…

短视频的拍摄方式有哪些:四川京之华锦信息技术公司

创意与技术并存的艺术之旅 在数字媒体高速发展的今天&#xff0c;短视频已经成为人们获取信息、表达情感、展示才艺的重要窗口。从社交平台到新闻资讯&#xff0c;再到教育娱乐&#xff0c;短视频无处不在&#xff0c;其独特的魅力和广泛的传播力让人们对它的拍摄方式产生了浓…

应急响应-Windows-挖矿病毒

随着虚拟货币市场的繁荣&#xff0c;挖矿病毒已成为网络安全领域一大挑战。该类病毒利用计算机资源进行加密货币的挖掘&#xff0c;给个人用户和企业网络带来了严重的安全风险。本文将针对挖矿病毒的应急响应和防范措施进行分析和总结。 一.判断挖矿病毒 服务器突然发现CPU资…

CTF例题:[SWPU2019]Web1(无列名注入)

网址&#xff1a;BUUCTF在线评测 搜索web1 启动靶机 点击链接进入题目 进入题目后发现有登录和注册接口&#xff0c;直接注册登录。 首先通过1进行测试&#xff0c;查看是否有注入点 出现报错&#xff0c;说明可能存在注入点 然后继续测试发现该服务器过滤了&#xff1a; or、…

Android 逆向

一、apk 查壳工具 ApkScan-PKID 相关APK文件可以在 豌豆荚 官网下载 ApkScan-PKID查壳工具 下载 - 简书 (jianshu.com) 二、脱壳工具&#xff1a;frida 1、Android端配置 frida-server&#xff1a; 该步骤需要使用到 adb&#xff0c;操作Android文件 Releases frida/frid…

前端已死? Bootstrap--CSS组件

目录 Bootstrap 下载 Bootstrap--全局CSS样式 栅格系统 栅格参数 正常显示 实例 代码演示: 排版 代码演示 表格 代码演示 表单 代码演示 等等...(文档很清晰了) Bootstrap--组件 结合演示:(页面) Bootstrap Bootstrap v3 中文文档 Bootstrap 是最受欢迎的 HT…

ubuntu18.04 运行ur5机械臂

视觉抓取初探索1-UR5机械臂抓取仿真 - 知乎 抓取不止&#xff01;Ubuntu 18.04下UR5机械臂搭建Gazebo环境&#xff5c;开源分享_哔哩哔哩_bilibili 源码地址&#xff1a;GitHub - Geo-JTao/UR5_gripper_camera_gazebo: 在Ubantu18.04中搭建Gazebo仿真环境 遇到问题&#xff1…

Volatile解决内存不可见性

一、多线程下变量的不可见性 在多线程并发执行下&#xff0c;多个线程修改共享的成员变量&#xff0c;会出现一个线程修改了共享变量的值后&#xff0c;另一个线程不能直接 看到该线程修改后的变量的最新值。 我们首先让子线程去更改变量flag的值为true,主线程通过判断后执行。…

运维别卷系列 - 云原生监控平台 之 04.prometheus 查询语句 promql 实践

文章目录 [toc]PromQL 简介什么是时间序列 PromQL 数据类型即时向量 Instant vector范围向量 Range vectorTime DurationsOffset modifier modifier 浮点值 Scalar字符串 String PromQL FUNCTIONSfloor()irate()rate()round()sort()sort_desc() PromQL 运算符算术运算符比较运算…

C语言中的循环队列与栈、队列之间的转换实现

引言 在数据结构的学习中&#xff0c;栈&#xff08;Stack&#xff09;和队列&#xff08;Queue&#xff09;是两个非常重要的概念。它们分别遵循着后进先出&#xff08;LIFO&#xff09;和先进先出&#xff08;FIFO&#xff09;的原则。在某些情况下&#xff0c;我们可能需要…

用友NC printBill 任意文件读取/删除漏洞复现(XVE-2024-10609)

0x01 产品简介 用友NC是一款企业级ERP软件。作为一种信息化管理工具,用友NC提供了一系列业务管理模块,包括财务会计、采购管理、销售管理、物料管理、生产计划和人力资源管理等,帮助企业实现数字化转型和高效管理。 0x02 漏洞概述 用友NC printBill 接口处存在任意文件读…

PDF编辑阅读器PDF Expert for Mac v3.10.1中文激活版

PDF Expert for Mac是一款易于使用的 PDF 编辑器和注释器&#xff0c;专为 Mac 设备设计。它允许用户轻松查看、编辑、签名、注释和共享 PDF。该软件使用户能够向他们的 PDF 添加文本、图像、链接和形状&#xff0c;突出显示和标记文本&#xff0c;填写表格以及签署数字文档。它…

02-结构型设计模式(共7种)

1. Adapter(适配器模式) 适配器模式是一种结构型设计模式&#xff0c;它允许将一个类的接口转换成客户端所期望的另一个接口。这种模式通常用于解决接口不兼容的情况&#xff0c;使得原本由于接口不匹配而无法工作的类可以一起工作。 在 C 中&#xff0c;适配器模式可以通过类适…

数学建模——线性回归模型

目录 1.线性回归模型的具体步骤和要点&#xff1a; 1.收集数据&#xff1a; 2.探索性数据分析&#xff1a; 3.选择模型&#xff1a; 4.拟合模型&#xff1a; 5.评估模型&#xff1a; 1.R平方&#xff08;R-squared&#xff09;&#xff1a; 2.调整R平方&#xff08;Ad…

Windows11系统配置WSL2网络使它支持LAN访问

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、WSL2安装二、使用步骤1.NAT2.镜像 三、写在最后总结 前言 WSL2的出现感觉真的是一个惊喜&#xff0c;又想玩Linux&#xff0c;又怕日用搞不了的最佳替代方…

TreeMap详解:Java 有序 Map 原理与实现

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。运营社区&#xff1a;C站/掘金/腾讯云&#xff1b;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一…

[初学者必看]JavaScript 简单实际案例练习,锻炼代码逻辑思维

文章目录 创意小项目合集&#xff1a;从简易图片轮播到购物车1. 图片轮播器2. 动态列表3. 模态框&#xff08;Modal&#xff09;4. 简单的表单验证5. 简易待办事项列表&#xff08;Todo List&#xff09;6. 简易图片画廊7. 简易时钟8. 简易搜索框高亮9. 简易颜色选择器10. 简易…

【知识碎片】2024_05_14

本篇记录了两道关于位运算的选择题&#xff0c;和一道有点思维的代码题。 C语言碎片知识 求函数返回值&#xff0c;传入 -1 &#xff0c;则在64位机器上函数返回&#xff08; &#xff09; int func(int x) {int count 0;while (x){count;x x&(x - 1);//与运算} return c…

java项目之实验室管理系统(springboot+vue+mysql)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的实验室管理系统。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 实验室管理系统的主要使用…