java結(jié)束當(dāng)前循環(huán)常用代碼
java結(jié)束當(dāng)前循環(huán)常用代碼
在 Java中,當(dāng)我們要結(jié)束一個(gè)循環(huán)時(shí),通常會使用循環(huán)變量的實(shí)現(xiàn)類來結(jié)束,但在實(shí)際開發(fā)中,我們經(jīng)常會遇到某個(gè)循環(huán)結(jié)束后需要進(jìn)行其他的操作的情況。此時(shí),就需要使用循環(huán)變量來結(jié)束當(dāng)前循環(huán)。
1、創(chuàng)建一個(gè)新的類,并把它添加到主程序中
首先,我們需要?jiǎng)?chuàng)建一個(gè)新的類,這個(gè)類可以是一個(gè)子程序,也可以是一個(gè)方法,它應(yīng)該有自己的變量和參數(shù)。在 Java中,創(chuàng)建一個(gè)新的類一般都是使用 Map來實(shí)現(xiàn)的,如圖1所示。但有些時(shí)候我們也需要自己創(chuàng)建一個(gè)類,如圖2所示。創(chuàng)建類的方法如下: 通過以上的代碼我們可以看到,它會先創(chuàng)建一個(gè)名為“cursor ()”的變量,然后將其添加到主程序中。在主程序中創(chuàng)建一個(gè)名為“cursor ()”的對象,然后調(diào)用方法“getCursor ()”獲取當(dāng)前循環(huán)變量所對應(yīng)的引用。我們可以看到它的返回值為0,說明這個(gè)對象已經(jīng)被回收了。
2、將當(dāng)前的循環(huán)變量設(shè)置為 cursor ()
我們可以通過下面的代碼來完成這個(gè)操作: 在上面的代碼中,我們使用了一個(gè)類,并將其添加到主程序中。在上面的代碼中,我們首先使用 cursor ()函數(shù)來獲取當(dāng)前循環(huán)變量所對應(yīng)的引用,如果沒有引用,就返回 null;如果有引用,就把它賦給了新類實(shí)例;然后將新類的實(shí)例與老的循環(huán)變量進(jìn)行比較。如果兩者相等,就用 return語句來終止當(dāng)前的循環(huán);如果兩者不相等,就在老的循環(huán)變量上賦值給新類實(shí)例;然后執(zhí)行新類實(shí)例所對應(yīng)的對象。這樣,就完成了結(jié)束當(dāng)前循環(huán)所需做的操作。
3、在主程序中創(chuàng)建一個(gè)對象作為新類的實(shí)例
當(dāng)我們要結(jié)束當(dāng)前循環(huán)時(shí),可以使用循環(huán)變量的實(shí)現(xiàn)類來結(jié)束,但如果想要在主程序中創(chuàng)建一個(gè)新的對象,同樣可以使用循環(huán)變量來結(jié)束。 當(dāng)我們創(chuàng)建一個(gè)新的對象時(shí),我們需要將這個(gè)對象賦值給當(dāng)前的循環(huán)變量。我們可以使用 setValue ()方法來獲取當(dāng)前對象的引用,如果這個(gè)引用是指向當(dāng)前對象的,則返回 null;否則返回 null。在這個(gè)例子中,我們使用一個(gè)新的類來結(jié)束當(dāng)前循環(huán),而不是直接使用 cursor ()方法結(jié)束當(dāng)前循環(huán)。 在 Java中,當(dāng)我們需要結(jié)束一個(gè)循環(huán)時(shí),通常會使用 cursor ()方法來結(jié)束。
4、用新類替換原有循環(huán)變量
用新類替換原有循環(huán)變量,其實(shí)是把原循環(huán)變量的作用域擴(kuò)大到了新類的作用域,新類的實(shí)例不會影響原循環(huán)變量的值,而老的循環(huán)變量會被回收。不過,這種情況也不是絕對的,有些情況下,原來的循環(huán)變量仍然可以用來結(jié)束當(dāng)前循環(huán)。 比如我們需要結(jié)束一個(gè)從0到num1的循環(huán),這個(gè)時(shí)候可以使用類似這樣的語句: 這樣雖然也能完成這個(gè)操作,但是沒有利用循環(huán)變量的作用域擴(kuò)大到新類的作用域,所以性能上會比原來要低。 因此,在實(shí)際開發(fā)中,我們可以根據(jù)需要來選擇是使用循環(huán)變量結(jié)束當(dāng)前循環(huán)還是使用新類結(jié)束當(dāng)前循環(huán)。不過要注意一點(diǎn)的是,我們不能只選擇其中一種方式結(jié)束當(dāng)前循環(huán),否則就會出現(xiàn)報(bào)錯(cuò)。
5、執(zhí)行新創(chuàng)建的對象并釋放老的循環(huán)變量
3、在主程序中創(chuàng)建一個(gè)對象,并用它替換原有循環(huán)變量,然后使用 getCursor ()方法來獲取當(dāng)前對象所對應(yīng)的引用,如果沒有引用,就返回 null; 7、當(dāng)主程序結(jié)束時(shí),只需要將 cursor ()方法從主程序區(qū)塊中刪除即可。 8、當(dāng)要釋放循環(huán)變量所對應(yīng)的引用時(shí),可以使用 getDraw ()方法來獲取當(dāng)前對象所對應(yīng)的引用。
6、使用 getCursor ()方法來獲取當(dāng)前循環(huán)變量所對應(yīng)的引用,如果沒有引用,就返回 null
7、將新添加的對象與原始的循環(huán)變量進(jìn)行比較,如果相等,就釋放老的循環(huán)變量所對應(yīng)的引用,如果不相等,就返回 null 8、釋放循環(huán)變量所對應(yīng)的引用,并將其放入棧中 9、執(zhí)行當(dāng)前對象 10、將對象賦值給一個(gè)新的對象,并把它從循環(huán)變量中刪除。如果有循環(huán)變量沒有被釋放,就直接從棧中取出。注意:在運(yùn)行時(shí)要保證新添加的對象也被釋放了。 12、執(zhí)行當(dāng)前對象并將其賦值給一個(gè)新的對象 14、如果循環(huán)變量沒有被釋放,就使用 getClass ()方法來獲取當(dāng)前對象并將其賦值給一個(gè)新的對象。
7、刪除循環(huán)變量所對應(yīng)的引用,如果是空指針,就返回 null
在 Java中,類的實(shí)例對象有一個(gè)非常重要的參數(shù),就是 cursor ()。它的作用是結(jié)束當(dāng)前循環(huán),并使它失效。 但是,當(dāng)我們使用 cursor ()時(shí),如果我們在類的構(gòu)造函數(shù)中定義了一個(gè)循環(huán)變量,那么這個(gè)對象就會在這個(gè)構(gòu)造函數(shù)中被初始化,直到它被調(diào)用來結(jié)束當(dāng)前循環(huán)。也就是說,在類的構(gòu)造函數(shù)中定義了一個(gè) cursor ()方法來結(jié)束當(dāng)前循環(huán)的方法。 那么問題來了:在使用 cursor ()方法結(jié)束當(dāng)前循環(huán)時(shí),如果我們有一個(gè)類對象是非靜態(tài)的,那它會不會被初始化呢?這也是 Java中必須要考慮的問題。 解決方案:在類的構(gòu)造函數(shù)中定義一個(gè)非靜態(tài)的類對象來代替循環(huán)變量。
常用的java結(jié)束當(dāng)前循環(huán)代碼:
1. 使用break語句結(jié)束當(dāng)前循環(huán):
for?(int?i?=?0;?i?<?10;?i++)?{ if?(i?==?5)?{ break; } System.out.println(i); }
2. 使用continue語句跳過當(dāng)前循環(huán):
for?(int?i?=?0;?i?<?10;?i++)?{ if?(i?==?5)?{ continue; } System.out.println(i); }
3. 使用return語句結(jié)束當(dāng)前方法:
public?void?test()?{ for?(int?i?=?0;?i?<?10;?i++)?{ if?(i?==?5)?{ return; } System.out.println(i); } }
4. 使用標(biāo)簽(label)和break語句結(jié)束指定循環(huán):
outer: for?(int?i?=?0;?i?<?10;?i++)?{ for?(int?j?=?0;?j?<?10;?j++)?{ if?(i?==?5?&&?j?==?5)?{ break?outer; } System.out.println(i?+?","?+?j); } }
到此這篇關(guān)于java結(jié)束當(dāng)前循環(huán)常用代碼的文章就介紹到這了,更多相關(guān)java結(jié)束當(dāng)前循環(huán)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring Boot 3 集成 RabbitMQ 實(shí)踐指南(原理解析
本文介紹了SpringBoot 3集成RabbitMQ的實(shí)踐指南,涵蓋了RabbitMQ的核心原理、核心概念、高級特性、應(yīng)用場景、環(huán)境搭建、核心配置類、消息生產(chǎn)者、消息消費(fèi)者、接口控制器、監(jiān)控與運(yùn)維、最佳實(shí)踐以及常見問題與解決方案等內(nèi)容,感興趣的朋友一起看看吧2025-02-02已解決:No ''Access-Control-Allow-Origin''跨域問題
這篇文章主要介紹了已解決:No 'Access-Control-Allow-Origin' 跨域,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06MybatisPlusException:Failed?to?process,Error?SQL異常報(bào)錯(cuò)的解決辦法
這篇文章主要給大家介紹了關(guān)于MybatisPlusException:Failed?to?process,Error?SQL異常報(bào)錯(cuò)的解決辦法,文中通過實(shí)例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2023-03-03Java中使用BigDecimal進(jìn)行精確運(yùn)算
這篇文章主要介紹了Java中使用BigDecimal進(jìn)行精確運(yùn)算的方法,非常不錯(cuò),需要的朋友參考下2017-02-02springcloud整合gateway實(shí)現(xiàn)網(wǎng)關(guān)全局過濾器功能
本文主要介紹了springcloud整合gateway實(shí)現(xiàn)網(wǎng)關(guān)全局過濾器功能,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02JDK9為何要將String的底層實(shí)現(xiàn)由char[]改成了byte[]
String 類的源碼已經(jīng)由?char[]?優(yōu)化為了?byte[]?來存儲字符串內(nèi)容,為什么要這樣做呢?本文就詳細(xì)的介紹一下,感興趣的可以了解一下2022-03-03