此文章內(nèi)容兼容API12,使用harmony next應(yīng)用開發(fā)
基本數(shù)據(jù)類型
Number
整數(shù)
- 十進(jìn)制
- 十六進(jìn)制, 0x 開頭
- 八進(jìn)制,0o開頭
- 二進(jìn)制,0b開頭
浮點(diǎn)數(shù)
- 指數(shù)用e開頭
let n4 = 1e2; // 1 × (10 ^ 2) = 100
Boolean
String:支持模板替換,實(shí)現(xiàn)格式化
let s = 'test'
let result = `printf ${s}`
Void
Object:基類型
Array
Enum
:聯(lián)合類型
let s:boolean | number | string | Cat | Dog= true
if( s instanceof boolean) { ... }
if( typeof s == 'boolean' )
ESObject:ESObject主要用于在ArkTS和TS/JS跨語言調(diào)用的場景中作為類型標(biāo)注
A.testSDK({'param1':'11','param2':2})
//har包中
static testSDK(param: ESObject): void;
運(yùn)算符
賦值運(yùn)算符
+=、-=、*=、/=、%=、<<=、>>=、>>>=、&=、|=、^=
比較運(yùn)算符
=== !== == != > >= < <=
1,=== 和 == 的區(qū)別
=== 是嚴(yán)格判斷相等,不僅判斷數(shù)值,還判斷操作數(shù)類型
算術(shù)運(yùn)算符
-、+、--、++
位運(yùn)算符
| 運(yùn)算符 | 說明 |
|---|---|
| a & b | 按位與:如果兩個操作數(shù)的對應(yīng)位都為1,則將這個位設(shè)置為1,否則設(shè)置為0。 |
| a | b | 按位或:如果兩個操作數(shù)的相應(yīng)位中至少有一個為1,則將這個位設(shè)置為1,否則設(shè)置為0 |
| a ^ b | 按位異或:如果兩個操作數(shù)的對應(yīng)位不同,則將這個位設(shè)置為1,否則設(shè)置為0。 |
| ~ a | 按位非:反轉(zhuǎn)操作數(shù)的位。 |
| a << b | 左移:將a的二進(jìn)制表示向左移b位。 |
| a >> b | 算術(shù)右移:將a的二進(jìn)制表示向右移b位,帶符號擴(kuò)展。 |
| a >>> b | 邏輯右移:將a的二進(jìn)制表示向右移b位,左邊補(bǔ)0。 |
邏輯運(yùn)算符
&& || ! 與或非
1,空值合并運(yùn)算符(??),當(dāng)左側(cè)操作數(shù)為 null 或 undefined 時,返回右側(cè)操作數(shù),否則返回左側(cè)
this.showTip = null
let result = this.showTip??'這是一片荒原'
2,邏輯空賦值運(yùn)算符(x ??= y), 當(dāng)x為 null 或 undefined 時,將y 賦值給 x
this.showTip = null
x ?? = '這是一片荒原'
3,可選鏈運(yùn)算符(?.)
當(dāng)且僅當(dāng)左側(cè)操作數(shù)不為 null 或 undefined 時,才繼續(xù)訪問右側(cè)數(shù)據(jù)
其他類型
容器類
1,Array
Array
ArrayList
List : 單向鏈表,增刪較ArrayList更有效率,通用ArrayList
LinkedList : 雙向鏈表
Queue : 隊(duì)列
Stack : 棧
(1)數(shù)組表達(dá)形式
ArkTS提供了兩種數(shù)組類型的表示方式:T[]和Array<T>。為了代碼的可讀性,建議所有數(shù)組類型均用T[]來表示。
let y: Array<string> = ['a', 'b', 'c'];//不推薦
let y: string[] = ['a', 'b', 'c'];//推薦
(2)Array 和 ArrayList 區(qū)別
Array 長度固定,適用于已知元素?cái)?shù)量且不會改變的情況。它在內(nèi)存中分配一塊連續(xù)的空間來存儲元素,對于直接訪問元素而言速度更快
ArrayList 長度動態(tài)調(diào)整
(3)常用API

