第1章 Java語言概述

[TOC]

1.1 軟件開發(fā)介紹

軟件開發(fā)

軟件,即一系列按照特定順序組織的計(jì)算機(jī)數(shù)據(jù)和指令的集合。有系統(tǒng)軟件和應(yīng)用軟件之分。

人機(jī)交互方式

圖形化界面(Graphical User Interface GUI)這種方式簡單直觀,使用者易于接受,容易上手操作。
命令行方式(Command Line Interface CLI):需要有一個控制臺,輸入特定的指令,讓計(jì)算機(jī)完成一些操作。較為麻煩,需要記錄住一些命令。
==Pascal之父Nicklaus Wirth: “Algorithms+Data Structures=Programs”==

常用的DOS命令

dir :    列出當(dāng)前目錄下的文件以及文件夾
md :   創(chuàng)建目錄
rd :     刪除目錄
cd :    進(jìn)入指定目錄
cd.. :  退回到上一級目錄
cd\:    退回到根目錄
del :    刪除文件
exit :   退出 dos 命令行
補(bǔ)充:echo javase>1.doc
常用快捷鍵
←   →:移動光標(biāo)
↑   ↓:調(diào)閱歷史操作命令
Delete和Backspace:刪除字符

1-2 計(jì)算機(jī)編程語言介紹

什么是計(jì)算機(jī)語言

  • 語言:是人與人之間用于溝通的一種方式。例如:中國人與中國人用普通話溝通。而中國人要和英國人交流,就要學(xué)習(xí)英語。

  • 計(jì)算機(jī)語言:人與計(jì)算機(jī)交流的方式。
    如果人要與計(jì)算機(jī)交流,那么就要學(xué)習(xí)計(jì)算機(jī)語言。
    計(jì)算機(jī)語言有很多種。如:C ,C++ ,Java ,PHP , Kotlin,Python,Scala等。

  • 第一代語言
    機(jī)器語言。指令以二進(jìn)制代碼形式存在。

  • 第二代語言
    匯編語言。使用助記符表示一條機(jī)器指令。

EDJj1J.png
  • 第三代語言:高級語言

C、Pascal、Fortran面向過程的語言
C++面向過程/面向?qū)ο?br> Java跨平臺的純面向?qū)ο蟮恼Z言
.NET跨語言的平臺
Python、Scala…

1-3 Java語言概述

  • 是SUN(Stanford University Network,斯坦福大學(xué)網(wǎng)絡(luò)公司 ) 1995年推出的一門高級編程語言。
  • 是一種面向Internet的編程語言。Java一開始富有吸引力是因?yàn)镴ava程序可以在Web瀏覽器中運(yùn)行。這些Java程序被稱為Java小程序(applet)。applet使用現(xiàn)代的圖形用戶界面與Web用戶進(jìn)行交互。 applet內(nèi)嵌在HTML代碼中。
  • 隨著Java技術(shù)在web方面的不斷成熟,已經(jīng)成為Web應(yīng)用程序的首選開發(fā)語言
    后臺開發(fā):Java、PHP、Python、Go、Node.js

Java語言概述:Java簡史

1991年 Green項(xiàng)目,開發(fā)語言最初命名為Oak (橡樹)
1994年,開發(fā)組意識到Oak 非常適合于互聯(lián)網(wǎng)
1996年,發(fā)布JDK 1.0,約8.3萬個網(wǎng)頁應(yīng)用Java技術(shù)來制作
1997年,發(fā)布JDK 1.1,JavaOne會議召開,創(chuàng)當(dāng)時全球同類會議規(guī)模之最
1998年,發(fā)布JDK 1.2,同年發(fā)布企業(yè)平臺J2EE
1999年,Java分成J2SE、J2EE和J2ME,JSP/Servlet技術(shù)誕生
2004年,發(fā)布里程碑式版本:JDK 1.5,為突出此版本的重要性,更名為JDK 5.0
2005年,J2SE -> JavaSE,J2EE -> JavaEE,J2ME -> JavaME
2009年,Oracle公司收購SUN,交易價格74億美元
2011年,發(fā)布JDK 7.0
2014年,發(fā)布JDK 8.0,是繼JDK 5.0以來變化最大的版本
2017年,發(fā)布JDK 9.0,最大限度實(shí)現(xiàn)模塊化
2018年3月,發(fā)布JDK 10.0,版本號也稱為18.3
2018年9月,發(fā)布JDK 11.0,版本號也稱為18.9

Java技術(shù)體系平臺

EDYdEV.png

1-3 Java在各領(lǐng)域的應(yīng)用

從Java的應(yīng)用領(lǐng)域來分,Java語言的應(yīng)用方向主要表現(xiàn)在以下幾個方面:

  • 企業(yè)級應(yīng)用:主要指復(fù)雜的大企業(yè)的軟件系統(tǒng)、各種類型的網(wǎng)站。Java的安全機(jī)制以及它的跨平臺的優(yōu)勢,使它在分布式系統(tǒng)領(lǐng)域開發(fā)中有廣泛應(yīng)用。應(yīng)用領(lǐng)域包括金融、電信、交通、電子商務(wù)等。
  • Android平臺應(yīng)用:Android應(yīng)用程序使用Java語言編寫。Android開發(fā)水平的高低很大程度上取決于Java語言核心能力是否扎實(shí)。
  • 大數(shù)據(jù)平臺開發(fā):各類框架有Hadoop,spark,storm,flink等,就這類技術(shù)生態(tài)圈來講,還有各種中間件如flume,kafka,sqoop等等 ,這些框架以及工具大多數(shù)是用Java編寫而成,但提供諸如Java,scala,Python,R等各種語言API供編程。
  • 移動領(lǐng)域應(yīng)用:主要表現(xiàn)在消費(fèi)和嵌入式領(lǐng)域,是指在各種小型設(shè)備上的應(yīng)用,包括手機(jī)、PDA、機(jī)頂盒、汽車通信設(shè)備等。

Java語言的誕生

java之父James Gosling團(tuán)隊(duì)在開發(fā)”Green”項(xiàng)目時,發(fā)現(xiàn)C缺少垃圾回收系統(tǒng),還有可移植的安全性、分布程序設(shè)計(jì)和多線程功能。最后,他們想要一種易于移植到各種設(shè)備上的平臺。

EDaaM4.png

Java確實(shí)是從C語言和C++語言繼承了許多成份,甚至可以將Java看成是類C語言發(fā)展和衍生的產(chǎn)物。比如Java語言的變量聲明,操作符形式,參數(shù)傳遞,流程控制等方面和C語言、C++語言完全相同。但同時,Java是一個純粹的面向?qū)ο蟮某绦蛟O(shè)計(jì)語言,它繼承了C++語言面向?qū)ο蠹夹g(shù)的核心。Java舍棄了C語言中容易引起錯誤的指針(以引用取代)、運(yùn)算符重載(operator overloading)、多重繼承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的對象所占據(jù)的內(nèi)存空間。
JDK1.5又引入了泛型編程(Generic Programming)、類型安全的枚舉、不定長參數(shù)和自動裝/拆箱

