java中的de是什么_【轉】java中main函數解析

源地址:http://www.cnblogs.com/xwdreamer/archive/2012/04/09/2438845.html

從寫java至今,寫的最多的可能就是主函數

public static void main(String[] args) {}

但是以前一直都沒有問自己,為什么要這么寫,因為在c語言中就沒有這樣子的要求。其實這是一個不需要解釋的問題,因為java標準就是

這么規定的,那么既然是java標準規定的,我們按照規定來執行就好了。不過,這并不是一個很好的學習態度,如果總是知其然而不知其所以然,總會對

java有種隔膜的感覺。就是發現問題了,不去解決,不去了解為什么,心里總是會有牽絆。今天既然自己都這么問自己了,為什么java的主函數要按照這個

格式來寫,那么我就得弄明白為什么。

在java中,main()方法是java應用程序的入口方法。java虛擬機通過main方法找到需要啟動的運行程序,并且檢查main函數所在

類是否被java虛擬機裝載。如果沒有裝載,那么就裝載該類,并且裝載所有相關的其他類。因此程序在運行的時候,第一個執行的方法就是main()方法。

通常情況下,

如果要運行一個類的方法,必須首先實例化出來這個類的一個對象,然后通過"對象名.方法名()"的方式來運行方法,但是因為main是程序的入口,這時候

還沒有實例化對象,因此將main方法聲明為static的,這樣這個方法就可以直接通過“類名.方法名()”的方式來調用。

實例

虛擬機通過調用某個指定類的方法main啟動,傳遞給main一個字符串數組參數,使指定的類被裝載,同時鏈接該類所使用的其它的類型,并且初始化它們。例如對于程序:

a4c26d1e5885305701be709a3d33442f.png

public classHelloApp {public static voidmain(String[] args) {

System.out.println("Hello World!");for (int i = 0; i < args.length; i++) {

System.out.println(args);

}

}

}

a4c26d1e5885305701be709a3d33442f.png

編譯后在命令行模式下鍵入: java HelloApp run virtual

machine

將通過調用HelloApp的方法main來啟動java虛擬機,傳遞給main一個包含三個字符串"run"、"virtual"、"machine"的數組。現在我們略述虛擬機在執行HelloApp時可能采取的步驟。

開始試圖執行類HelloApp的main方法,發現該類并沒有被裝載,也就是說虛擬機當前不包含該類的二進制代表,

于是虛擬機使用ClassLoader試圖尋找這樣的二進制代表。如果這個進程失敗,則拋出一個異常。類被裝載后同時在main方法被調用之前,必須對類

HelloApp與其它類型進行鏈接然后初始化。鏈接包含三個階段:檢驗,準備和解析。檢驗檢查被裝載的主類的符號和語義,準備則創建類或接口的靜態域以

及把這些域初始化為標準的默認值,解析負責檢查主類對其它類或接口的符號引用,在這一步它是可選的。類的初始化是對類中聲明的靜態初始化函數和靜態域的初

始化構造方法的執行。一個類在初始化之前它的父類必須被初始化。整個過程如下:

a4c26d1e5885305701be709a3d33442f.png

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/542577.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/542577.shtml
英文地址,請注明出處:http://en.pswp.cn/news/542577.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

JAVA多線程(一)線程安全問題產生的原因

JAVA線程內存與主存間映射示意圖Java內存模型中規定了所有的變量都存儲在主內存中&#xff0c;每條線程還有自己的工作內存&#xff0c;線程的工作內存中保存了該線程使用的變量到主內存副本拷貝&#xff0c;線程對變量的所有操作&#xff08;讀取、賦值&#xff09;都必須在工…

兩頂點的路徑長度為k_計算兩個頂點之間的所有可能路徑

兩頂點的路徑長度為kWhat to Learn? 學什么&#xff1f; How to count all possible paths between two vertices? 如何計算兩個頂點之間的所有可能路徑&#xff1f; In the graph there are many alternative paths from vertex 0 to vertex 4 在圖中&#xff0c;有許多從…

