Java基礎知識篇——Java基本介紹

来源:https://www.cnblogs.com/baiye123/p/18066835
-Advertisement-
Play Games

一、什麼是 Java Java 是 Sun Microsystems 於 1995 年首次發佈的一種編程語言和計算平臺。編程語言還是比較好理解的,什麼是計算平臺呢? 計算平臺是電腦中運行應用程式(軟體的環境),包括硬體環境和軟體環境。一般系統平臺包括一臺電腦的硬體體繫結構,操作系統、運行時庫。 Ja ...


一、什麼是 Java

Java 是 Sun Microsystems 於 1995 年首次發佈的一種編程語言和計算平臺。編程語言還是比較好理解的,什麼是計算平臺呢?

計算平臺是電腦中運行應用程式(軟體的環境),包括硬體環境和軟體環境。一般系統平臺包括一臺電腦的硬體體繫結構,操作系統、運行時庫。

Java 是快速,安全和可靠的。從筆記本電腦到數據中心,從游戲機到科學超級電腦,從手機到互聯網,Java 無處不在!Java 分三個版本

  • JavaSE (J2SE) (Java2 Platform Standard Edition java平臺標準版)
  • JavaEE (J2EE) (Java2 Platform,Enterprise Edition, java平臺企業版)
  • JavaME (J2ME) (Java 2 Platform Micro Edition, java平臺微型版)

二、Java 的特點

1、Java 是一門面向對象的編程語言

什麼是面向對象?**面向對象 (Object Oriented) **是一種軟體開發思想。他是對現實世界的一種抽象,面向對象會把相關數據和方法組織成為一個整體來看待

相對的另外一種開發思想就是面向過程的開發思想,什麼面向過程? 面向過程 (Procedure0riented) 是一種以過程為中心的編程思想。舉個例子:比如你是個學生,你每天去上學需要做幾件事情?
起床、穿衣服、洗臉刷牙,吃飯,去學校。一般是順序性的完成一系列動作。

class student{
    void student_wakeUp(){...}
    void student_cloth(){...}
    void student_wash(){...}
    void student_eating(){...}
    void student_gotoSchool(){...}
}

而面向對象可以把學生進行抽象,所以這個例子就會變為

class student{
    void wakeUp(){...}
    void cloth(){...}
    void wash(){...}
    void eating(){...}
    void gotoSchool(){...}
}

可以不用嚴格按照順序來執行每個動作。這是特點一

  • Java 摒棄了C++中難以理解的多繼承、指針、記憶體管理等概念;不用手動管理對象的生命周期,這是特點二

  • Java 語言具有功能強大和簡單易用的兩個特征,現在的企業級開發,快速敏捷開發,尤其是各種框架的出現,使Java 成為一門越來越火的一門語言,這是特點三。

  • Java 是一門靜態語言,靜態語言是指就是在編譯期間就能夠知道數據類型的語言,在運行前就能夠檢查類型的正確性,一旦類型確定後就不能再更改,比如下麵這個例子

    public void foo(){
        int x = 5;
        boolean b = x;
    }
    

    靜態語言主要有 Pascal, Perl,C/C++,JAVA,C#,Scala

相應的,動態語言沒有任何特定的情況需要指定變數的類型,再運行時確定的數據類型。比如有 Lisp,Perl, Python、Ruby、JavaScript 等。

從設計的角度來說,所有的語言都是設計用來把人類可讀的代碼轉換為機器指令。動態語言是為了能夠人程式員提高編碼效率,因此你可以使用更少的代碼來實現功能。靜態語言設計是用來讓硬體執行的更高效,因此需要程式員編寫準確無誤的代碼,以此讓你的代碼儘快的執行。從這個角度上來說,靜態語言的執行效率要比動態語言高,速度更快。這是特點四。

2、Java 具有平臺的獨立性和可移植性

Java 有一句非常著名的口號: Write once,run anywhere ,也就是一次編寫、到處運行。為什麼 Java 能夠吹出這種牛批的口號來?核心就是 **JVM **。我們知道,電腦應用程式和硬體之間會屏蔽很多細節,它們之間依靠操作系統完成調度和協調,大致的體繫結構如下

01

那麼加上 Java 應用、JVM 的體繫結構會變為如下

02

Java 是跨平臺的,已編譯的 Java 程式可以在任何帶有 JVM 的平臺運行,你可以在 Windows 平臺下編寫代碼,然後拿到 Linnx 平臺下運行,該如何實現呢

首先你需要在應用中編寫 Java 代碼;

Eclipse 或者 javac 把 Java 代碼編譯為 .class 文件

然後把你的 .class 文件打包成 .jar 文件

然後你的 .jar 文件就能夠在 Windows 、Mac OS X、Linux 系統下運行了。不同的操作系統有不同的 JVM 實現,切換平臺時,不需要再次編譯你的 Java 代碼了。這是特點五

3、Java 能夠容易實現多線程

Java 是一門高級語言,高級語言會對用戶屏蔽很多底層實現細節。比如 Java 是如何實現多線程的。從操作系統的角度來說,實現多線程的方式主要有下麵這幾種

在用戶空間中實現多線程

在內核空間中實現多線程

在用戶和內核空間中混合實現線程

而我認為 Java 應該是在 用戶空間 實現的多線程的,內核是感知不到 Java 存在多線程機制的。這是特點六

4、Java 具有高性能