主要特性

  • Java語言是易學(xué)的。Java語言的語法與C語言和C++語言很接近,使得大多數(shù)程序員很容易學(xué)習(xí)和使用Java。
  • Java語言是強(qiáng)制面向?qū)ο蟮?。Java語言提供類、接口和繼承等原語,為了簡單起見,只支持類之間的單繼承,但支持接口之間的多繼承,并支持類與接口之間的實(shí)現(xiàn)機(jī)制(關(guān)鍵字為implements)。
  • Java語言是分布式的。Java語言支持Internet應(yīng)用的開發(fā),在基本的Java應(yīng)用編程接口中有一個網(wǎng)絡(luò)應(yīng)用編程接口(java net),它提供了用于網(wǎng)絡(luò)應(yīng)用編程的類庫,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(遠(yuǎn)程方法激活)機(jī)制也是開發(fā)分布式應(yīng)用的重要手段。
  • Java語言是健壯的。Java的強(qiáng)類型機(jī)制、異常處理、垃圾的自動收集等是Java程序健壯性的重要保證。對指針的丟棄是Java的明智選擇。
  • Java語言是安全的。Java通常被用在網(wǎng)絡(luò)環(huán)境中,為此,Java提供了一個安全機(jī)制以防惡意代碼的攻擊。如:安全防范機(jī)制(類ClassLoader),如分配不同的名字空間以防替代本地的同名類、字節(jié)代碼檢查。
  • Java語言是體系結(jié)構(gòu)中立的。Java程序(后綴為java的文件)在Java平臺上被編譯為體系結(jié)構(gòu)中立的字節(jié)碼格式(后綴為class的文件),然后可以在實(shí)現(xiàn)這個Java平臺的任何系統(tǒng)中運(yùn)行。
  • Java語言是解釋型的。如前所述,Java程序在Java平臺上被編譯為字節(jié)碼格式,然后可以在實(shí)現(xiàn)這個Java平臺的任何系統(tǒng)的解釋器中運(yùn)行。
  • Java是性能略高的。與那些解釋型的高級腳本語言相比,Java的性能還是較優(yōu)的。
  • Java語言是原生支持多線程的。在Java語言中,線程是一種特殊的對象,它必須由Thread類或其子(孫)類來創(chuàng)建。

1-4 Java程序運(yùn)行機(jī)制及運(yùn)行過程

Java語言的特點(diǎn)

  • 特點(diǎn)一:面向?qū)ο?br> 兩個基本概念:類、對象
    三大特性:封裝、繼承、多態(tài)
  • 特點(diǎn)二:健壯性
    吸收了C/C++語言的優(yōu)點(diǎn),但去掉了其影響程序健壯性的部分(如指針、內(nèi)存的申請與釋放等),提供了一個相對安全的內(nèi)存管理和訪問機(jī)制
  • 特點(diǎn)三:跨平臺性
    跨平臺性:通過Java語言編寫的應(yīng)用程序在不同的系統(tǒng)平臺上都可以運(yùn)行?!癢rite once , Run Anywhere”
    原理:只要在需要運(yùn)行 java 應(yīng)用程序的操作系統(tǒng)上,先安裝一個Java虛擬機(jī) (JVM Java Virtual Machine) 即可。由JVM來負(fù)責(zé)Java程序在該系統(tǒng)中的運(yùn)行。

Java兩種核心機(jī)制

  • Java虛擬機(jī) (Java Virtal Machine)
    JVM是一個虛擬的計(jì)算機(jī),具有指令集并使用不同的存儲區(qū)域。負(fù)責(zé)執(zhí)行指令,管理數(shù)據(jù)、內(nèi)存、寄存器。
    對于不同的平臺,有不同的虛擬機(jī)。
    只有某平臺提供了對應(yīng)的java虛擬機(jī),java程序才可在此平臺運(yùn)行
    Java虛擬機(jī)機(jī)制屏蔽了底層運(yùn)行平臺的差別,實(shí)現(xiàn)了“一次編譯,到處運(yùn)行”
EDaves.png
EDdpF0.png
  • 垃圾收集機(jī)制 (Garbage Collection)
    不再使用的內(nèi)存空間應(yīng)回收—— 垃圾回收。
  • 在C/C++等語言中,由程序員負(fù)責(zé)回收無用內(nèi)存。
  • Java 語言消除了程序員回收無用內(nèi)存空間的責(zé)任:它提供一種系統(tǒng)級線程跟蹤存儲空間的分配情況。并在JVM空閑時,檢查并釋放那些可被釋放的存儲空間。
    垃圾回收在Java程序運(yùn)行過程中自動進(jìn)行,程序員無法精確控制和干預(yù)。

Java程序還會出現(xiàn)內(nèi)存泄漏和內(nèi)存溢出問題嗎?==Yes!==

1-5 Java語言的環(huán)境搭建

明確什么是JDK, JRE

EDdVm9.png
EDdnFx.png

==簡單而言,使用JDK的開發(fā)工具完成的java程序,交給JRE去運(yùn)行。==

EDd16e.png
  • JDK = JRE + 開發(fā)工具集(例如Javac編譯工具等)
  • JRE = JVM + Java SE標(biāo)準(zhǔn)類庫

