做爲一個想要進階java後端但又恐懼java的前端工程師,你只是缺乏適合本身的教程,你們都是編程的人,徹底不必從int,String,Boolean,if,else,witch,for,while....這種東西學起了。那就讓我開始,先行尋找java後端之旅的路線,而後跟你們一塊兒快速進擊java後端吧。javascript
瞭解Java包以前先看看如何使用它。使用IDEA工具建立一個普通的java項目。html
這裏對於IDEA工具的下載安裝以及jdk的下載就不介紹了(若是真的不會安裝jdk,點擊查看詳細安裝步驟),可是你必須保證已經安裝了IDEA工具以及jdk才能繼續看下去:前端
step1 點擊 Create New Project 建立一個工程 vue
step2 這裏必須保證的一點就是藍色框中jdk必須選中一個,若是沒有,就點擊右邊的New將你下載的jdk添加進來,其他選框均不用勾選,點擊next java
step3 出現選擇模板的界面,默認未勾選,爲了方即可以勾選並選擇Java Hello Word模板,點擊next react
step4 第一行輸入項目名稱,第二行選擇一下項目存儲路徑,點擊Finish完成項目建立 c++
step5 進入Main.java後右鍵菜單裏點擊Run 'Main'就能夠體驗本身的第一個java程序了 web
做爲一個職業的前端選手,你可能常常遊走於vue/react項目,對項目src目錄有着深入的看法,本身也會設計符合本身風格的目錄存放相應的代碼,那麼在java中也是同樣的,咱們能夠在src中建立不一樣的目錄來管理不一樣的Java代碼。算法
來個簡單的例子: 當你準備建立Directory(WebStorm裏是Directory)的時候,你忽然發現,WDMY 居然沒有這個選項,可是有個你在WebStorm裏沒見過的東西,那就是Package
,沒錯,Java就是經過這個叫Package
的東西來管理文件目錄的。spring
好了,那就建立一個learning.base
的Package(包)
吧,而後你會發現src目錄下多了個learning.base
的包。
你能夠點擊右上角紅色框中的齒輪按鈕,將Compact Middle Packages
選項的勾去掉,就能夠看到learning.base
已經變成了一個learning/base
的級聯目錄。
此時就能夠清楚的解釋java中的包究竟是什麼東西,他就是用來管理和組織java項目文件的一種目錄。
當了解到包的時候,咱們知道包的本質就是個文件夾或者說是目錄,可是你(實際上是我)可能會有些許困惑,爲何java把目錄叫作包,爲何還須要包這個概念,咱們寫前端也有目錄啊,也沒見人家把目錄抽象成什麼包的概念。
那麼既然叫作包,它確定不是一種普通目錄,那麼它跟普通目錄到底有什麼區別呢?
在尋找答案的時候,發現網上的回答都說沒有區別,但我不能放棄啊,沒有區別那憑什麼會有包的概念而不是叫目錄。
我的的理解是這樣的:java的包是一種接受java規範的目錄結構。它與普通的目錄卻別就在於它受制於某種規定,而普通目錄你能夠隨意建立。
這種規範包含:
命名規範:包名只能是字符串、數字、下劃線、$且不能以數字開頭,通常是小寫英文字(大寫不報錯)。
package learning.base;
public class Hello {
}
複製代碼
package learning.base
包名聲明在java代碼中,若是包名中出現什麼加減乘除符號,是否是不合理,因此這一規範很是重要。包結構的組織規範:包的結構通常以域名倒寫來組織,包名之間以點號.
來鏈接。好比我有個域名叫作geekrole.com
我就能夠這樣組織包名com.geekrole.user
。
com/geekrole/user
,你就知道了,目錄的命名是個總分結構的,因此包名也是。咱們已經知道,java中的包是來管理和組織java項目文件的一種目錄,因此咱們能夠將某一類代碼封裝到同一個包中,java提供的不少標準庫文件也是經過包的形式進行組織,只不過它是全局的,並以java開頭,好比java.lang
,java.util
等。
打破畏懼心理
此時你(實際上是我)可能會有種面對未知的憂慮和懼怕,我怎麼知道它須要有些什麼包,它的包有些什麼方法,每次調用導入包怎麼導入...
好吧,說實話,這種擔憂應該是多餘的,Idea能夠幫咱們自動導入一些用到的包, 你能夠試試下面的代碼,當你寫到Scanner回車後會自動導入Scanner包。若是是自定義包,idea也會有相應提示,以幫助咱們自動導入。
package learning.base;
import java.util.Scanner;
public class Hello {
public static void main(String[] args) {
// 輸入兩個數字比較大小,輸出大數
Scanner sc = new Scanner(System.in);
int num1 = sc.nextInt();
int num2 = sc.nextInt();
int res = Math.max(num1, num2);
System.out.println(res);
}
}
複製代碼
解決了包導入的問題,那麼如何知道有哪些包,這就是個積累的問題了,若是開發過程當中須要用到時間相關,那麼就查一查時間相關的包,看看有哪些方法能夠供咱們使用,一下是java9官方文檔,能夠找到你想要用的各類包(java9文檔)
tips
能夠注意一下包的聲明方式與導入方式。package關鍵字用於聲明包,import關鍵字用於導入包
既然說到了包,那就不妨把jar包和war包也簡單說明,避免後續它們給咱們編程帶來未知的恐懼。
你可能不瞭解jar包,但必定知道並用過zip壓縮工具,好比2345好壓,經過它能夠把不少文件甚至文件夾打包到一塊兒,方便傳輸給別人,同時它也擁有壓縮算法,能夠把文件體積變小。
jar包的本質就是java中的zip包,本質相同,但既然他是jar,就必定跟zip包有區別,jar與zip的區別是什麼:jar文件不只用於壓縮和發佈,並且還用於部署和封裝庫、組件和插件程序,並可被像編譯器和 JVM 這樣的工具直接使用(此句來自百度)。
也就是說jar包能夠進一步將咱們封裝的各類類文件(可能經過包形式阻止起來的類)進一步作個打包文件,而且這個文件在使用的時候徹底不用解壓縮,能夠直接使用。除此以外還擁有一些zip包的優點,好比壓縮。
到此,jar包到底有什麼優勢本身也能夠大體推斷出一二了,若是實在強迫症,百度搜一搜,而後你會發現本身也能根據zip包和以上jar與zip的區別猜出來。
說了jar包,怎麼又有個war包,直白一點,war包就是把一個web應用打包起來的包,而且跟jar包相似,它也能夠直接運行。
咱們能夠這樣理解,jar包是對各類工具的打包,war則是以整個網站,或者一個網站的一個模塊的打包,它能夠直接運行。
雖然本文並無什麼實質性的編程相關的東西,但它能夠從另外一個角度來幫助一些沒有java的基礎的朋友快速對java有個大體的認識。
如下爲閒談 說到爲何要寫java相關的文章,就想起了做爲一個計科專業的學生,居然只學過c/c++,都沒認真玩過java,而後興趣和機會讓我接觸了前端,但java始終是塊心病啊。
可能java的內容真的有點多,一本正常點的java SE語法書也要四五百頁,看起來真的像本字典。就說說我最近看的一本java書《寫給大忙人的JavaSE9核心技術》,500多頁也像字典同樣,大忙人
也沒有空看字典啊。
在網上找了找能夠快速學習的資料,可是沒找到想要的,要麼就是介紹int,Integer,String,Boolean, if, else, switch要麼開始介紹一堆面向對象的特色,jdk、jre是什麼。這種教程內容是很全,可不適合我快速學習,做爲一個學過c系語言(c,c++,java,javascript都算)的人,一些基礎語法,if,else,switch,while,do while,for都如出一轍啊,重複學習並無多大的必要。
因此想着那就本身開始挑着學吧,而後記錄下來,也爲一些前端朋友進階java認真作點事,你們都是編程的,不少不用說的東西那就別說了,快速熟悉java,儘快過分到spring boot等框架,開始真正的後端編程纔是重要的,而不是追求內容夠多,多了學不完要他何用?
還有個緣由,報了慕課網7月老師的java全棧課,卻沒有java基礎,因此基礎這裏得本身補一下了。