java - 如何检查变量是否已初始化

标签 java

首先,我是 Java 的新手,如果这个问题非常简单,我很抱歉。

问题是:我有一个 String[] s,它是通过拆分一个字符串而制成的,其中每个项目都是一个数字。我想将 s 的项目转换为 int[] n

s[0] 包含 n 将包含的项数,有效地 s.length-1。我正在尝试使用 foreach 循环来执行此操作:

int[] n;
for(String num: s){
    //if(n is not initialized){
        n = new int[(int) num];
        continue;
    }
    n[n.length] = (int) num;
}

现在,我意识到我可以使用这样的东西:

int[] n = new int[(int) s[0]];
for(int i=1; i < s.length; i++){
    n[i-1] = (int) s[i];
}

但我确信我将来会遇到“如果 n 未初始化就初始化它”的问题。

最佳答案

您不能将 String 转换为 int。 Java 是强类型的,并且没有您在脚本语言中可能会发现的隐式类型转换。

要将 String 转换为 int,请使用显式转换,例如 Integer.parseInt(String)

所有成员变量和数组元素都使用默认值初始化。对于 int 类型,值为 0。对于引用类型(Object 的任何子类型),默认值为 null。局部变量没有默认值,但编译器会分析代码以确保在读取变量之前分配了一个值。否则,代码将无法编译。

我想你想要的是这样的:

int[] n = new int[Integer.parseInt(s[0]);
for (int idx = 0; idx < n; ++idx)
  n[idx] = Integer.parseInt(s[idx + 1]);

关于java - 如何检查变量是否已初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2623125/

相关文章:

java - sun.awt.image.ByteInterleavedRaster.setPixels

java - 禁用 JButtons 从键盘读取事件

java - 如何在Android中的多行EditText中设置文本或将文本添加到特定行?

java - 如何在 Kotlin 中使用游标加载器

java - 用Java将Textfield中的首字母大写

java - 即使表数据退出,Hibernate Session 也会返回 null

java - 从 Android 应用到 GoDaddy 服务器的 HTTP 请求间歇性超时

java - 检查 Thymeleaf 模板中的空属性

java - 无法启动 UI Automator 查看器

Java多变长参数