2014-11-03 110 views
0

我是Java新手,需要在方法返回null和引用变量时找出过程。当方法返回null时会发生什么

下面是该方法的代码:

public Lot getLot(int lotNumber) 

{ 

    if((lotNumber >= 1) && (lotNumber < nextLotNumber)) { 

    // The number seems to be reasonable. 

     Lot selectedLot = lots.get(lotNumber - 1); 

     // Include a confidence check to be sure we have the 

     // right lot. 

     if(selectedLot.getNumber() != lotNumber) { 

      System.out.println("Internal error: Lot number " + 

           selectedLot.getNumber() + 

           " was returned instead of " + 

           lotNumber); 

      // Don't return an invalid lot. 

      selectedLot = null; 

      } 
      return selectedLot; 
     } 

    else { 

    System.out.println("Lot number: " + lotNumber + 

          " does not exist."); 

     return null; 
     } 
    } 

当方法返回null和参考变量,而具有类数据类型会发生什么?

请用简单的语言解释。

+0

如果您不小心,最终可能会得到NPE ..:P。没什么特别的事返回'null'就像返回对其他实例的引用。 – TheLostMind 2014-11-03 10:32:33

回答

5

null对于Java中的任何Object都是有效的值。由于Lot也是Java的对象。 null有效。

如果你不小心,你可能最终与NullPointerException

如:

Lot lot=someInstance.getLot(2); // say lot is null 

然后

String something=lot.getThis(); // here is null.getThis() 

您将在这里结束了NullPointerException

您需要小心处理这些情况,以避免NullPointerException

如:

Lot lot=someInstance.getLot(2); 
if(lot!=null){ 
String something=lot.getThis(); 
} 
0

由于null是一个值,你的程序将编译好的。

但是,根据您使用null变量的情况,您在运行应用程序时可能会以NullPointerException结束。

1

Null在java的意思是说,你的实例(变量)不包含任何对象。你可以使用它,但是你不能在该对象上调用任何方法,因为如果你这样做了,你会得到一个NullPointerException

当从方法返回null时,通常意味着该方法无法创建有意义的结果。例如,从数据库读取数据的方法无法找到指定的对象,或者在方法运行期间发生了一些错误。

如果一个方法可以返回null,那么你应该在进一步处理之前检查结果。请参阅提高员工薪水的示例:

Employee e = database.getEmployeeById(1); 
if (e==null) //this is the check 
{ 
    System.out.println('There is no such employee'); 
} 
else 
{ 
    e.setSallary(e.getSallary() * 1.1); 
} 
相关问题