在Java中设置char数组的大小

Van*_*nel 2 java android array-initialize invariants

我正在开发一个Android应用程序.

我想将大小设置为这样的char数组:

public char[5] language;
Run Code Online (Sandbox Code Playgroud)

但它不起作用.我必须删除第五个才能使它工作.

我想限制为语言变量的五个字符.我怎样才能做到这一点?

谢谢.

Ste*_*n C 9

你不能这样做. 在Java中,数组的类型不包括它的大小.请参阅我之前的问题的答案.(忽略关于abstract那个问题中方法的部分......这不是真正的问题.)

数组的大小由创建它的表达式决定; 例如,下面创建一个包含5个字符的char数组,然后用另一个包含21个字符的数组替换它.

public char[] language = new char[5];
...
language = new char[21];
Run Code Online (Sandbox Code Playgroud)

请注意,创建是通过等于的RHS上的表达式完成的.数组的长度是其"值"的一部分,而不是它的"类型".


Col*_*ert 5

引用JLS:

数组的长度不是其类型的一部分.

要初始化数组,您应该:

public char[] language = new char[5];
Run Code Online (Sandbox Code Playgroud)

其他解决方案是

public char[] language = {0, 0, 0, 0, 0};
Run Code Online (Sandbox Code Playgroud)

要么

public char[] language;
language = new char[5];
Run Code Online (Sandbox Code Playgroud)

在Java中,数组声明不能包含数组的大小; 我们只知道变量将包含特定类型的数组.要初始化数组(并使用大小),您必须通过使用new或使用允许同时初始化和设置数组值的快捷方式对其进行初始化.

检查数组是否具有指定大小的最佳方法实际上是使用类似的方法自行检查数组的大小if(array.length == 5).


资源:

在同一主题上: