1. 程式人生 > 其它 >一:Java語言概述

一:Java語言概述

轉載自:一:Java語言概述

文章目錄

01、 軟體開發介紹

  • 軟體開發軟體,即一系列按照特定順序組織的計算機資料和指令的集合。軟體有系統軟體和應用軟體之分
  • 人機互動方式
    • 圖形化介面(Graphical User Interface GUI
      )這種方式簡單直觀,使用者易於接受,容易上手操作。
    • 命令列方式(Command Line InterfaceCLI):需要有一個控制檯,輸入特定的指令,讓計算機完成一些操作。較為麻煩,需要記錄住一些命令。

Pascal之父Nicklaus Wirth:“Algorithms+DataStructures=Programs”

1.1、常用的DOS命令

  • ⊞+R,一起按下,輸入cmd,可以開啟dos介面。
  • dir :列出當前目錄下的檔案以及資料夾
  • md:建立目錄
  • rd :刪除目錄
  • cd:進入指定目錄
  • cd… : 退回到上一級目錄
  • cd:退回到根目錄
  • del :刪除檔案
  • exit : 退出dos 命令列
  • 補充:echo javase>1.doc
  • 常用快捷鍵
    • ← →:移動游標
    • ↑↓:調閱歷史操作命令
    • Delete和Backspace:刪除字元
  • 注意:在輸入dos命令時,要是用英文輸入,所有標點符號都是英文。

02、計算機程式語言介紹

  • 什麼是計算機語言
    • 語言:是人與人之間用於溝通的一種方式。
    • 例如:中國人與中國人用普通話溝通。而中國人要和英國人交流,就要學習英語。
  • 計算機語言:人與計算機交流的方式。
    • 如果人要與計算機交流,那麼就要學習計算機語言。計算機語言有很多種。如:C ,C++,Java,PHP,Kotlin,Python,Scala等。
  • 第一代語言
    • 機器語言:指令以二進位制程式碼形式存在。
  • 第二代語言
    • 組合語言:使用助記符表示一條機器指令。
  • 第三代語言:高階語言
    • C、Pascal、Fortran面向過程的語言
    • C++面向過程/面向物件
    • Java跨平臺的純面向物件的語言
    • .NET跨語言的平臺
    • Python、Scala…
    • 面向過程:例如張三打籃球,他打籃球的全部過程(拿球、傳球、投籃……)。
    • 面向物件:人的物件,人的運動的動作,運動的器械這三個物件,例項化一個張三的物件,物件有一個打籃球的動作,器械是籃球。
    • 面向物件能更好的在抽象的層面分析問題,在程式實現跨越極大的賦予之前的程式碼。這些是面向過程程式設計極難實現的。

03、 Java語言概述

  • SUN(Stanford University Network,斯坦福大學網路公司) 1995年推出的一門高階程式語言。
  • 是一種面向Internet的程式語言。Java一開始富有吸引力是因為Java程式可以在Web瀏覽器中執行。這些Java程式被稱為Java小程式(applet)。applet使用現代的圖形使用者介面與Web使用者進行互動。applet內嵌在HTML程式碼中。
  • 隨著Java技術在web方面的不斷成熟,已經成為Web應用程式的首選開發語言。後臺開發:Java、PHP、Python、Go、Node.js

3.1、Java簡史

  • 1991年Green專案,開發語言最初命名為Oak (橡樹)
  • 1994年,開發組意識到Oak 非常適合於網際網路
  • 1996年,釋出JDK 1.0,約8.3萬個網頁應用Java技術來製作
  • 1997年,釋出JDK 1.1,JavaOne會議召開,創當時全球同類會議規模之最
  • 1998年,釋出JDK 1.2,同年釋出企業平臺J2EE
  • 1999年,Java分成J2SE、J2EE和J2ME,JSP/Servlet技術誕生
  • 2004年,釋出里程碑式版本:JDK 1.5,為突出此版本的重要性,更名為JDK 5.0
  • 2005年,J2SE -> JavaSE,J2EE -> JavaEE,J2ME -> JavaME
  • 2009年,Oracle公司收購SUN,交易價格74億美元
  • 2011年,釋出JDK 7.0
  • 2014年,釋出JDK 8.0,是繼JDK 5.0以來變化最大的版本
  • 2017年,釋出JDK 9.0,最大限度實現模組化
  • 2018年3月,釋出JDK 10.0,版本號也稱為18.3
  • 2018年9月,釋出JDK 11.0,版本號也稱為18.9
  • 2019年3月20日,Java SE 12 釋出。Java 12是短期支援版本。
  • 2019年9月23日,Java SE 13釋出,此版本中添加了“文字塊”,文字塊是一個多行字串文字,避免對大多數轉義序列的需要,以可預測的方式自動格式化字串,並在需要時讓開發人員控制格式。

