在if语句中使用return时会做什么?

时间:2011-09-12 10:51:54

标签: java if-statement return

if语句中的返回在以下代码中做了什么?

public void startElement(String namespaceURI, String localName,String qName, 
                                         Attributes atts) throws SAXException
{
    depth++;
    if (localName.equals("channel"))
    {
        currentstate = 0;
        return;
    }
    if (localName.equals("image"))
    {
        // record our feed data - you temporarily stored it in the item :)
        _feed.setTitle(_item.getTitle());
        _feed.setPubDate(_item.getPubDate());
    }
    if (localName.equals("item"))
    {
        // create a new item
        _item = new RSSItem();
        return;
    }
    if (localName.equals("title"))
    {
        currentstate = RSS_TITLE;
        return;
    }
    if (localName.equals("description"))
    {
        currentstate = RSS_DESCRIPTION;
        return;
    }
    if (localName.equals("link"))
    {
        currentstate = RSS_LINK;
        return;
    }
    if (localName.equals("category"))
    {
        currentstate = RSS_CATEGORY;
        return;
    }
    if (localName.equals("pubDate"))
    {
        currentstate = RSS_PUBDATE;
        return;
    }
    // if you don't explicitly handle the element, make sure you don't wind 
           // up erroneously storing a newline or other bogus data into one of our 
           // existing elements
    currentstate = 0;
}

它是否将我们从if语句中删除并继续执行下一个语句,或者它将我们带出startElement方法?

8 个答案:

答案 0 :(得分:16)

上述代码中的返回将使您退出方法。

答案 1 :(得分:10)

它完成了方法,因此下面的代码不会被执行。

答案 2 :(得分:9)

  

是否需要我们退出if语句并继续下一步   声明或它将我们带出方法startElement?

它会让你走出这个方法.. return语句终止函数的执行

答案 3 :(得分:3)

return总是从调用方法中取出控制权。

答案 4 :(得分:3)

是。这里的返回将控制方法。

答案 5 :(得分:2)

它会返回你在方法头中声明的内容(这里是void = nothing =它只会结束方法)

答案 6 :(得分:0)

此处的返回可能用于“改进”方法的性能,以便在执行所需方案后不执行其他比较。

但是,在方法中使用多个返回点并不是一个好习惯。

正如我的评论中所述,我会尝试一种不同的方法来实现相关代码的流程。

答案 7 :(得分:0)

返回将结束方法的流程,并且在功能上与使用较短的else if链类似

/* if (localName.equals("channel")) {
    currentstate = 0; // This can be removed because it's the default below.
} else */ if (localName.equals("image")) {
    // record our feed data - you temporarily stored it in the item :)
    _feed.setTitle(_item.getTitle());
    _feed.setPubDate(_item.getPubDate());
} else if (localName.equals("item")) {
    // create a new item
    _item = new RSSItem();
} else if (localName.equals("title")) {
    currentstate = RSS_TITLE;
} else if (localName.equals("description")) {
    currentstate = RSS_DESCRIPTION;
} else if (localName.equals("link")) {
    currentstate = RSS_LINK;
} else  if (localName.equals("category")) {
    currentstate = RSS_CATEGORY;
} else if (localName.equals("pubDate")) {
    currentstate = RSS_PUBDATE;
} else {
    currentstate = 0;
}