【Java SE】01. 初識Java

1. 認識Java

Java是一種優秀的程序設計語言,它具有令人賞心悅目的語法和易于理解的語義。Java還是一個有一系列計算機軟件和規范形成的技術體系,這個技術體系提供了完整的用于軟件開發和跨平臺部署的支持環境,并廣泛應用于嵌入式系統、移動終端、企業服務器、大型機等各種場合。

1.1 Java的發展歷史

Java 語言源于 1991 年 4 月,Sun 公司 James Gosling?博士領導的綠色計劃(Green Project) 開始啟動,此計劃最初的目標是開發一種能夠在各種消費性電子產品(如機頂盒、冰箱、收音機等)上運行的程序架構。這個就是Java的前身: Oak (得名與Java創始人James Gosling辦公室外的一棵橡樹),但由于這些智能化家電的市場需求沒有預期的高,Sun公司放棄了該項計劃。隨著1995年代互聯網的發展,Sun公司看見Oak在互聯網上應用的前景,于是改造了Oak,于1995年5月以Java的名稱正式發布,并提出“Write once, Run anywhere" 的口號。

1.2 Java的語言特性

??簡單性
Java語法是C++語法的一個“純凈版本”,相當于對C++做了一個減法。這里沒有頭文件、指針運算(甚至指針語法)、結構、聯合、操作符重載、虛基類等等。不僅如此,Java開發環境遠遠超出大多數其他編程語言的開發環境。

??面向對象
在Java的世界里,一切皆對象。比如:人、狗、手機、電腦等都是對象。所謂面向對象,就是依靠對象之間的交互來完成事情,比如:人用手機網上購物,狗吃骨頭。Java的面向對象特性與C++旗鼓相當,與C++的主要不同點在于多重繼承。在Java中,取而代之的是更簡單的接口概念。而且與C++相比,Java提供了更豐富的運行時自省功能。

??分布式(微服務)
Java有豐富的例程庫,用于處理像HTTP和FTP之類的TCP/IP協議。Java應用程序能夠通過URL打開和訪問網絡上的對象,其便捷程度就好像訪問本地文件一樣。

??健壯性
Java與C++最大的不同在于Java采用的指針模型可以消除重寫內存和損壞數據的可能性(對于曾經花費幾個小時來檢查由于指針bug而引起內存沖突的人來說,一定很喜歡Java的這一特性)。不僅如此,Java編譯器能夠檢測許多在其他語言中僅在運行時才能夠檢測出來的問題。

??安全性
Java適用于網絡/分布式環境。為了達到這個目標,在安全性方面投入了大量的精力。使用Java可以構建防病毒、防篡改的系統。從一開始,Java就設計成能夠防范常見的各種攻擊:運行時堆棧溢出;蠕蟲和病毒常用的攻擊手段;破壞自己進程空間之外的內存;未經授權讀寫文件……

??體系結構中立
編譯器生成一個體系結構中立的目標文件格式,按照該格式規范生成的文件,只要有Java運行時系統,這些編譯后的代碼就可以在許多處理器上運行。而且其他語言編寫的程序,在編譯后如果能夠嚴格按照字節碼文件的規范生成.class文件,也可以在JVM上運行。
Java編譯器通過生成與特定計算機體系結構無關的字節碼指令來實現這一特性。精心設計的字節碼不僅可以很容易的在任何機器上解釋執行,而且還可以動態地翻譯成本地機器代碼。這就是為什么可以:“Wrice once,Run anywhere”。

??可移植性
與C/C++不同,Java規范中沒有“依賴具體實現的地方”。基本數據類型的大小以及有關運算都做了明確的說明。例如,Java中的int永遠是32位的整數,而在C/C++中,int可能是16位整數、32位整數,也可能是編譯器提供商指定的其他大小。在Java中,數據類型具有固定的大小,這消除了代碼移植時令人頭疼的主要問題。

??解釋性
Java為了實現與平臺無關,自己維護了一套基于棧架構的指令集,Java源代碼經過編譯之后,字節碼文件中的指令就是按照自己的指令集來組織的,但是在具體硬件環境中運行時,系統并不能識別,因為Java程序在執行時,Java解釋器會逐條的將字節碼文件中的指令翻譯成CPU的指令集。