我們編寫的代碼,經過 javac 編譯器編譯稱為 位元組碼(bytecode),經過 JVM 內嵌的解釋器將位元組碼轉換為機器代碼,這是解釋執行,這種轉換過程效率較低。但是部分 JVM 的實現比如 Hotspot JVM 都提供了 **JIT(Just-In-Time) **編譯器,也就是通常所說的動態編譯器,JIT 能夠在運行時將熱點代碼編譯機器碼,這種方式運行效率比較高,這是編譯執行。所以 Java 不僅僅只是一種解釋執行的語言。這是特點七。

5、Java 語言具有強壯性

Java 的強類型機制、異常處理、垃圾的自動回收集等是 Java 程式強壯性的重要保證,這也是 Java 與 C 語言的重要區別

6、很容易開發分散式項目

Java 語言支持 Internet 應用的開發,Java 中有 net api,它提供了用於網路應用編程的類庫,包括URL、URLConnection、Socket、ServerSocket等。Java的 RMI(遠程方法激活) 機制也是開發分散式應用的重要手段。這是特點九。

三、Java 開發環境

1、JDK

JDK(Java Developmet Kir)稱 Java 開發包或 Java 開發工具,是一個編寫 Java 的 Applet小程式和應用程式的程式開發環境。JDK 是整個Java的核心,包括了 Java運行環境(Java Runtime Environment),一些 Java 工具Java 的核心類庫(Java API)

03

我們可以認真研究一下這張圖,它幾乎包括了 Java 中所有的概念,我使用的是 jdk1.8 ,可以點進去 Description of Java Conceptual Diagram , 可以發現這裡麵包括了所有關於 Java 的描述

Oracle 提供了兩種 Java 平臺的實現,一種是我們上面說的 JDK,Java 開發標準工具包,一種叫 JRE,叫做 Java Runtime Environment,Java 運行時環境。JDK 的功能要比 JRE 全很多。

2、JRE

JRE 是個運行環境,JDK 是個開發環境。因此寫 Java 程式的時候需要 JDK,而運行 Java 程式的時候就需要 JRE。而 JDE 裡面已經包含了 JRE。因此只要安裝了了 JDK,就可以編輯 Java 程式,也可以正常運行 Java 程式。但由於 JDK 包含了許多與運行無關的內容,占用的空間較大,因此運行普通的 Java 程式無需安裝 JDK,只需要安裝 JRE 即可。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、問題闡述 有的時候我們需要控制非同步函數的執行順序,比如a方法中如果要用到非同步函數b方法的請求結果,就需要進行順序控制,否則a函數先執行就會導致找不到數據直接報錯。 二、方法 1.非同步控制 1.1.async,await等做非同步控制 1.2修改函數放置位置達到非同步控制效果(我遇到的情況無效,但是確 ...
  • 網站: 即時熱點 - 正在發生的事 (Solo 社區投稿) 簡介: 一個熱門信息聚合站,幫助您輕鬆瞭解正在發生的事。 描述: 即時熱點是一個熱門信息聚合站,彙集來自百度、微博、頭條、知乎、抖音、快手等多個主流平臺的熱門話題,幫助您輕鬆瞭解正在發生的事。無需跳轉多個平臺,即刻瀏覽最新、最熱、最有趣的話 ...
  • 前言 我們每天寫的vue代碼都是寫在vue文件中,但是瀏覽器卻只認識html、css、js等文件類型。所以這個時候就需要一個工具將vue文件轉換為瀏覽器能夠認識的js文件,想必你第一時間就想到了webpack或者vite。但是webpack和vite本身是沒有能力處理vue文件的,其實實際背後生效的 ...
  • 過濾器和攔截器的辨析 介紹 過濾器和攔截器都是為了在請求到達目標處理器(Servlet或Controller)之前或者之後插入自定義的處理邏輯 過濾器: 遵循AOP(面向切麵編程)思想實現,基於Servlet規範提供的Filter介面,它是位於客戶端請求與伺服器響應之間的一個組件,依賴於Servle ...
  • 什麼是函數回調? 介紹 函數回調是一種編程概念,它描述的是這樣一個過程:一個函數(稱為回調函數)作為參數傳遞給另一個函數(稱為調用函數),當滿足一定條件或者在某個特定時刻,調用函數會調用傳遞過來的回調函數。這種機制允許程式員在編寫代碼時,能夠在不同的上下文中重用函數,同時也能實現非同步處理、事件驅動編 ...
  • 是的,\t 是指製表符(tab),它通常用作欄位分隔符在 TSV(Tab-Separated Values)格式的文件中。TSV是一種簡單的文本格式,它使用製表符來分隔每一列中的值,而每一行則代表一個數據記錄。 TSV文件例: ID\tName\tAge\tCity 1\tJohn Doe\t28\ ...
  • 一、基礎知識 1、Lucene 是什麼 Lucene 是一個本地全文搜索引擎,Solr 和 ElasticSearch 都是基於 Lucene 的封裝 Lucene 適合那種輕量級的全文搜索,我就是伺服器資源不夠,如果上 ES 的話會很占用伺服器資源,所有就選擇了 Lucene 搜索引擎 2、倒排索 ...
  • Java HashMap HashMap 是一種哈希表,它存儲鍵值對。鍵用於查找值,就像數組中的索引一樣。HashMap 的優勢在於它可以使用任何類型作為鍵,並且查找速度很快。 創建 HashMap // 導入 HashMap 類 import java.util.HashMap; public c ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...