php debug_print_backtrace,php中debug_backtrace、debug_print_backtrace和匿名函數用法實例

本文實例講述了php中debug_backtrace、debug_print_backtrace和匿名函數用法。分享給大家供大家參考。具體分析如下&#xff1a;debug_print_backtrace() 是一個很低調的函數,很少有人注意過它.不過當我們對著一個對象調用另一個對象再調用其它的對象和文件中的一個函數出錯時,…

covariance matrix r語言_時間序列分析|ARIMAX模型分步驟詳解和R中實踐

這是關于時間序列的第N篇文章&#xff0c;本文將介紹ARIMAX模型&#xff0c;簡單來說就是在ARIMA的基礎上增加一個外生變量。ARIMAX和ARIMA相比在理論上沒有太多新的內容&#xff0c;所以本文直接介紹在R里怎么一步一步跑ARIMAX。在閱讀這篇文章前&#xff0c;需要對ARIMA有一定…

linux系統編程之文件與I/O(六):fcntl 函數與文件鎖

2013-05-14 11:26 8290人閱讀 評論(2) 收藏 舉報分類&#xff1a;linux系統編程&#xff08;19&#xff09; 版權聲明&#xff1a;本文為博主原創文章&#xff0c;未經博主允許不得轉載。 一、fcntl函數 功能&#xff1a;操縱文件描述符&#xff0c;改變已打開的文件的屬性 int…

python 使用異常函數_您如何測試Python函數引發異常?

python 使用異常函數This article elaborates on how to implement a test case for a function that raises an exception. 本文詳細介紹了如何為引發異常的函數實現測試用例 。 Consider the following function: 考慮以下功能&#xff1a; import redef check_email_forma…

php 遠程圖片合拼,PHP實現將幾張照片拼接到一起的合成圖片功能【便于整體打印輸出】...

本文實例講述了PHP實現將幾張照片拼接到一起的合成圖片功能。共享給大家供大家參考&#xff0c;詳細如下&#xff1a;/*** 作品合成程序* 針對單面&#xff0c;封面不做特殊處理*/$src_path $argv[1]; // php該文件&#xff0c;第一個參數是文件夾名(作品集)&#xff0c;可相對…

bandizip最后一個無廣告版本_如果非要選擇一款壓縮軟件的話——Bandizip

全世界只有不到0.00~1 % 的人關注了我們得到你的關注是小幫的幸運壓縮解壓軟件是電腦一個必備軟甲&#xff0c;前面的文章介紹了一款開源小巧無廣告的壓縮解壓軟件windows工具軟件選擇之壓縮軟件——7-Zip&#xff0c;如果有人用不慣的話可以試試今天的這款。Bandizip 是一款來…

[MVC學習筆記]1.項目結構搭建及單個類在各個層次中的實現

新人剛開始學習ASP.NET MVC&#xff0c;若有不足之處希望能得到您的指點&#xff0c;不勝感激&#xff01; 先來一張項目的層級結構圖: Model&#xff1a;模型層&#xff0c;主要是各種類型、枚舉以及ORM框架&#xff0c;框架完成數據庫和實體類的映射。項目中選用了微軟的開源…

日期getUTCSeconds()方法以及JavaScript中的示例

JavaScript日期getUTCSeconds()方法 (JavaScript Date getUTCSeconds() method) getUTCSeconds() method is a Dates class method and it is used to get seconds from the current time according to the UTC (Universal time coordinated). getUTCSeconds()方法是Date的類方…

dedecms 在模板里引入php文件夾,dedecms如何添加并引入php文件

前言&#xff1a;有些時候我們需要創建一些單獨的PHP文件&#xff0c;但是隨便放入的PHP文件是不能夠編譯織夢 dedecms的標簽的&#xff0c;所以我們需要引入織夢標簽的編譯引擎方案。例如&#xff0c;我們在根目錄創建 example.php&#xff0c;代碼如下&#xff1a;<?php …