??高性能
邊解釋邊執行,垃圾會說等導致了Java代碼運行效率偏低,近年來JVM也在不斷的優化,比如:JIT(即時編譯器),熱點代碼探測,讓Java程序的執行效率大幅提高,在有些場合不亞于C/C++。

??多線程
Java在當時很超前。它是第一個支持并發程序設計的主流語言。多線程可以帶來更好的交互響應和實時行為。并發程序設計絕非易事,但是Java在這方面表現出色,可以很好的管理這個工作。

??動態性
Java與C/C++相比更加具有動態性。它能夠適應不斷發展的環境。庫中可以自由的添加新方法和實例變量,而對客戶端沒有任何影響。在Java中找出運行時類型信息十分簡單(反射的特性,后續會學到)

Java不僅僅是一門編程語言,也是一個由一系列計算機軟件和規范組成的技術體系。

1.3 Java 開發環境的安裝

1. 安裝JDK
目前來說,JDK8或者JDK17是比較穩定的。
我們進入JDK17官網進行下載。

下載好之后安裝到指定路徑即可。?

2. 配置環境變量
簡單來說,將JDK的路徑添加到path中即可。
?

3. 檢驗JDK是否安裝成功?
?

4. 安裝idea
這個也是直接去idea的idea官網下載即可。

2. 第一個java程序

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

Java是一門半編譯型、半解釋型語言。先通過 javac 編譯程序把源文件進行編譯,編譯后生成的 .class 文件是由字節碼組成的平臺無關、面向JVM的文件。最后啟動java虛擬機來運行 .class 文件,此時JVM會將字節碼轉換成平臺能夠理解的形式來運行。

PS D:\caryon\code\java> javac Test.java
PS D:\caryon\code\java> java Test
Hello world

當然,以后的代碼編寫與運行我們可以使用idea來完成。

注意:在一個源文件中只能有一個public修飾的類,而且源文件名字必須與public修飾的類名字相同。

JDK、JRE、JVM之間的關系

JDK(Java Development Kit):Java開發工具包,提供給Java程序員使用,包含了JRE,同時還包含了編譯器javac與自帶的調試工具Jconsole、jstack等。

JRE(Java Runtime Environment):Java運行時環境,包含了JVM,Java基礎類庫。是使用Java語言編寫程 序運行的所需環境。

JVM:Java虛擬機,運行Java代碼

3. 注釋

Java中的注釋主要分為以下三種:
??單行注釋:// 注釋內容(用的最多)
??多行注釋:/* 注釋內容*/(不推薦)
??文檔注釋: /** 文檔注釋 */(常見于方法和類之上描述方法和類的作用),可以被javadoc工具解析,生成一套以網頁文件形式體現的程序說明文檔

注意:
1. 多行注釋不能嵌套使用

2. 不論是單行還是多行注釋,都不參與編譯,即編譯之后生成的 .class 文件中不包含注釋信息。

/**
文檔注釋:@version v1.0.0@author will作用HelloWorld類,入門第一個程序練習
*/
public class HelloWorld{
/*
多行注釋:
1. main方法是Java程序的入口方法
2. main函數的格式是固定的,必須為public static void main(String[] args)
*//**main方法是程序的入口函數@param args 命令行參數。*/public static void main(String[] args){// 單行注釋:System.out.println是Java中標準輸出,會將內容輸出到控制臺System.out.println("Hello World");}
}

在cmd中,還可以直接使用javadoc工具從Java源碼中抽離出注釋,如:

javadoc -d myHello -author -version -encoding UTF-8 -charset UTF-8 HelloWorld.java

4. 標識符與關鍵字

在程序中,由用戶給類名、方法名或者變量所取的名字稱為標識符。標識符中可以包含字母、數字、下劃線和 $ 符號等等。 需要注意的是標識符不能以數字開頭,也不能是關鍵字,且嚴格區分大小寫。

一般來說標識符是可以由用戶自由編輯的,但是在面對多人協同時有如下命名軟規則:

類名:每個單詞的首字母大寫(大駝峰)

方法名:首字母小寫,后面每個單詞的首字母大寫(小駝峰)

變量名:與方法名規則相同

至于關鍵字的內容,就和C語言一樣,后面逐次介紹

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/98093.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/98093.shtml
英文地址,請注明出處:http://en.pswp.cn/web/98093.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

解鎖倉儲智能調度、運輸路徑優化、數據實時追蹤,全功能降本提效的智慧物流開源了

AI 視頻監控平臺:全鏈路協同驅動的智能監控解決方案AI 視頻監控平臺是一款融合高性能功能與輕量化操作的實時算法驅動型視頻監控系統,其核心愿景在于深度破除不同芯片廠商間的技術壁壘,省去冗余重復的適配環節,最終達成芯片、算法…

冒泡排序與選擇排序以及單鏈表與雙鏈表

1. 冒泡排序(Bubble Sort) 1. 原理 冒泡排序是一種 簡單的排序算法,通過 兩兩比較相鄰元素,把較大的元素逐漸 “冒泡” 到數組末尾。 思路: 從數組頭開始,比較相鄰兩個元素。 如果前一個比后一個大&…

Python實現計算點云投影面積

本次我們分享一種基于 Open3D 的快速、穩健方法,用于從激光點云中自動提取“地面”并計算其投影面積。算法先自適應估計地面高程,再將地面點投影至水平面,隨后用凸包或最小外接矩形求取面積。整個流程無需人工干預,單文件即可運行…

AXI4 協議

一、AXI4簡介AXI4(Advanced eXtensible Interface 4)是ARM公司推出的高性能片上總線協議,屬于AMBA(Advanced Microcontroller Bus Architecture)標準的一部分。它專為高帶寬、低延遲的片上通信設計,廣泛應用…

《餓殍:明末千里行》Switch版試玩發布 3月13日發售

使用jQuery的常用方法與返回值分析 jQuery是一個輕量級的JavaScript庫,旨在簡化HTML文檔遍歷和操作、事件處理以及動畫效果的創建。本文將介紹一些常用的jQuery方法及其返回值,幫助開發者更好地理解和運用這一強大的庫。 1. 選擇器方法 jQuery提供了多種…

[特殊字符] 認識用戶手冊用戶手冊(也稱用戶指南、產品手冊)是通過對產品功能的清

一份優秀的用戶手冊能有效降低用戶的使用門檻,提升用戶體驗和工作效率。下面我將為你梳理編寫用戶手冊的核心要點、步驟和技巧。📖 認識用戶手冊用戶手冊(也稱用戶指南、產品手冊)是??通過對產品功能的清晰解釋,為特…

蘋果軟件代碼混淆,iOS混淆、iOS加固、ipa安全與合規取證注意事項(實戰指南)

在移動軟件交付與合規審計中,蘋果軟件代碼混淆已成為保護知識產權與用戶數據的常規手段。但混淆帶來的不僅是逆向難度的提升,也會觸發崩潰取證、符號化(symbolication)、審計合規與法律證據保存等問題。本文從工程與合規雙視角出發…

Redis框架詳解

目錄 1. redis是什么 主要特點 2. redis中存儲的數據類型 2.1 String類型 2.2 List類型 2.3 Hash類型 2.4 Set類型 2.5 Zset類型 2.6 其它類型 3.redis高可用框架 1. redis是什么 Redis 是一個開源的、基于內存的數據結構存儲系統,是 Remote Dictionary…

每日隨機展示10個wordpress置頂文章

WordPress 置頂文章是博主根據自己的需要設置的&#xff0c;通常用于展示重要或熱門的文章。 以下是一個示例代碼&#xff0c;用于在 WordPress 主題中展示 10 個置頂文章&#xff1a; <?php // 查詢置頂文章 $sticky get_option(sticky_posts); $args array(post__in …

金融工程vs金融數學:誰更貼近量化交易?

在金融行業邁向高度數字化的今天&#xff0c;量化交易已成為頂尖金融機構的核心競爭力之一。它以數學模型為基礎&#xff0c;借助編程技術實現策略自動化&#xff0c;在高頻、中低頻、套利、因子投資等多個領域展現出強大生命力。對于有志于此的大學生而言&#xff0c;選擇一個…

實測AI Ping,一個大模型服務選型的實用工具

作為一名長期奮戰在一線的AI應用工程師&#xff0c;我在技術選型中最頭疼的問題就是&#xff1a;“這個模型服務的真實性能到底如何&#xff1f;” 官方的基準測試總是在理想環境下進行&#xff0c;而一旦投入使用&#xff0c;延遲波動、吞吐下降、高峰期服務不可用等問題就接踵…

深信服軟件:aTrustAgent異常占用問題處理

問題&#xff1a;aTrustAgent占用CPU 大早上開電腦&#xff0c;風扇轉的飛起&#xff0c;任務管理器看&#xff0c;發現是有幾個 aTrustAgent 進程搞得鬼。 印象中&#xff0c;好像沒有裝過這個軟件&#xff0c;搜了下&#xff0c;是深信服的軟件&#xff0c;不知道是不是裝哪…

基于國產銀河麒麟服務器SP3項目實戰(Nginx+Keepalive)實現高可用負載均衡

一、環境準備 192.168.113.11NginxKeepalive(Master)192.168.113.22Nginxkeepalive(Backup)192.168.113.33Nginx(web服務器)192.168.113.44 Nginx(服務器&#xff09; 二、環境搭建準備 2.1 Nginx源碼編譯安裝 參考作責之前發布《Nginx源碼編譯安裝》https://blog.csdn.net…

K近鄰:從理論到實踐

K近鄰&#xff1a;從理論到實踐 文章目錄K近鄰&#xff1a;從理論到實踐1. 核心思想2. 距離度量3. k的選擇與誤差分析3.1 近似誤差3.2 估計誤差3.3 總誤差4. kd樹的構造與搜索4.1 kd樹的構造4.2 kd樹的搜索5. 總結6. K近鄰用于iris數據集分類6.1加載數據6.2加載模型并可視化1. …

Dokcer的安裝(ubuntu-20.04.6):

Dokcer的安裝(ubuntu-20.04.6)&#xff1a; 1.添加Docker倉庫 #更新本地軟件包索引&#xff0c;獲取最新的軟件包信息 sudo apt-get update #安裝依賴包 sudo apt-get install -y \ ca-certificates \ curl \ gnupg \ lsb-release #創建密鑰存儲目錄 sudo mkdir -p /etc/apt/…

CT圖像重建原理

一、CT到底測了什么&#xff1f;硬件動作X 射線源與探測器陣列對置&#xff0c;圍著物體旋轉。每轉到一個角度 θ&#xff08;也叫一個視角 / view&#xff09;&#xff0c;源發射扇形/平行的射線束&#xff0c;探測器陣列上有很多“通道/像素/bin”&#xff08;記作索引 n&…

【pycharm】 ubuntu24.04 搭建uv環境

通過uv配置python環境 一直是conda環境 現在有個開源項目說用uv更快更好 所以在pycharm搞起。 一開始在在一個conda項目的里面某個項目里搞 發現會被conda 環境影響。 導致deepseed 安裝不了。 python 環境不對 # NOTE: We must explicitly request them as `dependencies` abo…

從軟件工程角度談企業管理

從軟件工程角度談企業管理企業管理&#xff0c;本質上是人與人之間的博弈。 管理的最大難題&#xff0c;不是定目標、不是寫流程&#xff0c;而是&#xff1a;如何讓個體的利益最大化路徑&#xff0c;與組織的整體目標一致&#xff1f; 這就是經濟學里的“激勵相容”。 在互聯網…

vue3 實現前端生成水印效果

vue3 實現前端生成水印效果首先一點哈&#xff0c;就是單純web前端生成水印只能作為警示使用&#xff0c;如果享徹底防住幾乎是不可能的&#xff0c;有無數種方式去掉web前端生成的水印&#xff0c;所以這種方式只當是一個君子協議吧。編寫水印組件 首先直接把這部分封裝成一個…

Armonia Mall超級數字生態WEB3商城的引領者

Armonia Mall是一個基于Web3技術的超級數字生態商城&#xff0c;旨在打造全球首家Web3數字普惠商城&#xff0c;幫助千萬行銷人實現數字生態創業&#xff0c;讓全球一億家庭共享數字經濟紅利。 Armonia Mall商城創始人&#xff1a;石玉華Armonia Mall七大超級機制&#xff08;模…