1. 程式人生 > >java的main前面為什麼要加static

java的main前面為什麼要加static

背景:
之前程式設計的時候,忘了在main前面敲static,結果不能執行。以為哪裡出問題了,看了好久才發現漏了個static。。。之前也沒有注意過main前面static的作用,所以上網查閱了一下。

解釋:

用static修飾的方法,無須產生類的例項物件就可以呼叫該方法。
沒有static修飾的方法,需要產生一個類的例項物件才可以呼叫該方法。
main方法必須要static來修飾,是因為main方法是Java直譯器呼叫的,那時候還沒有任何物件產生。

“不加的話 你怎麼執行程式 好比連門都沒你怎麼進房子”,so,static就相當於給你的主程式按個門方便進入嘍

mainID
= (*env)->
GetStaticMethodID(env, mainClass, "main", "([Ljava/lang/String;)V");

這是jvm啟動時的程式碼,直接去找static的,引數為String陣列的main方法。

相關推薦

java的main前面為什麼static

背景: 之前程式設計的時候,忘了在main前面敲static,結果不能執行。以為哪裡出問題了,看了好久才發現漏了個static。。。之前也沒有注意過main前面static的作用,所以上網查閱了一下。 解釋: 用static修飾的方法,無須產生

php靜態變量理解----(變量前面static關鍵字)

使用方式 ron clas ech eight 全局 add .com echo   php中除了常規類和方法的使用,訪問控制之外,還有靜態關鍵字static,靜態變量可以是局部變量也可以是全局變量,當一個程序段執行完畢時,靜態變量並沒有消失,它依然存在於內存中,下次在定義

react-使用二級路由的問題-一個是改地址,一個是次級路由與引用前面主路由的地址

一級路由直接在首頁,二級路由如:/dashboard/msg   這個msg頁面如何展示,以及寫在哪個頁面?寫在首頁還是寫在次級路由頁面?普通的巢狀方法根本不行;在主路由頁面加一個匹配所有的指向路由:<Route   component={Dashboard}>&

多線程操作數據拷貝線程鎖

-a article 關系 deb popu 過程 切換 div 中一 debug三天之後。在今天最終發現了自己開的兩個線程(一個接收數據。一個處理數據)所處理的數據並不相等。用compare比較後發現數據有所偏差,處理線程的數據存成文件之後隔一段都要比接收線程少一點。

C# 操作字符串,在某些特定的字符後面或前面其它字符

解決方法 中醫 操作 字符 bsp ring 其它 正則 字符串 C# 操作字符串,在某些特定的字符後面或前面添加其它字符,解決方法: 字符串替換或正則表達式替換即可。 示例:string s = @"第1種方案(約6站)在 泉城廣場 坐 14路 到 按察司街北口/市立

PHP函數前面@的作用

warn 問題 blog class 過程 div 函數 soc 文件 @是PHP提供的錯誤信息屏蔽的專用符號。 比如在一個函數前使用@ @mysql_query 不會出現Warning, 而原來mysql_query 在遇到錯誤時會在頁面上訪提示Warning。 @是可

jdk1.8新特性 : 接口中可以有普通方法(非靜態方法)和靜態方法 , 顛覆了之前我的理解 : 接口中只能有共有常量和抽象方法的概念,後面必須一句jdk1.7和1..7之前

@override 編譯 sys 接口 blank new style nts highlight 看到jdk某些接口中存在default方法,於是... http://shaomeng95.iteye.com/blog/998820 為什麽接口只能是公有常量? p

關於oracle sql語句查詢時 表名和字段名雙引號的問題具體解釋

ont tin rac 作者 什麽 因此 tro 們的 reg 作為oracle的剛開始學習的人相信大家一定會遇到這個問題。如圖: 明明就是navicat可視化創建了表,但是就是不能查到!這個

js 中使用el表達式 關鍵總結:在js中使用el表達式一定雙引號

fine function alt num length nump string ima ets js 中使用el表達式 關鍵總結:在js中使用el表達式一定要加雙引號 js控制中用到了el表達式,最開始源碼如下: Java代碼 var selected =

html li標簽前面圖標三種方法

code ie7 first tar some text 20px AI 前端 今天無聊寫下這個例子,希望對初學者有幫助,代碼如下 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 2

在每個類聲明之後、每個函數定義結束之後都空行。

user run main oat this 空行 getch ram str 在每個類聲明之後、每個函數定義結束之後都要加空行。 1 #include <iostream> 2 3 /* run this program using the co

c語言學習筆記-if語句塊一定分號

學習 語言 括號 語句 執行 -i c語言學習 c語言 分號 if(a>6) printf("hello");//語句1 printf("world");//語句2 當a>6的時候,執行的分支語句是語句1,而不是語句1和語句2,雖然結果是語句1和語句2都被執

django admin 模塊添 static

nbsp 絕對路徑 瀏覽器 nag 指向 con 修改 xxx eight 目前路徑是在 /var/www/jastme/static 但是admin的靜態文件不在這個位置,那麽怎麽辦呢? 首先到項目下,就是有manage.py的這個目錄 編輯項目下的setting.py

System.IO.File.Create 不會自動釋放,一定Dispose

System.IO.File.Create 不會自動釋放,一定要Dispose 這樣會導致W3P程序一直佔用這個檔案 System.IO.File.Create(HttpContext.Current.Server.MapPath(strName))    最好加

kill 和 kill -9到底有何區別?為何-9?

  kill 和 kill -9 很多時候,會有人建議你,如果kill殺不掉一個程序,就用kill -9. 為什麼? kill是Linux下常見的命令。其man手冊的功能定義如下:   kill – send a signal to a process

為什麼通用的物件方法在原型中

在建構函式中加屬性,原型中加方法。我學面向物件時一直記著的一句話,但為什麼方法要加在原型呢,今天再次看望遠鏡書時終於明白了。 將屬性和方法都寫在建構函式中沒問題,但問題在於每次進行例項化的過程中,重複建立功能不變的方法。 由於方法本質上是函式,其實也就是在堆記憶體中又新建了一個物件空間儲

HTML enctype=“multipart/form-data”是什麼?為什麼

1.什麼是multipart/form-data 首先我們需要明白在html中的enctype屬性,  enctype:規定了form表單在傳送到伺服器時候編碼方式。他有如下的三個值。  ①application/x-www-form-urlencoded。預設的編碼方式。但是在

為什麼只有一個元素的tuple逗號?

如果要定義一個空的tuple,可以寫成(): >>> t = () >>> t () 但是,要定義一個只有1個元素的tuple,如果你這麼定義: >>> t = (1) >>> t 1 定義的不是tuple,是

java內部類所訪問的區域性變數為什麼final

如果我們在一個類中宣告一個內部類,在這個內部類中訪問了原來類中的區域性變數,那麼這個區域性變數必須在原來的類中宣告成final,如圖: class A { final int a=1;; class B { int b=a; } } 這是為什麼呢? 答案是,因為在原

Python類中的方法self的理由

Python要self的理由 Python的類的方法和普通的函式有一個很明顯的區別,在類的方法必須有個額外的第一個引數 (self ),但在呼叫這個方法的時候不必為這個引數賦值 (顯勝於隱 的引發)。Python的類的方法的這個特別的引數指代的是物件本身,而按