1. 程式人生 > >java中HelloWorld原來還可以這樣玩

java中HelloWorld原來還可以這樣玩

 大家可能看到HelloWorld例子是不是都覺得博主腦子是不是有問題,怎麼拿這麼一個弱智的問題和例子拿來講。實際上並不是這樣的,如果是這樣的我相信我就沒有寫這篇部落格意思了。因為當我第一次看到java中第一個例子HelloWorld原來還有這麼多內容。自己當時也聽的懵逼。當然是這樣的,懵逼過後就必須要清醒,當我醒後第一反應就是寫篇部落格來紀念我當時懵逼的樣子。當然希望下次各位不要懵逼,並且很淡定說“HelloWorld始終是HelloWorld永遠是那麼簡單”。

  這次開發java這個例子呢,採用的開發工具就是記事本就夠了,當然如果你用什麼Eclipse,那就沒什麼意思,而且你用的Eclipse用的也是很懵逼的,因為你根本就不懂得Eclipse從編譯java到執行Java整個機制過程,只知道寫好了,然後“Run as",那是給碼農,相信大家都是想成為攻城獅而不是碼農吧。成為攻城獅的第一步,先把本部落格學下,just for fun 。開始吧

首先,我們先來談下java環境變數,開啟“我的電腦”--->"屬性"--->"高階系統設定"--->"環境變數"

大家都很清楚,java的環境變數主要配置三個操作:第一個新建JAVA_HOME環境變數,第二個配置path,第三個配置CLASSPATH

JAVA_HOME="為你的java的JDK中bin資料夾所在的目錄",在path最前面追加:"%JAVA_HOME%\bin;%JAVA_HOME%\jre" ,CLASSPATH=".

";相信大家對前面兩個為什麼這麼應該容易瞭解。我相信大多數人對CLASSPATH=“."為什麼只配置一個點即可。這個點的意思是表示當前目錄下意思。我們都知道在java中實際上.java檔案先編譯成.class檔案實際上最後執行的就是.class檔案。CLASSPATH=“."表示在執行執行命令的時候,會在當前目錄路徑下去找到.class檔案;可能大家還看過這樣去配置CLASSPATH的。CLASSPATH=“.;./bin";這裡表示就是先在當前目錄下尋找相應指定的.class檔案,如果沒找到,再去當前目錄下的bin目錄中去找。

為什麼要講解這個呢?這個原理有助於理解下面我們執行java程式。

講完環境變數的配置我們就開始來編寫我們java中的第一個例子

在寫java程式碼之前,我們首先說下一個java程式碼中的頂級三元素:package、import、class

可能我們在寫程式碼的時候,不太注意這些,但是這些都是規範。所以這次這個HelloWorld的例子中也會遵循這個規範來。

第一步:先在我的桌面建立一個Demo資料夾,並且在資料夾內分別建立src和bin資料夾,大家都知道src資料夾是存放原始碼的,bin主要存放編譯後的.class檔案。

第二步:在src目下新建一個文字檔案,修改後綴名為".java"

第三步:開啟終端編譯

先進入src和bin所在的目錄,而不要進入src目錄,執行javac編譯命令:

大家可能看到為什麼和我們平時編譯命令有些不一樣,這裡我們通過-d 目錄 將編譯好的位元組碼檔案放到指定的目錄下,這裡的意思就是將編譯好的位元組碼檔案放到當前目錄的bin目錄資料夾下。 那麼我們可以開啟所在目錄的bin目錄來看看,原來是空的而現在是有一個帶包的HelloWorld.class檔案,這是因為我們在寫程式碼時候加上了package com.mikyou.test;所以看到下圖就不感到奇怪了。

編譯完後就是運行了,大家都知道執行我們使用的是java命令就行,是這麼直接這麼簡單嗎?大家都知道我們在執行過程中就和.java檔案沒有關係,我們需要找的是編譯後的.class檔案,然後直接用java執行即可。

 

先說下-cp的意思:-cp 路徑 指定類載入路徑(CLASSPATH),為什麼要使用-cp呢?這就得從剛開始配置環境變數說起了,就是配置環境變數的時候我們配置了一個CLASSPATH為一個點,並且我們說這個點表示在當前目錄下去找.class檔案的意思,然後我們當前目錄是src和bin所在的目錄並沒有所要的.class檔案,所以如果按系統環境變數中來找的話,肯定是找不到的,所以既然系統中找不到的話,那我們就通過-cp自己來指定類載入的路徑。不信我們可以試試