下載 JDK

官方網(wǎng)址:

安裝JDK

  • 傻瓜式安裝,下一步即可。
  • 建議:安裝路徑不要有中文或者空格等特殊符號。
  • 如果操作系統(tǒng)是64位的,軟件盡量選擇支持64位的(除非軟件本身不區(qū)分)。
  • 當(dāng)提示安裝 JRE 時,正常在JDK安裝時已經(jīng)裝過了,但是為了后續(xù)使用Eclipse等開發(fā)工具不報(bào)錯,建議也根據(jù)提示安裝JRE。
  • 安裝 JDK

配置環(huán)境變量

在dos命令行中敲入javac,出現(xiàn)錯誤提示:

EDdaff.png

錯誤原因:當(dāng)前執(zhí)行的程序在當(dāng)前目錄下如果不存在,windows系統(tǒng)會在系統(tǒng)中已有的一個名為path的環(huán)境變量指定的目錄中查找。如果仍未找到,會出現(xiàn)以上的錯誤提示。所以進(jìn)入到 jdk安裝路徑\bin目錄下,執(zhí)行javac,會看到j(luò)avac參數(shù)提示信息。

EDdqtx.png

配置環(huán)境變量 path

  • path:windows系統(tǒng)執(zhí)行命令時要搜尋的路徑。
    每次執(zhí)行 java 的工具都要進(jìn)入到bin目錄下,是非常麻煩的。可不可以在任何目錄下都可以執(zhí)行java的工具呢?
    根據(jù)windows系統(tǒng)在查找可執(zhí)行程序的原理,可以將java工具所在路徑定義到 path 環(huán)境變量中,讓系統(tǒng)幫我們?nèi)フ疫\(yùn)行執(zhí)行的程序。
    配置方法
  • 我的電腦--屬性--高級系統(tǒng)設(shè)置--環(huán)境變量
  • 編輯 path 環(huán)境變量,在變量值開始處加上java工具所在目錄,后面用 “ ; ”和其他值分隔開即可。
  • 打開DOS命令行,任意目錄下敲入javac。如果出現(xiàn)javac 的參數(shù)信息,配置成功。

注: 具體操作流程,參看JDK8下載安裝配置(點(diǎn)擊跳轉(zhuǎn))

驗(yàn)證是否成功:javac java

ED0S2T.png
ED0CMF.png

1-6 開發(fā)體驗(yàn)— HelloWorld

  • 步驟:
    1.將 Java 代碼編寫到擴(kuò)展名為 .java 的文件中。
    2.通過 javac 命令對該 java 文件進(jìn)行編譯。
    通過 java 命令對生成的 class 文件進(jìn)行運(yùn)行
ED0Dds.png
  • 步驟一:編寫
    選擇最簡單的編輯器:記事本。
    敲入代碼 class Test{ }
    將文件保存成Test.java,這個文件是存放java代碼的文件,稱為源文件。
ED06J0.png

第一個Java程序

public class Test{
      public static void main(String[] args) {
             System.out.println(“Hello World!”);
       }
 }

步驟二:編譯

ED0fL4.png
  • 有了java源文件,通過編譯器將其編譯成JVM可以識別的字節(jié)碼文件。
  • 在該源文件目錄下,通過javac編譯工具對Test.java文件進(jìn)行編譯。
  • 如果程序沒有錯誤,沒有任何提示,但在當(dāng)前目錄下會出現(xiàn)一個Test.class文件,該文件稱為字節(jié)碼文件,也是可以執(zhí)行的java的程序。

步驟三:運(yùn)行

  • 有了可執(zhí)行的java程序(Test.class字節(jié)碼文件)
  • 通過運(yùn)行工具java.exe對字節(jié)碼文件進(jìn)行執(zhí)行。
  • 出現(xiàn)提示:缺少一個名稱為main的方法。
