在Java中设置数组值[重复]

Posted

技术标签:

【中文标题】在Java中设置数组值[重复]【英文标题】:Setting array values on construction in Java [duplicate] 【发布时间】:2018-09-26 05:44:06 【问题描述】:

有没有办法在构造时设置数组的默认值?我正在像这样初始化一个字符数组,

char[] chars = new char[value];

但是,每个元素的默认值是十进制 0,而不是十进制 48,它是 '0' 的 ASCII 字符。

我找到的最接近的东西是调用:

Arrays.fill(chars, '0');

用所需的十进制值48填充数组

但这是在数组已经创建完整的 0 值之后调用的,这可能需要更多时间?

【问题讨论】:

答:你为什么要这么做? B:你可以用你需要的任意数量的值和一个像这样的“默认”值来初始化它:char[] c = new char[] '0' ; 但是大小是硬编码的 如果它是一个已知大小的小数组,您也可以使用文字表示法:char[] chars = 48,48,... 它是方法的一部分,所以我不想硬编码数组的大小。 @XtremeBaumer 是的,我不小心被单引号包围了。现已修复。 不是真的,我知道如何声明一个数组。我想知道是否可以调整默认值。事实证明它不能。 【参考方案1】:

对于字符,默认值是空字符,所以你得到它的 ASCII 码'0'。

【讨论】:

对于字符(实际上是任何对象)默认值为空。他有一个原始字符数组,不能为空。默认值确实是 0 文档说明“对于 char 类型,默认值为空字符,即 '\u0000'。” null char 等于数字 0(因为 chars 实际上是字节)。不为空 - 值。我的意思不是 '0' 字符 - 这就是那个人想要的,但他得到的数字 0 是 '\u0000'。 @VeselinDavidov "因为字符实际上是字节" - 从JLS §4.2.1: "对于char,从'\u0000''\uffff' 包括在内,即是,从 0 到 65535" - 所以不,chars 不是 bytes。 ok ;) 不是字节【参考方案2】:

根据JLS §15.10.2. Run-Time Evaluation of Array Creation Expressions

...

然后,如果出现单个 DimExpr,则创建一个指定长度的一维数组,并将数组的每个组件初始化为其默认值(第 4.12.5 节)。

...

char 原语的默认值为\u0000

您可以按照JLS §10.6. Array Initializers 使用数组初始值设定项语法来避免数组元素的重新分配:

char[] chars =  'a', 'b', 'c' ;

但这只有在编译期间知道数组大小时才有效。

【讨论】:

它在哪里声明 char 原始默认值为零? 也许我的答案措辞不好。 char 的默认值是按docs.oracle.com/javase/specs/jls/se10/html/… 写为\u0000(即0x00,或只是0)的空字符【参考方案3】:

如果它是基元数组,则使用该基元类型的默认值进行初始化。对于 boolean,它是 false,对于数字类型和 char,它是 0(字节值)或 '\u0000',如果你需要 char。如果要设置默认值,则必须按照您找到的方式手动填充该数组。我认为您不会注意到任何性能下降。

【讨论】:

char 的默认值不是零而是空值。 '0' 是它的 ASCII 码。 不。 Character 的默认值为 null。但他使用的是“char”,它是一个原始的而不是一个对象,默认值为 0 检查documentation。 char 的默认值为 null。 对于 char 其空“字符”。不是 0 或 null。 好吧,我的解释不好。那时我们正在谈论不同的东西。我的意思是它是 0 作为字节值。它是 0,因为数字 0 而不是字符 '0'(因为 '\u0000' 实际上等于 0)。如果你创建一个 char a;并做 a==0 这将是真实的【参考方案4】:
char[] chars = new char[] 'a', 'b', 'c';

【讨论】:

以上是关于在Java中设置数组值[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在Jquery Datepicker中设置日期的初始值[重复]

如果值为零,如何在准备好的语句中设置 null [重复]

如何从下拉列表中设置默认值[重复]

AngularJS - 在 ng-repeat 中设置默认值 [重复]

在 java 和 csv 文件中设置 UTF-8 [重复]

无法在 Vue.js 中设置未定义的属性“产品”[重复]