注意: java執行時類載入的方式有三種分別是本地類載入、系統類載入、擴充套件類載入。他們在類載入的時候遵循雙親委託機制。

 本地類載入-----委託-->系統類載入(CLASSPATH)-----委託--->擴充套件類載入:(雙親委託)
         先是本地類載入委託給系統類載入系統類載入再委託給擴充套件類載入
         擴充套件類載入沒有其他的委託了,那麼每次最先查詢就是擴充套件類載入,如果擴充套件類載入找不到那麼就會往上走,查詢系統類載入(CLASSPATH)
                       如果系統類載入(CLASSPATH)找不到往上走本地類載入

接下來就是將我們一個HelloWorld打包成.jar檔案

我們先在src和bin目錄下然後進入bin,然後再將bin目錄下的所有檔案和目錄都打包成jar

這個jar命令的意思就是將bin目錄下的所有檔案和目錄打包(*就是表這個意思),-cvf (c是表示壓縮命令,v表示顯示壓縮的過程資訊 f表示 後面要跟上輸出檔名稱)實際上和Linux系統壓縮檔案命令很像。打包後文件放到bin目錄裡面的上級目錄也就是bin所處的那個目錄。打包完成後大家可以看到和src,bin所在的同一目錄下有一個hello.jar

打包好了後,我們就要把這個jar發給客戶,客戶怎麼去執行呢?

1、 將.jar檔案放入某個盤,可直接從盤中根目錄執行:假如我放在C盤的根目錄下

 

又使用到了-cp,這個還是蠻有用的吧

另一種方法就是無論在哪種路徑下,都可以執行這個hello.jar:將.jar檔案放入到擴充套件類載入庫(該庫所在目錄是在你的jdk目錄中的jre目錄下的libs資料夾內):我的是這個E:\Android\Java\jdk8.0_11\jre\lib\ext:  執行命令: java com.mikyou.test.HelloWorld

 

 

會發現無論在哪個路徑下都可以執行。並且這個方法還有一點很好就是,你開啟Eclispe會發現,jre中的載入jar包中有一個hello.jar,也就是我們以後可以將我們自己封裝一些框架程式碼打包成一個jar包,然後放在該目錄下,每次新建一個程式自動載入就不用每次去新建一個libs然後再去add Build Path了,很是方便。

到這裡我們java中一個最簡單HelloWorld就完成了,是不是沒有我們想象中的那麼簡單。

相關推薦

javaHelloWorld原來可以這樣

 大家可能看到HelloWorld例子是不是都覺得博主腦子是不是有問題,怎麼拿這麼一個弱智的問題和例子拿來講。實際上並不是這樣的,如果是這樣的我相信我就沒有寫這篇部落格意思了。因為當我第一次看到java中第一個例子HelloWorld原來還有這麼多內容。自己當時也聽的懵逼。

14.3-全棧Java筆記:JPanel原來這樣用的

java在GUI編程中,如果我們要向窗口中直接添加控件(如按鈕控件、標簽控件、文本框控件等)是不建議的,所以就出現了容器(JPanel),以後我們只需要在容器裏加控件,然後將容器加到窗口上即可。想象一下,窗口如同黑板的外框,我們不會在外框上寫字,我們要在被外框包含的黑板的面板上寫字,那麽黑板的面板就是我們的容

二維碼原來可以這樣

 二維碼是怎麼生成的?二維碼其實就是由很多0、1組成的數字矩陣。二維碼是用某種特定的幾何圖形按一

Java的註解原來這樣回事的

前言 在我們平常的程式碼開發過程中,遇見過無數的註解,大多數註解都是我們使用的框架所給我們整合好了的,相信也很少有人使用自己編寫的註解,我也如此,但是隻有當你瞭解了註解背後的祕密後,一定會對它有不同的看法。 註解,也被稱為元資料,可以為我們在程式碼中新增資訊提供一種

Java多執行緒可以分組,這樣

前面的文章,棧長和大家分享過多執行緒建立的3種方式《實現 Java 多執行緒的 3 種方式》。 但如果執行緒很多的情況下,你知道如何對它們進行分組嗎? 和 Dubbo 的服務分組一樣,Java 可以對相同性質的執行緒進行分組。 來看下執行緒類 Thread 的所有構造方法。 如圖所示,帶有 Thr

Java 11 已釋出,String 這樣

