日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

Java:main()函数调用类中方法的限制

發(fā)布時間:2025/3/21 java 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java:main()函数调用类中方法的限制 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1、在本類中調(diào)用自己的方法,方法必須為靜態(tài)的,否則報錯;

通過遞歸方法,實現(xiàn)N!的算法。

?

public class TestRecursion {public static void main(String[] args) {System.out.println(recursion(4)); //編輯器自動提示:Cannot make a static reference to the non-static method recursion(int) from the type TestRecursion}public int recursion(int n) {if(n == 1) {return 1;}else {return n * recursion(n-1);}} } //必須將recursion()方法定義為static方法,才能在main()方法中調(diào)用。 public class TestRecursion {public static void main(String[] args) {System.out.println(recursion(4));}public static int recursion(int n) {if(n == 1) {return 1;}else {return n * recursion(n-1);}} }


2、那么,如何在main()方法中調(diào)用非靜態(tài)方法呢?

?

首先,實例化本類的對象,然后通過對象調(diào)用方法。

?

public class TestRecursion {public static void main(String[] args) {//首先是實例化本類的對象TestRecursion tr = new TestRecursion();//通過實例化的對象調(diào)用recursion()方法System.out.println(tr.recursion(4));}public int recursion(int n) {if(n == 1) {return 1;}else {return n * recursion(n-1);}} }

?

?

通過上面兩種方法,可以解決在編程過程中遇到的main()調(diào)用本類中的方法。

?

下面是其它博客提到,如何調(diào)用java的main()方法介紹:

Main方法是我們學(xué)習(xí)Java編程語言時知道的第一個方法,你是否曾經(jīng)想過為什么main方法是public、static、void的。當(dāng)然,很多人首先學(xué)的是C和C++,但是在Java中main方法與前者有些細微的不同,它不會返回任何值,為什么main方式是public、static、void,這篇文章嘗試去找到一些答案。

Main方法是Java程序的入口,記住,我們這里不會討論Servlet、MIDlet和其他任何容器管理的java程序,在java核心編程中,JVM會查找類中的public static void main(String[] args),如果找不到該方法就拋出錯誤NoSuchMethodError:main 程序終止。
Main方法必須嚴格遵循它的語法規(guī)則,方法簽名必須是public static void,參數(shù)是字符串?dāng)?shù)組類型,如果是Java1.5及以后的版本還可以使用可變參數(shù):

public static void main(String... args)


1、為什么main方法是靜態(tài)的(static)

正因為main方法是靜態(tài)的,JVM調(diào)用這個方法就不需要創(chuàng)建任何包含這個main方法的實例。
因為C和C++同樣有類似的main方法作為程序執(zhí)行的入口。
如果main方法不聲明為靜態(tài)的,JVM就必須創(chuàng)建main類的實例,因為構(gòu)造器可以被重載,JVM就沒法確定調(diào)用哪個main方法。
靜態(tài)方法和靜態(tài)數(shù)據(jù)加載到內(nèi)存就可以直接調(diào)用而不需要像實例方法一樣創(chuàng)建實例后才能調(diào)用,如果main方法是靜態(tài)的,那么它就會被加載到JVM上下文中成為可執(zhí)行的方法。


2、為什么main方法是公有的(public)


Java指定了一些可訪問的修飾符如:private、protected、public,任何方法或變量都可以聲明為public,Java可以從該類之外的地方訪問。因為main方法是公共的,JVM就可以輕松的訪問執(zhí)行它。

3、為什么main方法沒有返回值(Void)

因為main返回任何值對程序都沒任何意義,所以設(shè)計成void,意味著main不會有任何值返回

總結(jié):

1、main方法必須聲明為public、static、void,否則JVM沒法運行程序
2、如果JVM找不到main方法就拋出NoSuchMethodError:main異常,例如:如果你運行命令:java HelloWrold,JVM就會在HelloWorld.class文件中搜索public static void main (String[] args) 方法
3、main方式是程序的入口,程序執(zhí)行的開始處。
4、main方法被一個特定的線程”main”運行,程序會一直運行直到main線程結(jié)束或者non-daemon線程終止。
5、當(dāng)你看到“Exception in Thread main”如:Excpetion in Thread main:Java.lang.NullPointedException ,意味著異常來自于main線程
6、你可以聲明main方法使用java1.5的可變參數(shù)的方式如:
public static void main(String... args)
7、除了static、void、和public,你可以使用final,synchronized、和strictfp修飾符在main方法的簽名中,如:
public strictfp final synchronized static void main(String[] args)
8、main方法在Java可以像其他方法一樣被重載,但是JVM只會調(diào)用上面這種簽名規(guī)范的main方法
9、你可以使用throws子句在方法簽名中,可以拋出任何checked和unchecked異常
10、靜態(tài)初始化塊在JVM調(diào)用main方法前被執(zhí)行,它們在類被JVM加載到內(nèi)存的時候就被執(zhí)行了。

《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的Java:main()函数调用类中方法的限制的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。