3.2、Java技術體系平臺

1、JavaSE(Java Standard Edition)標準版

支援面向桌面級應用(如Windows下的應用程式)的Java平臺,提供了完整的Java核心API,此版本以前稱為J2SE

2、JavaEE(Java Enterprise Edition)企業版

是為開發企業環境下的應用程式提供的一套解決方案。該技術體系中包含的技術如:Servlet 、Jsp等,主要針對於Web應用程式開發。版本以前稱為J2EE

3、Java ME(Java Micro Edition)小型版

支援Java程式執行在移動終端(手機、PDA)上的平臺,對Java API有所精簡,並加入了針對移動終端的支援,此版本以前稱為J2ME

4、Java Card

支援一些Java小程式(Applets)執行在小記憶體裝置(如智慧卡)上的平臺

5、從Java的應用領域來分,Java語言的應用方向主要表現在以下幾個方面:

  • 企業級應用:主要指複雜的大企業的軟體系統、各種型別的網站。Java的安全機制以及它的跨平臺的優勢,使它在分散式系統領域開發中有廣泛應用。應用領域包括金融、電信、交通、電子商務等。
  • Android平臺應用:Android應用程式使用Java語言編寫。Android開發水平的高低很大程度上取決於Java語言核心能力是否紮實。
  • 大資料平臺開發:各類框架有Hadoop,spark,storm,flink等,就這類技術生態圈來講,還有各種中介軟體如flume,kafka,sqoop等等,這些框架以及工具大多數是用Java編寫而成,但提供諸如Java,scala,Python,R等各種語言API供程式設計。
  • 移動領域應用:主要表現在消費和嵌入式領域,是指在各種小型裝置上的應用,包括手機、PDA、機頂盒、汽車通訊裝置等。

Java主要特性

  • Java語言是易學的。Java語言的語法與C語言和C++語言很接近,使得大多數程式設計師很容易學習和使用Java。
  • Java語言是強制面向物件的。Java語言提供類、介面和繼承等原語,為了簡單起見,只支援類之間的單繼承,但支援介面之間的多繼承,並支援類與介面之間的實現機制(關鍵字為implements)。
  • Java語言是分散式的。Java語言支援Internet應用的開發,在基本的Java應用程式設計介面中有一個網路應用程式設計介面(java net),它提供了用於網路應用程式設計的類庫,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(遠端方法啟用)機制也是開發分散式應用的重要手段。
  • Java語言是健壯的。Java的強型別機制、異常處理、垃圾的自動收集等是Java程式健壯性的重要保證。對指標的丟棄是Java的明智選擇。
  • Java語言是安全的。Java通常被用在網路環境中,為此,Java提供了一個安全機制以防惡意程式碼的攻擊。如:安全防範機制(類ClassLoader),如分配不同的名字空間以防替代本地的同名類、位元組程式碼檢查。
  • Java語言是體系結構中立的。Java程式(字尾為java的檔案)在Java平臺上被編譯為體系結構中立的位元組碼格式(字尾為class的檔案),然後可以在實現這個Java平臺的任何系統中執行。
  • Java語言是解釋型的。如前所述,Java程式在Java平臺上被編譯為位元組碼格式,然後可以在實現這個Java平臺的任何系統的直譯器中執行。先編譯後解釋。
  • Java是效能略高的。與那些解釋型的高階指令碼語言相比,Java的效能還是較優的。
  • Java語言是原生支援多執行緒的。在Java語言中,執行緒是一種特殊的物件,它必須由Thread類或其子(孫)類來建立。

04、 Java程式執行機制及執行過程

  • 特點一:面向物件
    • 兩個基本概念:類、物件
    • 三大特性:封裝、繼承、多型
  • 特點二:健壯性
    • 吸收了C/C++語言的優點,但去掉了其影響程式健壯性的部分(如指標、記憶體的申請與釋放等),提供了一個相對安全的記憶體管理和訪問機制
  • 特點三:跨平臺性
    • 跨平臺性:通過Java語言編寫的應用程式在不同的系統平臺上都可以執行。“Write once , Run Anywhere”
    • 原理:只要在需要執行java 應用程式的作業系統上,先安裝一個Java虛擬機器(JVM Java Virtual Machine) 即可。由JVM來負責Java程式在該系統中的執行。