在文章《Java 11 正式釋出,這 8 個逆天新特性教你寫出更牛逼的程式碼》中,我有介紹到 Java 11 的八個新特性,其中關於 String 加強部分,我覺得有點意思,這裡單獨再拉出來講。 Java 11 增加了一系列的字串處理方法,如以下所示。 // 判斷字串是否為空白 " ".i

學了java,我才發現檯球可以這樣

桌球小遊戲的嘗試 桌球是人們日常生活中都能接觸到的一種娛樂活動,隨著網際網路技術的發展,手機上也有了很多桌球小遊戲,讓人們隨時隨地都能打兩把。   今天分享一個用java編寫的桌球小遊戲 程式碼如下:  import java.awt.*; import javax.

Java原來可以這麼學:如何搞定面試必考的集合類

![副本_未命名.jpg](https://upload-images.jianshu.io/upload_images/5447660-158639165ee1f96e.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ## 原創宣告 本文作

打破你的認知!Java空指標居然這樣,90%人不知道…

相信在座的各位都遇到過空指標異常,不甚其煩,本文不是教你避免空指標,而是一些對空指標其他方面的理解。 本文可能有點另類,也可能會打破你對空指標的認知。 ## 1、null.method() 空指標? 我們知道呼叫一個物件的方法,如果物件為 `null` 肯定會報空指標錯誤的,但你確定一定會嗎? 不一定

java存在垃圾回收機制,但是會有內存泄漏的問題,原因是

java 自己 data .so 這樣的 即使 垃圾 ref stack 答案是肯定的,但不能拿這一句回答面試官的問題。分析:JAVA是支持垃圾回收機制的,在這樣的一個背景下,內存泄露又被稱為“無意識的對象保持”。如果一個對象引用被無意識地保留下來,那麽垃圾回收器不僅不會處

正確的Java學習線路圖原來這樣,教你如何成為優秀的程序員

java se 簡單的 server oracl 數據庫三範式 jdb serve asc uno IT行業現在正處於火熱的階段,很多人面對就業這個難題迷惘之後選擇了程序員的道路,java作為其中一個大的板塊受到了很多學員的青睞,那麽如何正確的學習java呢?千鋒長沙的老師

Scala & IntelliJ IDEA環境搭建升級版:在JAVA調用Scala的helloworld

手動 tor 三種 csdn right cati ngx folder 點擊 --------------------- 前言 --------------------- 項目關系,希望用Spark GraphX做數據分析及圖像展示,但前提是得會spark;spark是基

.Net集合排序可以這麽

true ora 表達式 str nbsp static gen AS pan 背景: public class StockQuantity { public StockQuantity(string status, DateTime da

原來文化設計可以這樣

log 傳統文化 哲學 1.5 認同 基礎 ui設計 漂亮 消費者 設計是什麽?設計是一種以科學的方法去高效解決問題的辦法,為之設計。例如一個燈,是為了照明,如果改良的燈,肯定是為了高效或者節能地解決照明這個需求,沒毛病吧? 那麽中秋的花燈是什麽?當然它的照明功能必然是

java類和對象如何協同工作, 這樣工作有什麽好處?

begin enc mark public class htm window對象 tcl 分配 4.object和Class配合工作原理 (視頻下載) (全部書籍) 【新手可忽略不影響繼續學習】 Class是"類"的意思,是抽象的,並沒有具體的說是哪個東西。而objec

微信群控這樣

手機app 好友 其他 硬件 就是 app 但是 與此同時 每天 假設一個員工控制100臺手機,平均每天可加100個微信好友,100部手機每天就可加10000個好友,一個月就是30萬個。一個人一個月就能做到30萬微信好友規模。如果你有10個員工,一個月就可以做到300萬規模

JAVAString轉換資料型別原來這麼簡單

String型別的資料轉為byte陣列: String str=""qwertyuiop; byte [] bytes=str.getBytes(); byte位元組型別轉為String型別資料: String str=""qwertyuiop; byte [] byte

JavaJNI的使用詳解第一篇:HelloWorld

今天開始研究JNI技術,首先還是老套路,輸出一個HelloWorld:具體流程如下:在Java中定義一個方法,在C++中實現這個方法,在方法內部輸出“Hello World",然後再回到Java中進行呼叫。分為以下步驟: 第一步:在Eclipse中建立一個類:JNIDemo  

java的變數原來有這些(詳解)

1 初識java a 開啟MyEclipse b 開啟File->new->java project (建立專案) c 在project name 起名 (給專案命名) d 開啟File->new->class name起個名字 最好叫Test (建立類並命名) e

JavaJNI的使用詳解第一篇 HelloWorld

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!