在一切開始以前,咱們須要先搭建好咱們的 開發環境 (從前文得知 Java 程序的運行須要 JVM,編寫 Java 代碼須要 IDE),或者在您徹底準備好以前能夠 暫時使用 在線版本的 Java 環境來運行前面一些內容涉及的簡單代碼:https://c.runoob.com/compile/10php
這三者的關係是一層層的嵌套關係:JDK > JRE > JVMhtml
JDK 包含了 Java 的編譯器、調試器等一系列開發工具,因此做爲開發人員咱們須要安裝 JDK,而某一些只須要運行編譯好的 Java 程序的服務器則能夠只安裝 JRE 便可 (極少數狀況,一般仍是安裝 JDK)。
Java 程序必須運行在 JVM 之上,因此咱們第一件事情就是安裝 JDK。咱們選擇最新的 JDK 14 進行安裝:java
選擇合適本身電腦平臺的 JDK 進行下載安裝便可:git
第一步程序員
在 Windows 安裝以後須要額外 配置環境變量,首先【右鍵個人電腦】 → 選擇【屬性(R)】 → 打開【高級系統設置】:github
第二步shell
在【高級】標籤下選擇【環境變量】,並對環境變量【path】進行編輯操做:數據庫
第三步編程
新建環境變量,而後把剛纔安裝 jdk 的安裝路徑複製進去,路徑截止到
bin
目錄:數組
第四步
快捷鍵【Win + R】輸入【cmd】調出 dos 窗口,輸入【java -version】進行驗證:
第一步
打開蘋果 dos 窗口,先確認本身使用的
shell
是zsh
仍是bash
,在命令行中輸入echo $SHELL
:
- 若是輸出
/bin/bash
則爲bash
;- 若是輸出結果爲
/bin/zsh
則爲zsh
。第二步
根據上面不一樣的結果 修改
shell
配置文件,若爲bash
,則打開~/.bash_profile
,若爲zsh
則打開~/.zshrc
,在響應的文件末尾添加如下內容,並保存:
export JAVA_HOME=$(/usr/libexec/java_home)
第三步
在
~/
目錄,命令行執行source
命令:一樣若是是bash
,則執行source .bash_profile
,而若是是zsh
,則執行source .zshrc
,讓剛纔的修改生效。第四步
命令行執行
java -version
檢查是否配置成功:
隨着 Java 的發展,SUN 公司給 Java 分出了三個不一樣版本:
毫無疑問,Java SE 是 Java 平臺的核心,而 Java EE 是進一步學習 Web 應用所必須的。
Java 源代碼本質上其實就是普通的文本文件,因此理論上來講任何能夠編輯文本文件的編輯器均可以做爲咱們的 Java 代碼編輯工具。好比:Windows 記事本、Mac OS X 下的文本編輯、Linux 下的 vi 等。
可是這些簡單工具沒有「語法的高亮提示」、「自動完成」等功能,這些功能的缺失會 大大下降代碼的編寫效率。
而後輸入如下內容並保存:
public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World"); } }
HelloWorld.java
文件名不容許出現空格,以及要保證和第一行 class
後跟着的字符串 HelloWorld
保持一致;將 Java 源程序編寫並保存到文件以後,還須要進行編譯才能運行。編譯 Java 源程序使用的是 JDK 中的 javac
命令,例如編譯上節的 HelloWorld.java,完整命令以下:
javac HelloWorld.java
該命令會讓 Java 編譯器讀取 JavaWorld.java 文件的源代碼,並把它編譯成符合 Java 虛擬機規範的字節碼文件 (.class
文件)。
想要運行字節碼文件也須要使用 JDK 中的 java
命令,例如運行上面生成的 .class
文件,完整命令以下:
java HelloWorld
具體效果以下:
儘管可以使用文本編輯器來編寫咱們的 Java 程序,但效率着實不敢恭維,因此咱們通常使用更加先進的 集成開發工具 (俗稱 IDE,Integrated Development Environment)。
不只僅包含更加智能的代碼編輯器、編譯器、調試器,還有友好的用戶界面以及各式各樣幫助咱們提高效率的插件。
對於效率這方面,下面咱們就幾個方面簡單感覺一下。
不只僅是基礎的關鍵字的提醒,IDEA 會基於當前的上下文 (也就是基於位於當前代碼上下的代碼進行分析),更加智能的進行過濾和提醒:
咱們老是會犯一些低級錯誤,好比一不留神打錯一個字母,可能找了很久都找不到錯誤所在,IDEA 的糾錯能力也許能夠幫到你,看一個例子:
若是你寫的代碼過於複雜,或者有更好的方式來替代你寫的代碼,那麼 IDEA 會給你一個提示,告訴你還能夠有更好的方式。以下圖:
好比你看我從頭寫一個 HelloWorld
程序:
這應該比一個一個字符敲快多了吧...(小聲bb:文章末尾有教程哦)
來一個總結:
打開【IDEA】新建一個空白的 Java 項目:
右鍵在【scr】目錄新建一個空白的【HelloIDEA】的 Java Class 文件:
而後接下來像我這樣操做,來編寫一個【HelloIDEA】的 Java 程序:
psvm
:是 public static void main
的縮寫;sout
:是 System.out
的縮寫;怕有些同窗迷惑,點擊左邊的綠三角會彈出以下的信息,點擊第一個選項就可以運行啦:
public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } }
咱們來看看剛纔咱們寫的 Hello World
程序。
第一行:public class HelloWorld {
public
:稱爲 訪問修飾符 (access modifier),用來控制程序的其餘部分對這一段代碼的訪問級別 (這裏暫時理解爲公用的,以後會更加詳細地介紹);class
:代表 Java 程序中的所有內容都包含在類中 (以後會花不少功夫來講明類,這裏能夠僅僅把類理解爲程序邏輯的一個容器,程序邏輯定義了應用軟件的行爲)。HelloWorld
:關鍵字 class
後面緊跟的是類名,它除了必須跟文件名保持一致外,還應該遵循 Java 類名的命名規範 —— 類名以大寫字母開頭。若是名字由多個單詞組成,每一個單詞的第一個字母須要大寫。
類名命名規範:
- Bad:
hello
、Good123
、Note_Book
、_World
- Good:
Hello
、Tester
、NoteBook
在編程中,某個東西的名稱就被稱爲 標識符,例如上述的類名 HelloWorld
。在 Java 中定義標識符存在如下幾種規則:
標識符命名示範:
- Bad:
Lady Luck
(壞:標識符內不容許有空格)、x/y
(錯誤:標識符中不容許使用斜槓)、1stPrize
(錯誤:以數字開頭)、abc
(壞:沒有任何意義)、_name
(壞:不要以_
或$
開頭)- Good:
userName
、StudentManager
、NoteBook
保留字就是像 class
這樣有特殊含義的標識符,您只能將保留字用於其設定的專屬用途 (如 class
除了定義類,您將不能用做其餘任何目的)。
在 Java 中存在如下的保留字:(無需記憶,它們中的大部分都或多或少地出如今以後您的編碼中.. IDEA 也會有智能的提示)
abstract class extends implements null strictfp true assert const false import package super try boolean continue final instanceof private switch void break default finally int protected synchronized volatile byte do float interface public this while case double for long return throw catch else goto native short throws char enum if new static transient
在類的第一個大括號和最後一個大括號之間描述了程序所作的一切:
public class ClassName { }
首先,每一個源代碼文件必須有一個主類 (名字同文件名),在以後的文章中咱們會看到一個源代碼文件可能會同時存在幾個類的狀況發生,暫時不考慮。
在上文程序的第三行:public static void main ( String[] args )
,展現了程序在何處開始運行,Java 虛擬機老是從指定類的 main
方法的代碼開始執行,所以爲了代碼可以執行,在類的原文件中必須包含一個 main
方法。
對這一行稍微作一下解釋:
public
:訪問修飾符,用來描述該方法的訪問權限級別,這裏爲全部人都能訪問;static
:保留字,用來定義該方法是一個靜態方法;void
:用來描述該方法沒有任何的返回值;main
:方法名;(String[] args)
:描述了該方法所接收的參數;因此剛開始接觸的程序結構大概看起來像是下面這樣:
public class ClassName { public static void main(String[] args) { ...... } }
因爲 Java 是大小寫敏感 的,因此 main
這個單詞不容許任何的修改。(Java 語言規範中規定 main 方法必須聲明爲 public)
大括號的使用風格曾經引起過許多無心義的爭論,如下兩種風格,哪種更好呢?:
public class ClassName { }public class ClassName { }沒有答案,雖然對於 Java 編譯器來講空白符會被省略,這兩種並沒有差異,但做爲開發者的咱們,選擇 Java 慣用的風格 (第一種) 就行了...
考慮下面這一段代碼,實際上就是上面的 HelloWorld
程序 main
方法中的語句:
{ System.out.println("Hello World!"); }
一對大括號表示 方法體 的開始與結束,在這個方法中只包含一條語句。跟大多數程序設計語言同樣,能夠把 Java 中的語句當作是語言中的一個句子。
在 Java 中,每一個句子必須用分號結束 (英文分號)。
特別須要說明,回車並非語句的結束標誌,所以,若是須要能夠將一條語句寫在多行上。
在這裏,咱們使用了 System.out
這個對象並調用了它的 println
方法 (點號 .
用於調用方法)。它的做用是在屏幕上輸出指定的信息。例如,咱們想要輸出 我沒有三顆心臟
則能夠這樣調用:
System.out.println("我沒有三顆心臟");
Java 使用方法的通用語法是:
object.method(parameters)
這一條語句的做用是在屏幕上輸出 Hello World!
,這一部分由字符組成的序列 (其中不該該包含引號) 被稱爲 字符串。它能夠包含任何有效字符,包括空格和標點符號。
方法 是根據語句構建的。程序一般包含許多方法。 咱們的示例程序僅包含一種方法 (main 方法)。固然咱們還調用了系統幫咱們寫好的 System.out.println()
方法。
咱們能夠試着仿照 main
方法來寫一個本身的方法,假設咱們想要輸出一段心理學三大巨頭之一阿德勒的一段話:
public static void printAdlerOneQuote() { System.out.println( "太在乎別人的視線和評價,纔會不斷尋求別人的承認。" + "對承認的追求,才扼殺了自由。" + "因爲不想被任何人討厭,才選擇了不自由的生活方式。" + "換言之,自由就是再也不尋求承認。" ); }
有幾點須要說明:
abc
彷佛就有點兒不知所云了;正常的方法調用須要像上面提到的那樣:object.method(parameters)
,但因爲身處同一個類中,this.printAdlerOneQuote();
就能夠簡寫成:printAdlerOneQuote();
。
完整的程序代碼以下:
public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); printAdlerOneQuote(); } public static void printAdlerOneQuote() { System.out.println( "太在乎別人的視線和評價,纔會不斷尋求別人的承認。" + "對承認的追求,才扼殺了自由。" + "因爲不想被任何人討厭,才選擇了不自由的生活方式。" + "換言之,自由就是再也不尋求承認。" ); } }
參考答案:(上面的完整代碼演示)
在源文件中,字符串文字必須僅在一行上。如下內容不合法,將沒法編譯:
System.out.println("Hello " "World!");
您編寫的代碼不符合 Java 的語法規定,就會發生 語法錯誤。
在 Java 編譯器將源代碼文件編譯成 .class
文件以前,會默認幫你作許多工做,檢查語法就是其中一項。
例如,咱們在桌面上試着建立一個【HelloWorld.java】文件而後輸入一段存在錯誤的代碼 (您能夠試着檢查一下哪裏出現了一處錯誤):
public Class HelloWorld { public static void main(String[] args) { System.out.println("Hello World"); } }
而後再當前目錄執行 javac HelloWorld.java
嘗試編譯這個存在錯誤的 Java 源文件:
→ javac HelloWorld.java HelloWorld.java:1: 錯誤: 須要class, interface或enum public Class HelloWorld { ^ HelloWorld.java:3: 錯誤: 須要class, interface或enum public static void main(String[] args) { ^ HelloWorld.java:6: 錯誤: 須要class, interface或enum } ^ 3 個錯誤
Java 編譯器提示咱們有三處錯誤,實際上咱們也確實粗心地把 class
錯誤的寫成了 Class
。
編譯器也未建立新的字節碼文件 (.class
),由於在遇到錯誤時它將中止翻譯。
僅僅由於程序經過編譯而且成功運行並不意味着它是正確的。
例如,您的任務是建立一個在屏幕上輸出 Hello Wrold!
,可是您卻錯誤地寫成了 Hello Bug!
,運行時沒有按照預期執行,則就稱該程序存在 Bug!
Bug 一詞的原意是 「臭蟲」 或 「蟲子」。
第一個有記載的 Bug 是美國海軍編程員、編譯器的發明者格蕾斯·哈珀 (GraceHopper) 發現的。
1945
年 9
月 9
日,下午三點。哈珀中尉正領着她的小組構造一個稱爲「馬克二型」的計算機。這還不是一個真正的電子計算機,它使用了大量的繼電器,一種電子機械裝置。第二次世界大戰尚未結束。哈珀的小組日以繼夜地工做。機房是一間第一次世界大戰時建造的老建築。那是一個炎熱的夏天,房間沒有空調,全部窗戶都敞開散熱。
忽然,馬克二型死機了。技術人員試了不少辦法,最後定位到第 70
號繼電器出錯。哈珀觀察這個出錯的繼電器,發現一隻飛蛾躺在中間,已經被繼電器打死。她當心地用攝子將蛾子夾出來,用透明膠布帖到「事件記錄本」中,並註明「第一個發現蟲子的實例」。
今後之後,人們將計算機錯誤稱爲 Bug,與之相對應,人們將發現 Bug 並加以糾正的過程叫作 「Debug」,意即「捉蟲子」或「殺蟲子」。
- 以上內容引用自:http://www.cxyym.com/2014/11/...
來幾個清奇的段子吧。
B 站自取:https://www.bilibili.com/video/BV1oJ411S7o4?from=search&seid=7940414495637079568
引用自知乎
@第七地區
的答案:
https://www.zhihu.com/questio...
引用自知乎
@噠柏
的答案:
https://www.zhihu.com/questio...
修改程序中的 Bug,要通過三個步驟:
提及來比較簡單,在地球人 (程序員等同於外星人) 看起來,過程是這樣的:
可是,對於程序員來講,找一個 Bug 每每是這樣的:
找到以後呢,解決這個 Bug 又是一個難題:
換個柱子什麼的比較簡單,還有更崩潰的!
- 以上內容引用自:http://www.accessoft.com/blog...
註釋 是寫程序的人留下的閱讀筆記。
一般註釋以兩個字符 //
開頭。Java 編譯器將忽略那些字符以及在該行以後的全部字符。例如:
public class HelloWorld { // 程序入口 public static void main(String[] args) { // 輸出 Hello World! System.out.println("Hello World!"); } }
這一段代碼跟咱們最開始的 HelloWrold
程序徹底相同。大多數的程序編輯器 (例如 IDEA) 都足夠聰明,能夠識別註釋並將其顯示爲可有可無的一些顏色:
與大多數程序設計語言同樣,Java 中的註釋也不會出如今可執行程序中。所以,能夠在源程序中根據須要添加任意多的註釋,而沒必要擔憂可執行代碼會膨脹。
/** * 文檔註釋 * 能夠註釋多條內容 */ public static void main(String[] args) { // 這是單行註釋 System.out.println("演示三種註釋方式"); /* 這是多行註釋 */ }
//
標識,只能註釋一行內容;/*
和 */
之間,能註釋多行內容,爲了提升可閱讀性,通常首行和尾行不寫註釋信息;/**
(兩個 *
) 和 */
之間,也能註釋多行內容,通常用在類、方法和變量上面,用來描述其做用 (這是 Java 的一種規範,以後會更多的見識到);註釋的目的是: 儘可能幫助讀者瞭解得和做者同樣多。 —— 《編寫可讀代碼的藝術》
如下節選自《阿里巴巴 Java 開發手冊》對於註釋的幾點要求:
/**內容*/
格式,不得使用 //
方式 (上面的演示程序中就不符合規範,須要注意);//
註釋。方法內部的多行註釋,使用 /* */
並注意與代碼對齊;【參考】 對於註釋的要求:
對於以上的一些建議,我相信在您以後的編程之路上會愈加地體會深入。
參考答案:(上面有完整代碼演示)
參考答案:(上面有完整代碼演示)
參考答案:(上面有完整代碼演示)
推薦理由: 這本書在知識體系完整充實的同時,又比《Thinking in Java》暴風式的知識洗禮來得輕鬆,新人入門書籍強烈推薦!
推薦理由: 編寫可閱讀的代碼是程序員從始至終須要提高的能力,這本書完整呈體系的結構,和樸實充實的實例,讓讀者經過閱讀就能在實踐中真實地運用起來,推薦!
- 本文已收錄至個人 Github 程序員成長系列 【More Than Java】,學習,不止 Code,歡迎 star:https://github.com/wmyskxz/MoreThanJava
- 我的公衆號 :wmyskxz,我的獨立域名博客:wmyskxz.com,堅持原創輸出,下方掃碼關注,2020,與您共同成長!
很是感謝各位人才能 看到這裏,若是以爲本篇文章寫得不錯,以爲 「我沒有三顆心臟」有點東西 的話,求點贊,求關注,求分享,求留言!
創做不易,各位的支持和承認,就是我創做的最大動力,咱們下篇文章見!