欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 名人名企 > ArkTS中string和String/number和Number类型大小写的区别

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

2025/4/20 19:07:05 来源:https://blog.csdn.net/beta___/article/details/144546564  浏览:    关键词: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,没有正确解析

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词