新聞中心
我寫的JAVA代碼 為什么執(zhí)行結(jié)果是這樣 不是由上往下執(zhí)行嗎?
自上而下是說的同一函數(shù)內(nèi)的順序和函數(shù)調(diào)用順序,不是指的文件里的行號(hào)。例如無論寫在第幾行,main函數(shù)都是要首先運(yùn)行的。
創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),化德企業(yè)網(wǎng)站建設(shè),化德品牌網(wǎng)站建設(shè),網(wǎng)站定制,化德網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,化德網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
請(qǐng)問這個(gè)java程序?yàn)槭裁床煌聢?zhí)行了,很簡(jiǎn)單共5行
你確定沒執(zhí)行嗎?你設(shè)置斷點(diǎn)看一下,應(yīng)該是執(zhí)行了
執(zhí)行num = cin.nextInt(); 這時(shí)你需要在終端輸入一個(gè)數(shù)字,然后回車換行。。
當(dāng)String str = cin.nextLine();時(shí),cin讀入的就是剛剛那個(gè)回車換行,顯示是空的
你可以System.out.println(str);看一下,應(yīng)該就換了一行
java 如何調(diào)用方法里超過10秒就終止該方法,不往下執(zhí)行,防止線程阻塞
這個(gè)問題不難解決,解決的辦法是:首先在調(diào)用方法 的前面設(shè)置開始執(zhí)行調(diào)用的時(shí)間是什么時(shí)候,然后在方法的調(diào)用結(jié)束處再設(shè)置調(diào)用方法結(jié)束時(shí)是什么時(shí)候,再用結(jié)束時(shí)的時(shí)間減去開始時(shí)的時(shí)間,如果這個(gè)時(shí)間差大于十秒則使用break結(jié)束程序。部分代碼如下(10秒等于10000毫秒):long startTime = System.currentTimeMillis();dwr.a();long endTime = System.currenTimeMillis();if(endTime - statreTime 100000){break;}
java代碼中,System.exit(1); 有什么作用?不是拋出異常之后就不會(huì)往下執(zhí)行了嗎?
System (Java 2 Platform SE 5.0)
exit
public static void exit(int status)終止當(dāng)前正在運(yùn)行的 Java 虛擬機(jī)。參數(shù)用作狀態(tài)碼;根據(jù)慣例,非零的狀態(tài)碼表示異常終止。
該方法調(diào)用 Runtime 類中的 exit 方法。該方法永遠(yuǎn)不會(huì)正常返回。
調(diào)用 System.exit(n) 實(shí)際上等效于調(diào)用:
Runtime.getRuntime().exit(n)
參數(shù):
status - 退出狀態(tài)。
拋出:
SecurityException - 如果安全管理器存在并且其 checkExit 方法不允許以指定狀態(tài)退出。
而且還有:
Runtime (Java 2 Platform SE 5.0)public void exit(int status)通過啟動(dòng)虛擬機(jī)的關(guān)閉序列,終止當(dāng)前正在運(yùn)行的 Java 虛擬機(jī)。此方法從不正常返回。可以將變量作為一個(gè)狀態(tài)碼;根據(jù)慣例,非零的狀態(tài)碼表示非正常終止。
虛擬機(jī)的關(guān)閉序列包含兩個(gè)階段。在第一個(gè)階段中,會(huì)以某種未指定的順序啟動(dòng)所有已注冊(cè)的關(guān)閉掛鉤(如果有的話),并且允許它們同時(shí)運(yùn)行直至結(jié)束。在第二個(gè)階段中,如果已啟用退出終結(jié),則運(yùn)行所有未調(diào)用的終結(jié)方法。一旦完成這個(gè)階段,虛擬機(jī)就會(huì)暫停。
如果在虛擬機(jī)已開始其關(guān)閉序列后才調(diào)用此方法,那么若正在運(yùn)行關(guān)閉掛鉤,則將無限期地阻斷此方法。如果已經(jīng)運(yùn)行完關(guān)閉掛鉤,并且已啟用退出終結(jié) (on-exit finalization),那么此方法將利用給定的狀態(tài)碼(如果狀態(tài)碼是非零值)暫停虛擬機(jī);否則將無限期地阻斷虛擬機(jī)。
System.exit 方法是調(diào)用此方法的一種傳統(tǒng)而便捷的方式。
參數(shù):
status - 終止?fàn)顟B(tài)。按照慣例,非零的狀態(tài)碼表明非正常終止。
拋出:
SecurityException - 如果安全管理器存在,并且其 checkExit 方法不允許存在指定的狀態(tài)
所以總結(jié)起來:System.exit(n)中的n可以是0、1、2、3等等不同的數(shù)值,但最終非零的狀態(tài)碼表示異常終止,只有是0的時(shí)候是正常退出。
下面是JDK中的代碼
public void exit(int status) {
SecurityManager security = System.getSecurityManager();
if (security != null) {
security.checkExit(status);
}
Shutdown.exit(status);
}
Shutdown中的靜態(tài)方法exit
static void exit(int status) {
boolean runMoreFinalizers = false;
synchronized (lock) {
if (status != 0) runFinalizersOnExit = false;
switch (state) {
case RUNNING: /* 0, Initiate shutdown */
state = HOOKS;
break;
case HOOKS: /* 1, Stall and halt */
break;
case FINALIZERS:
if (status != 0) {
/* Halt immediately on nonzero status */
halt(status);
} else {
/* Compatibility with old behavior:
* Run more finalizers and then halt
*/
runMoreFinalizers = runFinalizersOnExit;
}
break;
}
}
if (runMoreFinalizers) {
runAllFinalizers();
halt(status);
}
synchronized (Shutdown.class) {
/* Synchronize on the class object, causing any other thread
* that attempts to initiate shutdown to stall indefinitely
*/
sequence();
halt(status);
}
}
這個(gè)應(yīng)該是你手動(dòng)停止的,不是程序自己出的異常,程序執(zhí)行到該代碼時(shí)退出,后續(xù)代碼都不執(zhí)行
Java代碼。怎么能讓他走到一句話就結(jié)束。就不再往下走了。
在你要結(jié)束的地方添加System.exit(0);就行了,執(zhí)行改行代碼后,當(dāng)前程序就會(huì)結(jié)束
網(wǎng)頁題目:java代碼不讓往下執(zhí)行 java代碼不執(zhí)行直接跳過
URL分享:http://fisionsoft.com.cn/article/hjpipg.html