說一說鴻蒙 數(shù)組常用的API有那些?或者說ArkTS中Array 對象常用 的API?_鴻蒙.includes-CSDN博客
2,Map
HashMap : 存儲鍵值對集合,key唯一,無序
TreeMap : 存儲鍵值對集合,key唯一,有序,效率低
3,Set
HashSet : 存儲 值 的集合,值唯一,支持null,無序
TreeSet : 存儲 值 的集合,值唯一,不支持null,有序,效率低
4,ArrayBuffer
ArrayBuffer,用于存儲和操作 原始二進(jìn)制數(shù)據(jù)的對象,類比于安卓中的byte[]。固定長度。
ArrayBuffer作為一種可轉(zhuǎn)移對象,在線程間傳遞時不需要進(jìn)行拷貝,從而避免了同一份數(shù)據(jù)在主線程和子線程中分別占用內(nèi)存的問題。這種特性在處理大數(shù)據(jù)量時尤為重要,因?yàn)樗苡行p少內(nèi)存占用,提高應(yīng)用性能。
常見用途:
- 二進(jìn)制數(shù)據(jù)傳輸
- 圖像和音頻處理。 圖像和音頻數(shù)據(jù),常以二進(jìn)制格式存儲
- 數(shù)據(jù)加解密
5,TypedArray
TypedArray是多種類型的統(tǒng)稱,底層基于ArrayBuffer實(shí)現(xiàn),提供了對ArrayBuffer中二進(jìn)制數(shù)據(jù)的訪問和操作能力。
目前支持包括Int8Array、Uint8Array、Int16Array、Uint16Array、Int32Array、Uint32Array、Uint8ClampedArray以及Float32Array。
ArrayBuffer 是容器,TypedArray是訪問和操作方法,TypedArray在創(chuàng)建時,需要指定一個ArrayBuffer作為它的數(shù)據(jù)緩沖區(qū)。
互相轉(zhuǎn)換:
//ArrayBuffer 轉(zhuǎn) TypedArray
let typedArray = new Uint8Array(arrayBuffer)
//TypedArray 轉(zhuǎn) ArrayBuffer
let arrayBuffer = typedArray.buffer
6,BitVector
底層基于數(shù)組實(shí)現(xiàn)。BitVector中存儲元素為bit值,能存儲和處理bit級別的操作。
7,ConcatArray
8,Record
Record<Keys, Type> 構(gòu)造了一個對象類型,存儲鍵值對,也就是強(qiáng)類型的Map
Record 和 Map / HashMap區(qū)別
- Record 的key 只可以是 string | number ,Map 的 key 可以任意類型 Any
- map 比 Record 更靈活,適用于頻繁增刪改的場景
- Record 查詢速度很快,適用于頻繁讀取和展示數(shù)據(jù)的場景
JSON
json 轉(zhuǎn)string
JSON.stringify(obj)
string轉(zhuǎn)json
JSON.parse(str)
undefined null
null 指 不存在任何對象,“什么都沒有”;undefined 指尚未分配變量,或尚未生命變量,“尚未分配”
檢測是否是空值,即 undefined 或 null
if(myObj)
檢測是否為undefined
if(typeof undefined == 'undefined ')
1,空值合并運(yùn)算符(??),可以處理 null 或 undefined 情況
空值合并運(yùn)算符(??),當(dāng)左側(cè)操作數(shù)為 null 或 undefined 時,返回右側(cè)操作數(shù),否則返回左側(cè)
let result = this.showTip??'這是一片荒原'
//展示效果是:
if(this.showTip){
result = this.showTip
}else {
result = '這是一片荒原'
}
BigNumber
當(dāng)涉及到復(fù)雜計(jì)算,高精度數(shù)據(jù),和海量數(shù)據(jù)處理時,推薦使用BigNumber
bignumber.js 是一個JavaScript庫,用于任意精度的十進(jìn)制和非十進(jìn)制算術(shù)運(yùn)算。
- 支持整數(shù)與小數(shù)
- 簡單但功能全面的API
- 比Java的BigDecimal在JavaScript中的實(shí)現(xiàn)更快、更小巧、可能更易用
- 復(fù)制了JavaScript Number類型的toExponential、toFixed、toPrecision和toString方法
- 包含toFraction和正確舍入的squareRoot方法
- 支持加密安全的偽隨機(jī)數(shù)生成
- 無依賴項(xiàng)
- 壓縮并gzip后大小僅為8 KB
- 廣泛的平臺兼容性:僅使用JavaScript 1.5(ECMAScript 3)特性
- 完善的文檔和測試集
如果需要更小、更簡單的庫,請查看 big.js。 它的大小不到一半,但只處理十進(jìn)制數(shù)字,并且只有大約一半的方法。 它還比這個庫擁有更少的配置選項(xiàng),并不支持NaN或Infinity。
另外也可以看看 decimal.js,該庫添加了對非整數(shù)冪的支持,并根據(jù)指定的位數(shù)進(jìn)行所有操作。