mybatisplus代碼生成器_想做時間管理大師?你可以試試Mybatis Plus代碼生成器

1. 前言對于寫Crud的老司機來說時間非常寶貴&#xff0c;一些樣板代碼寫不但費時費力&#xff0c;而且枯燥無味。經常有小伙伴問我&#xff0c;胖哥你怎么天天那么有時間去搞新東西&#xff0c;透露一下秘訣唄。好吧&#xff0c;今天就把Mybatis-plus的代碼生成器分享出來&…

安裝Oracle 11g RAC R2 之Linux DNS 配置

Oracle 11g RAC 集群中引入了SCAN(Single Client Access Name)的概念&#xff0c;也就是指集群的單客戶端訪問名稱。SCAN 這個特性為客戶端提供了單一的主機名&#xff0c;用于訪問集群中運行的 Oracle 數據庫。如果您在集群中添加或刪除節點&#xff0c;使用 SCAN 的客戶端無需…

c++ websocket客戶端_websocket使用

websocket使用一、介紹在項目開發過程中&#xff0c;很多時候&#xff0c;我們不可避免的需要實現的一個功能&#xff1a; 服務端實時發送信息給客戶端。比如實時公告、實時訂單通知、實時報警推送等等&#xff0c;登錄后的客戶端需要知道與它相關的實時信息&#xff0c;以便進…

漢子編碼比字母編碼長_字母/博客作者編碼問題(使用動態編程)

漢子編碼比字母編碼長Problem statement: 問題陳述&#xff1a; Shivang is a blog writer and he is working on two websites simultaneously. He has to write two types of blogs which are: Shivang是一位博客作家&#xff0c;他同時在兩個網站上工作。 他必須寫兩種類型…

php parent報錯,mac brew 安裝php擴展報錯:parent directory is world writable but not sticky

$ brew install php70-mcrypt報錯&#xff1a;Error: parent directory is world writable but not sticky搜索到github的答案https://github.com/Homebrew/legacy-homebrew/issues/40345原因&#xff1a;/tmp目錄權限不對$ ls -ld /private/tmp打印出來 /private/tmp 被標黃了…

在cordova中使用HTML5的多文件上傳

2019獨角獸企業重金招聘Python工程師標準>>> 我們先看看linkface給開放的接口&#xff1a; 字段類型必需描述api_idstring是API 賬戶api_secretstring是API 密鑰selfie_filefile見下方注釋需上傳的圖片文件 1&#xff0c;上傳本地圖片進行檢測時選取此參數selfie_ur…

python dataframe切片_python pandas dataframe 行列選擇,切片操作方法

SQL中的select是根據列的名稱來選取&#xff1b;Pandas則更為靈活&#xff0c;不但可根據列名稱選取&#xff0c;還可以根據列所在的position&#xff08;數字&#xff0c;在第幾行第幾列&#xff0c;注意pandas行列的position是從0開始&#xff09;選取。相關函數如下&#xf…

php根據設備判斷訪問,PHP判斷設備訪問來源

/*** 判斷用戶請求設備是否是移動設備* return bool*/function isMobile() {//如果有HTTP_X_WAP_PROFILE則一定是移動設備if (isset($_SERVER[HTTP_X_WAP_PROFILE])) {return true;}//如果via信息含有wap則一定是移動設備,部分服務商會屏蔽該信息if (isset($_SERVER[HTTP_VIA])…

機器學習 深度學習 ai_如何學習機器學習和人工智能?

機器學習 深度學習 aiSTRATEGY 戰略 Learn theory practical aspects. 學習理論和實踐方面的知識。 (At first get an overview of what you are going to learn). (首先獲得要學習的內容的概述)。 Gain a good hold/insight on each concept. 掌握/理解每個概念。 If you …