ED0LQO.png
  • 因?yàn)橐粋€程序的執(zhí)行需要一個起始點(diǎn)或者入口,所以在Test類中的加入public static void main(String[] args){ }
  • 對修改后的Test.java源文件需要重新編譯,生成新的class文件后,再進(jìn)行執(zhí)行。
  • 發(fā)現(xiàn)沒有編譯失敗,但也沒有任何效果,因?yàn)椴]有告訴JVM要幫我們做什么事情,也就是沒有可以具體執(zhí)行的語句。
  • 想要和JVM來個互動,只要在main方法中加入一句System.out.println(“Hello World");因?yàn)槌绦蜻M(jìn)行改動,所以再重新編譯,運(yùn)行即可。

1-7 常見問題及解決方法

EDBuYq.png

?源文件名不存在或者寫錯
?當(dāng)前路徑錯誤
?后綴名隱藏問題

EDBJ0J.png

?類文件名寫錯,尤其文件名與類名不一致時,要小心
?類文件不在當(dāng)前路徑下,或者不在classpath指定路徑下

EDBgAA.png

?聲明為public的類應(yīng)與文件名一致,否知編譯失敗

EDBh1f.png

?編譯失敗,注意錯誤出現(xiàn)的行數(shù),再到源代碼中指定位置改錯

小總結(jié):

學(xué)習(xí)編程最容易犯的錯是語法錯誤。Java要求你必須按照語法規(guī)則編寫代碼。如果你的程序違反了語法規(guī)則,例如:忘記了分號、大括號、引號,或者拼錯了單詞,java編譯器都會報(bào)語法錯誤。嘗試著去看懂編譯器會報(bào)告的錯誤信息。

1-8 注釋(Comment)

用于注解說明解釋程序的文字就是注釋。
Java中的注釋類型:

  • 單行注釋 格式: //注釋文字

  • 多行注釋 格式: /* 注釋文字 */

  • 文檔注釋 (java特有)

  • 對于單行和多行注釋,被注釋的文字,不會被JVM(java虛擬機(jī))解釋執(zhí)行。

  • 多行注釋里面不允許有多行注釋嵌套。

  • 格式:/**
    @author 指定java程序的作者
    @version 指定源文件的版本
    */

注釋內(nèi)容可以被JDK提供的工具 javadoc 所解析,生成一套以網(wǎng)頁文件形式體現(xiàn)的該程序的說明文檔。
提高了代碼的閱讀性;調(diào)試程序的重要方法。
注釋是一個程序員必須要具有的良好編程習(xí)慣。
將自己的思想通過注釋先整理出來,再用代碼去體現(xiàn)

EDDnDe.png

小結(jié)第一個程序

  • Java源文件以“java”為擴(kuò)展名。源文件的基本組成部分是類(class),如本例中的HelloWorld類。
  • Java應(yīng)用程序的執(zhí)行入口是main()方法。它有固定的書寫格式:
    public static void main(String[] args) {...}
  • Java語言嚴(yán)格區(qū)分大小寫。
  • Java方法由一條條語句構(gòu)成,每個語句以“;”結(jié)束。
  • 大括號都是成對出現(xiàn)的,缺一不可。
  • 一個源文件中最多只能有一個public類。其它類的個數(shù)不限,如果源文件包含一個public類,則文件名必須按該類名命名。

1-9 Java API文檔

API (Application Programming Interface,應(yīng)用程序編程接口)是 Java 提供的基本編程接口。
Java語言提供了大量的基礎(chǔ)類,因此 Oracle 也為這些基礎(chǔ)類提供了相應(yīng)的API文檔,用于告訴開發(fā)者如何使用這些類,以及這些類里包含的方法。
下載API:https://www.oracle.com/technetwork/java/javase/downloads/index.html
Additional Resources-Java SE 8 Documentation下載。

1.10 良好的編程風(fēng)格

正確的注釋和注釋風(fēng)格

  • 使用文檔注釋來注釋整個類或整個方法。
  • 如果注釋方法中的某一個步驟,使用單行或多行注釋。
    正確的縮進(jìn)和空白
  • 使用一次tab操作,實(shí)現(xiàn)縮進(jìn)
  • 運(yùn)算符兩邊習(xí)慣性各加一個空格。比如:2 + 4 * 5。
    塊的風(fēng)格
  • Java API 源代碼選擇了行尾風(fēng)格
行尾風(fēng)格
public class Test {
    public static void main(String[] args){
        System.out.println("Block Style!");
   }
}
次行風(fēng)格
public class Test
{
    public static void main(String[] args)
    {
        System.out.println("Block Style!");
   }
}

選擇合適的文本編輯器或 IDE 開發(fā)

JBuilder

JBuilder是Borland公司開發(fā)的針對java的開發(fā)工具,使用JBuilder將可以快速,有效的開發(fā)各類java應(yīng)用。 Jbuilder支持各種應(yīng)用服務(wù)器。Jbuilder與Inprise Application Server緊密集成,同時支持WebLogic Server,支持EJB 1.1和EJB 2.0,可以快速開發(fā)J2EE的電子商務(wù)應(yīng)用。支持遠(yuǎn)程調(diào)試和多線程調(diào)試,調(diào)試器支持各種JDK版本
https://edn.embarcadero.com/cn/jbuilder

EDDDCq.png

NetBeans

NetBeans是一款用Java編寫的開源IDE。既可用于Java開發(fā),也支持其他語言,特別是PHP、C/C ++,和HTML5。NetBeans開發(fā)環(huán)境提供了豐富的產(chǎn)品文檔和培訓(xùn)資源以及大量的第三方插件。
https://netbeans.org/features/index.html

EDDqqe.png

Eclipse

Eclipse應(yīng)該是大多數(shù)Java程序員使用的第一個IDE。眾所周知的、最流行、也最受歡迎的Java開發(fā)工具。優(yōu)點(diǎn)很多:免費(fèi)、更新快、代碼智能化、ANT構(gòu)建等,擁有眾多插件,完全免費(fèi)、有中文版、上手比較快。缺點(diǎn)也非常明顯,安裝插件麻煩、插件對版本要求比較嚴(yán)格。

https://eclipse.org/

EDDxPI.png

MyEclipse

MyEclipse也是一款功能強(qiáng)大的J2EE集成開發(fā)環(huán)境,由Genuitec公司發(fā)布,提供免費(fèi)版和收費(fèi)版。但免費(fèi)版,只能滿足基本開發(fā)需求
https://www.myeclipsecn.com/

EDrPsS.png

IntelliJ IDEA

IntelliJ IDEA被認(rèn)為是目前Java開發(fā)效率最快的IDE工具。是JetBrains公司的產(chǎn)品,這家公司總部位于捷克共和國的首都布拉格。它整合了開發(fā)過程中實(shí)用的眾多功能,智能提示錯誤,強(qiáng)大的調(diào)試工具,Ant,JavaEE支持,CVS整合,最大程度的加快開發(fā)的速度。簡單而又功能強(qiáng)大。與其他的一些繁冗而復(fù)雜的IDE工具有鮮明的對比。
https://www.jetbrains.com/idea/

EDrAaj.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 代碼虐我千百遍,我視代碼如初戀 初級學(xué)習(xí)思想: 看百科 敲官網(wǎng) 對文檔 看視頻 敲代碼 多求助 做總結(jié)...
    565420164146閱讀 441評論 0 0
  • 時間:2018-07-15 作者:魏文應(yīng) 一、Java技術(shù)體系平臺 Java SE (Java Standard...
    秋的懵懂閱讀 222評論 0 0
  • 1.Java語言有哪些特點(diǎn) Java語言是一種跨平臺、適合于分布式計(jì)算環(huán)境的面向?qū)ο蟮木幊陶Z言。它具有的特點(diǎn)有很多...
    EamonXia閱讀 848評論 0 1
  • Java是一門面向?qū)ο缶幊陶Z言,不僅吸收了C++語言的各種優(yōu)點(diǎn),還摒棄了C++里難以理解的多繼承、指針等概念,因此...
    黃花菜已涼閱讀 6,674評論 6 140
  • 我現(xiàn)在生活的這個城市,身邊人每天談?wù)撟疃嗟脑掝}就是“買房”。 今天早上我們的小伙伴做了一個數(shù)據(jù)的統(tǒng)計(jì),這份數(shù)據(jù)涵蓋...
    飛天蘿莉想閱讀 327評論 0 1

友情鏈接更多精彩內(nèi)容