ArkTS中string和String/number和Number类型大小写的区别

ArkTS和TypeScript类似,stringStringnumberNumber 之间有一些重要的区别:

基本类型与对象类型

  1. 基本类型 (string, number)

    • stringnumber 是基本数据类型,用于表示原始值。
    • 例如:
      let str: string = "Hello";
      let num: number = 42;
      
  2. 对象类型 (String, Number)

    • StringNumber 是构造函数,用于创建相应的对象。
    • 例如:
      let strObj: String = new String("Hello");
      let numObj: Number = new Number(42);
      

主要区别

  • 类型

    • stringnumber 是原始类型,直接表示值。
    • StringNumber 是对象类型,包含方法和属性。
  • 性能

    • 使用基本类型更高效,因为它们是原始值,不需要额外的内存开销。
    • 对象类型会创建一个包装对象,可能会影响性能。
  • 类型判断

    • 使用 typeof 进行类型判断时,stringnumber 返回 “string” 和 “number”,而 StringNumber 返回 “object”。
    • 例如:
      console.log(typeof str); // "string"
      console.log(typeof strObj); // "object"
      

可以看到虽然s1和s2打印时输出结果一致,但是其类型其实是不同的:
在这里插入图片描述
我们来阅读一下官方文档中的这一段话体会一下区别:

Number类型
ArkTS提供numberNumber类型,任何整数和浮点数都可以被赋给此类型的变量。
数字字面量包括整数字面量和十进制浮点数字面量。
整数字面量包括以下类别:
● 由数字序列组成的十进制整数。例如:0、117、-345
● 以0x(或0X)开头的十六进制整数,可以包含数字(0-9)和字母a-f或A-F。例如:0x1123、0x00111、-0xF1A7
● 以0o(或0O)开头的八进制整数,只能包含数字(0-7)。例如:0o777
● 以0b(或0B)开头的二进制整数,只能包含数字0和1。例如:0b11、0b0011、-0b11
浮点字面量包括以下:
● 十进制整数,可为有符号数(即,前缀为“+”或“-”);
● 小数点(“.”)
● 小数部分(由十进制数字字符串表示)
● 以“e”或“E”开头的指数部分,后跟有符号(即,前缀为“+”或“-”)或无符号整数。

上面所有出现的整数字面量均为小写的number类型,而Number类型一半只能由new Number()获得。
下面来看一个Number()的用法:(这里要注意和parseInt的区别)

let numStr1: string = '110'
let numStr2: string = "0x110"

// 不可被parseInt直接识别
let numStr3: string = "0o110"
let numStr4: string = '0b110'

// Number可以将字符串转为可用于计算的十进制数
console.log(Number(numStr1).toString()) // 110
console.log(Number(numStr2).toString()) // 272
console.log(Number(numStr3).toString()) // 72
console.log(Number(numStr4).toString()) // 6

// 小心parseInt的用法
console.log(parseInt(numStr1,10).toString()) // 110
console.log(parseInt(numStr2,16).toString()) // 272
console.log(parseInt(numStr3,8).toString()) // 0,没有正确解析
console.log(parseInt(numStr4,2).toString()) // 0,没有正确解析
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值