1.4-java入口函式Main和package功能

如沐春風細雨中發表於2020-12-19

java入口函式Main和package功能

上一節:1.3-使用整合開發環境編寫一個java程式並執行
下一節:1.5-



前言

上一節介紹了使用idea編寫一個最簡單的java程式。
這一節簡要介紹:main函式,package的概念


一、Main函式

main函式,是java程式執行的入口函式,main函式的寫法為:

public static void main(String[] args) {
//程式程式碼
}

如果你程式碼中沒有main函式,程式將不能獨立的執行起來。

1、在idea中新建工程

在這裡插入圖片描述
在src目錄點右鍵,新建java class JavaGrammar.java
內容為:

public class JavaGrammar {
    public static void main(String[] args) {
        System.out.println("Hello,你好!");
    }
}

滑鼠右鍵 執行(或者按 ctrl + shift + F10):
在這裡插入圖片描述
能正常執行,列印出:
在這裡插入圖片描述

2、沒有main函式會是什麼樣

現在,我們把main改成 xxx,

public class JavaGrammar {
    public static void xxx(String[] args) {
        System.out.println("Hello,你好!");
    }
}

再次滑鼠右鍵,發現,沒有 run *** 的選項,這是因為 idea沒有找main函式,所以沒有提供執行的操作。

開啟cmd,進入JavaGrammar.java所在的目錄,
執行 :javac JavaGrammar.java
在這裡插入圖片描述
如果出現以上錯誤(中文字元編碼問題),則用記事本開啟,另存為,編碼選ANSI,覆蓋儲存。
在這裡插入圖片描述

再次執行javac JavaGrammar.java編譯這個檔案。
然後執行:java JavaGrammar
在這裡插入圖片描述
可見,使用java的命令執行沒有main函式的程式,是不能成功的,會提示找不到main方法。
到此,相信各位對main函式是java程式執行的入口函式,有一定的體會了。

二、體會package的作用

將上面的JavaGrammar.java檔案編碼格式用記事本開啟,另存為 utf-8格式,刪除剛才生成的JavaGrammar.class檔案,將剛才修改的xxx,改回main,idea的工程結構如下:
在這裡插入圖片描述
按 ctrl + shift + F10 執行,
在硬碟上找到JavaGrammar.java,和JavaGrammar.class的位置,分別為:

E:\new\1.4\1.4-JavaGrammar\src
E:\new\1.4\1.4-JavaGrammar\out\production\1.4-JavaGrammar

在idea的src目錄,右鍵-new-package,新建一個包,名稱輸入com然後按回車,再將JavaGrammar.java拖動到com裡,點refactor。
在這裡插入圖片描述
在這裡插入圖片描述
可以看到,在JavaGrammar.java的第一行,多了:

package com;

public class JavaGrammar {
    public static void main(String[] args) {
        System.out.println("Hello,你好!");
    }
}

再次按 ctrl + shift + F10 執行(idea會先執行編譯,然後再執行),在硬碟上找到JavaGrammar.java,和JavaGrammar.class的位置,分別為:

E:\new\1.4\1.4-JavaGrammar\src\com
E:\new\1.4\1.4-JavaGrammar\out\production\1.4-JavaGrammar\com

可以發現,原始碼的位置,和編譯後的位元組碼檔案的位置,都根據包名新增了一級目錄。

在idea中,再次建一個包,選中src,右鍵-new-package,
輸入:com.my.first 回車
然後將JavaGrammar.java拖到first下,可見第一行的包名發生了變化。
在這裡插入圖片描述
執行程式,再次檢查檔案在硬碟上的位置,發現 package com.my.first 將產生3個目錄層級,
在這裡插入圖片描述
在這裡插入圖片描述
做完以上操作,應該能體會到java語言中包的作用:將程式碼按目錄層級進行分類管理。
包的命名通常是根據公司的域名反過來寫,再加上功能模組名組成,比如 阿里巴巴資料庫連線池工具druid的包命名為:com.alibaba.druid.*

相關文章