字符串类型与字节中的字符串

时间:2010-10-01 12:17:22

标签: abap

abap中String类型的缺点是什么?何时使用,何时不使用?

一个例子:我有一个文本字段,应该保存0到12个字符的值,最好使用字符串或字符(12)?

谢谢!

5 个答案:

答案 0 :(得分:7)

字符串存储为动态字符数组,而char是静态分配的。

字符串的一些缺点包括:

  • 开销 - 因为它们是动态的,除了实际的字符串外,还必须存储长度。
  • 子字符串和偏移量运算符不适用于字符串。
  • 字符串无法转换为可翻译的文本元素。

因此,为了回答您的问题,字符串应仅用于具有各种长度的相当长的值,其中额外开销相对于静态char(x)变量的潜在浪费空间可忽略不计。

答案 1 :(得分:2)

我认为CHAR是最好的,因为你100%确定该字段只能容纳0-12个字符。

答案 2 :(得分:1)

string是可变长度的数据类型,而在char中你必须定义长度.. 对于类型C(文本字段(字母数字字符))和字符串X或十六进制字符串具有初始值(X'0 ... 0')。 避免使用初始值,并使用实际长度C类型

答案 3 :(得分:0)

字符串变量: String是一种可变长度数据类型,用于存储任何长度的数据。使用可变长度字段是因为它们节省了空间。 字符串,可以存储任意数量的字符。 String将在运行时分配内存,也称为动态内存分配,将根据字符串的大小分配内存。无法使用参数声明字符串,因为分配的内存是动态的。

但是在您的情况下,您已经知道字段的最大长度(0到12个字符),因此CHAR type最适合您的情况。 STRING类型通常用于可变长度数据或长值。

Read more

答案 4 :(得分:0)

字符串很好:

  • 文字长度可变。
  • 空格是字符串的一部分(CHAR字段中的尾随空格丢失)
  • 你经常传递它们(当STRING变量元数据小于字段大小时)
  • 您需要经常获得STRING长度。它比CHAR字段更优化。

CHAR字段很好:

  • 如果它们很小,它们很快(在unicode系统上少于32个字符)
  • 使用(')引号而不是(`)的CHAR字段文字可以制作成可翻译的文本。

要记住的事情:

  • 所有变量都有元数据,但字符串也有一些指向字符串数据的内部指针,这可能会将最多64个字节添加到内存消耗中。要记住的事情。
  • 将文字文本分配给变量时,请尝试将文字类型与变量类型相匹配。使用'test'表示CHAR,test表示STRING。这通常会稍快一些。