有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

安卓将声明与java中int数组的定义分开

如何将int数组的声明与定义分开?。抱歉问了一些基本问题。我基本上是c/c++背景

int [] res;

switch (something) 
{
  case <something>:
     res = somefunction () 
     break;
{

if ( res == null )  ==>> problem is here. // 'res' might not have been initialized.

我如何处理这个问题,最好的方法是什么


共 (3) 个答案

  1. # 1 楼答案

    所以,初始化

    int [] res = null;
    
  2. # 2 楼答案

    当数组变量(或就此而言,任何变量)是局部变量时,必须给它一个初始值,因为局部变量没有默认值

    int [] res = null;
    

    这样,即使您的case语句没有执行,它也会有一个值

  3. # 3 楼答案

    正如其他答案所提到的,你可以这样做

    int [] res = null;
    

    但我通常更喜欢确保switch处理所有情况:

    int [] res;                   // Leave it uninitialized
    
    // ...
    
    switch (something)            // Set `res` in every branch
    {
      case <something>:
         res = somefunction();
         break;
      // ...
      default:                    // Including the default
         res = null;
         break;
    }
    

    这样,如果您添加了一个新的条件,您必须有意识地决定对res应该做什么(因为如果您不做任何事情,编译器会提醒您)

    pre-init和“在所有路径中处理”方法都有使用案例