4.1、Java兩種核心機制

1、Java虛擬機器(Java VirtalMachine)

  • JVM是一個虛擬的計算機,具有指令集並使用不同的儲存區域。負責執行指令,管理資料、記憶體、暫存器。

  • 對於不同的平臺,有不同的虛擬機器。

  • 只有某平臺提供了對應的java虛擬機器,java程式才可在此平臺執行。[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳

  • Java虛擬機器機制遮蔽了底層執行平臺的差別,實現了“一次編譯,到處執行”。[外鏈圖片轉存失敗,源站可能有防盜在這裡插入!鏈機制,建描述]議將圖片上https://傳(imblog-dnimg.cn/img_convert/UEET6e8896a45811378ed13d38b7df66.png#pic_center344)(#pic_center)]

2、垃圾收集機制(Garbage Collection)

  • 不再使用的記憶體空間應回收——垃圾回收。
  • 在C/C++等語言中,由程式設計師負責回收無用記憶體。
  • Java 語言消除了程式設計師回收無用記憶體空間的責任:它提供一種系統級執行緒跟蹤儲存空間的分配情況。並在JVM空閒時,檢查並釋放那些可被釋放的儲存空間。
  • 垃圾回收在Java程式執行過程中自動進行,程式設計師無法精確控制和干預。

Java程式還會出現記憶體洩漏和記憶體溢位問題嗎?Yes!

05、Java語言的環境搭建

1、明確什麼是JDK, JRE

  • JDK(Java Development Kit Java開發工具包)
    • JDK是提供給Java開發人員使用的,其中包含了java的開發工具,也**包括了JRE。**所以安裝了JDK,就不用在單獨安裝JRE了。其中的開發工具:編譯工具(javac.exe) 打包工具(jar.exe)等。
  • JRE(Java Runtime Environment Java執行環境)
    • 包括Java虛擬機器(JVM Java Virtual Machine)和Java程式所需的核心類庫等,如果想要執行一個開發好的Java程式,計算機中只需要安裝JRE即可。

2、簡單而言,使用JDK的開發工具完成的java程式,交給JRE去執行。

  • JDK = JRE + 開發工具集(例如Javac編譯工具等)

  • JRE = JVM + Java SE標準類庫

3、官方網址:

  • 下載JDK:www.oracle.com
  • java.sun.com
  • 安裝JDK
    1. 傻瓜式安裝,下一步即可。
    2. 建議:安裝路徑不要有中文或者空格等特殊符號。
    3. 如果作業系統是64位的,軟體儘量選擇支援64位的(除非軟體本身不區分)。
    4. 當提示安裝JRE 時,正常在JDK安裝時已經裝過了,但是為了後續使用Eclipse等開發工具不報錯,建議也根據提示安裝JRE。

4、配置環境變數

  • path:windows系統執行命令時要搜尋的路徑。

  • 在dos命令列中敲入javac,出現錯誤提示:

  • 錯誤原因:當前執行的程式在當前目錄下如果不存在,windows系統會在系統中已有的一個名為path的環境變數指定的目錄中查詢。如果仍未找到,會出現以上的錯誤提示。所以進入到jdk安裝路徑\bin目錄下,執行javac,會看到javac引數提示資訊。

5、每次執行java 的工具都要進入到bin目錄下,非常麻煩。可不可以在任何目錄下都可以執行java的工具呢?

  • 根據windows系統在查詢可執行程式的原理,可以將java工具所在路徑定義到path 環境變數中,讓系統幫我們去找執行執行的程式。
  • 配置方法:
    • 我的電腦–屬性–高階系統設定–環境變數
    • 編輯path 環境變數,在變數值開始處加上java工具所在目錄,後面用“; ”和其他值分隔開即可。
    • 開啟DOS命令列,任意目錄下敲入javac。如果出現javac的引數資訊,配置成功。
    • 注:具體操作流程,參看https://www.yuque.com/nizhegechouloudetuboshu/library/rc1889

6、驗證是否成功

7、選擇合適的文字編輯器或IDE 開發

  • eclipse——https://www.eclipse.org/downloads/packages/
  • IDEA——https://www.jetbrains.com/idea/download/
  • 官網太慢,備用地址:連結:https://pan.baidu.com/s/1rnBuCPKCyunCTyNKoRY7YA,提取碼:4x3d
  • 安裝步驟:https://www.yuque.com/nizhegechouloudetuboshu/library/rc1889。

06、 開發體驗—HelloWorld

1、步驟:

  1. 將Java 程式碼編寫到副檔名為.java 的檔案中。
  • 選擇最簡單的編輯器:記事本。
  • 敲入程式碼class Test{}將檔案儲存成Test.java,這個檔案是存放java程式碼的檔案,稱為原始檔。

2、第一個Java程式

public class Test {

    public static void main(String[] args) {
    
        System.out.println("hello world");
    
    }

}

1、通過javac命令對該java 檔案進行編譯

  • 有了java原始檔,通過編譯器將其編譯成JVM可以識別的位元組碼檔案。
  • 在該原始檔目錄下,通過javac編譯工具對Test.java檔案進行編譯。
  • 如果程式沒有錯誤,沒有任何提示,但在當前目錄下會出現一個Test.class檔案,該檔案稱為位元組碼檔案,也是可以執行的java的程式。

2、通過java 命令對生成的class 檔案進行執行

  • 有了可執行的java程式(Test.class位元組碼檔案)

  • 通過執行工具java.exe對位元組碼檔案進行執行。

  • 出現提示:缺少一個名稱為main的方法。

  • 因為一個程式的執行需要一個起始點或者入口,所以在Test類中的加入public static void main(String[] args){}

  • 對修改後的Test.java原始檔需要重新編譯,生成新的class檔案後,再進行執行。

  • 發現沒有編譯失敗,但也沒有任何效果,因為並沒有告訴JVM要幫我們做什麼事情,也就是沒有可以具體執行的語句。

  • 想要和JVM來個互動,只要在main方法中加入一句System.out.println(“Hello World");因為程式進行改動,所以再重新編譯,執行即可。

07、 常見問題及解決方法

1、問題1

  • 原始檔名不存在或者寫錯
  • 當前路徑錯誤
  • 字尾名隱藏問題

2、問題2

  • 類檔名寫錯,尤其檔名與類名不一致時,要小心
  • 類檔案不在當前路徑下,或者不在classpath指定路徑下

3、問題3

  • 宣告為public的類應與檔名一致,否知編譯失敗

4、問題4

  • 編譯失敗,注意錯誤出現的行數,再到原始碼中指定位置改錯

總結:學習程式設計最容易犯的錯是語法錯誤。Java要求你必須按照語法規則編寫程式碼。如果你的程式違反了語法規則,例如:忘記了分號、大括號、引號,或者拼錯了單詞,java編譯器都會報語法錯誤。嘗試著去看懂編譯器會報告的錯誤資訊。

08、 註釋(comment)

  • 用於註解說明解釋程式的文字就是註釋。

  • Java中的註釋型別:

    • 單行註釋

      • 格式://註釋文字
    • 多行註釋

      • 格式:/* 註釋文字/*
      • 注:對於單行和多行註釋,被註釋的文字,不會被JVM(java虛擬機器)解釋執行。
        多行註釋裡面不允許有多行註釋嵌
    • 文件註釋(java特有)

      • 格式

        /**
         * @author  指定java程式的作者**
         * @version  指定原始檔的版本**
         */
         

        註釋內容可以被JDK提供的工具javadoc所解析,生成一套以網頁檔案形式體現的該程式的說明文件。

  • 提高了程式碼的閱讀性;除錯程式的重要方法。

  • 註釋是一個程式設計師必須要具有的良好程式設計習慣。

  • 將自己的思想通過註釋先整理出來,再用程式碼去體現。

09、小結第一個程式

  • Java原始檔以“java”為副檔名。原始檔的基本組成部分是類(class),如本例中的HelloWorld類。
  • Java應用程式的執行入口是main()方法。它有固定的書寫格式:
    public static void main(String[] args) {…}
  • Java語言嚴格區分大小寫。
  • Java方法由一條條語句構成,每個語句以“;”結束。
  • 大括號都是成對出現的,缺一不可。
  • 一個原始檔中最多隻能有一個public類。其它類的個數不限,如果原始檔包含一個public類,則檔名必須按該類名命名