Linux之whereis命令
695
2025-04-02
目錄
1.1?java是啥?
1.2?為什么選擇Java?
1.2.1 簡單性
1.2.2 面向對象
1.2.3 分布式(微服務)
1.2.4 健壯性
1.2.5 安全性
1.2.6 體系結構中立
1.2.7 可移植性
1.2.8 解釋型
1.2.9 高性能
1.2.10 多線程
1.2.11 動態性
1.3 Java的JDK是什么?
1.4 Java是世界上最好的語言嗎?
1.5 HelloWorld詳解
1.5.1 main函數
1.5.2?注釋
1.5.3 java三種打印方式
1.6 運行Java程序
前言:大家好我是Nick,本人現在是大二的一位專科生,我加入了比特的大家庭,現在是一位小比特,因為即將面臨明年的面試應聘,因此我現在會著手將Java完整的知識用分欄的方式展現給大家,同時也用于自主復習,歡迎各位小可愛們多多提意見哦!
1.1?java是啥?
Java是一種優秀的程序設計語言,它具有令人賞心悅目的語法和易于理解的語義。不僅如此,Java還是一個有一系列計算機軟件和規范形成的技術體系,這個技術體系提供了完整的用于軟件開發和跨平臺部署的支持環境,并廣泛應用于嵌入式系統、移動終端、企業服務器、大型機等各種場合。下面我們通過Java官方提供的數據來一起感受一 下,Java到底有多“火”。
拜見老祖宗
詹姆斯·高斯林(英語:James Gosling,1955年5月19日-),出生于加拿大,軟件專家,Java編程語言的共同創始人之一,一般公認他為“Java之父”。
1.2?為什么選擇Java?
JavaScript和Java有什么關系呢?
要說到這倆的關系,舉個例子。就相當于雷鋒和雷 峰塔的關系或者說老婆和老婆餅的關系(沒有一點關系...),最開始JavaScript叫liveScript,當時Java太火了,于是乎 liveScript更名為JavaScript借勢宣傳一波。。
1.2.1 簡單性
Java語法是C++語法的一個“純凈版本”。這里沒有頭文件、指針運算(甚至指針語法)、結構、聯合、操作符重 載、虛基類等等。不僅如此,Java開發環境遠遠超出大多數其他編程語言的開發環境。
1.2.2 面向對象
什么是面向對象? 這里我們用木匠打一個比方,一個“面向對象”的木匠始終關注的是所制作的椅子,第二位才是所使用的工具;而一個“非面向對象的”木匠首先考慮的是所使用的工具。 在Java的世界里,一切皆對象。 Java的面向對象特性與C++旗鼓相當,與C++的主要不同點在于多重繼承。在Java中,取而代之的是更簡單的接口概念。而且與C++相比,Java提供了更豐富的運行時自省功能。
1.2.3 分布式(微服務)
Java有豐富的例程庫,用于處理像HTTP和FTP之類的TCP/IP協議。Java應用程序能夠通過URL打開和訪問網絡上的對象,其便捷程度就好像訪問本地文件一樣。
1.2.4 健壯性
Java與C++最大的不同在于Java采用的指針模型可以消除重寫內存和損壞數據的可能性(對于曾經花費幾個小時來 檢查由于指針bug而引起內存沖突的人來說,一定很喜歡Java的這一特性)。不僅如此,Java編譯器能夠檢測許多 在其他語言中僅在運行時才能夠檢測出來的問題。
1.2.5 安全性
Java適用于網絡/分布式環境。為了達到這個目標,在安全性方面投入了大量的精力。使用Java可以構建防病毒、防 篡改的系統 從一開始,Java就設計成能夠防范常見的各種攻擊:
運行時堆棧溢出。蠕蟲和病毒常用的攻擊手段。
破壞自己進程空間之外的內存。
未經授權讀寫文件
1.2.6 體系結構中立
編譯器生成一個體系結構中立的目標文件格式,這是一種編譯過的代碼,只要有Java運行時系統,這些編譯后的代 碼就可以在許多處理器上運行。Java編譯器通過生成與特定計算機體系結構無關的字節碼指令來實現這一特性。精 心設計的字節碼不僅可以很容易的在任何機器上解釋執行,而且還可以動態地翻譯成本地機器代碼。
1.2.7 可移植性
與C/C++不同,Java規范中沒有“依賴具體實現的地方”。基本數據類型的大小以及有關運算都做了明確的說明。例 如,Java中的int永遠是32位的整數,而在C/C++中,int可能是16位整數、32位整數,也可能是編譯器提供商指定 的其他大小。在Java中,數據類型具有固定的大小,這消除了代碼移植時令人頭疼的主要問題。
1.2.8 解釋型
Java解釋器可以在任何移植了解釋器的機器上執行Java字節碼。由于鏈接是一個增量式且輕量級的過程。所以開發過程也變得更加快捷,更加具有探索性。
1.2.9 高性能
盡管對解釋后的字節碼性能已經比較滿意,但在有些場合下可能需要更加高效的性能。字節碼可以(在運行時刻) 動態的翻譯成對應運行這個應用的特定cpu的機器碼。
1.2.10 多線程
Java在當時很超前。它是第一個支持并發程序設計的主流語言。多線程可以帶來更好的交互響應和實時行為。并發 程序設計絕非易事,但是Java在這方面表現出色,可以很好的管理這個工作。
1.2.11 動態性
Java與C/C++相比更加具有動態性。它能夠適應不斷發展的環境。庫中可以自由的添加新方法和實例變量,而對客 戶端沒有任何影響。在Java中找出運行時類型信息十分簡單(反射的特性,后續會學到)
1.3 Java的JDK是什么?
JDK是 Java 語言的軟件開發工具包,主要用于移動設備、嵌入式設備上的java應用程序。JDK是整個java開發的核心,它包含了JAVA的運行環境,JAVA工具和JAVA基礎的類庫。
JDK版本越高越好嘛?
NO,NO,NO,并不是版本越高越好,因為大部分公司使用的是1.8版本,不會因為JDK新版本更新了,然后將你的代碼全部適配到新版本。
JDK怎么安裝?
進入軟件公司的第一天,你需要干啥呢?
安裝軟件,配置環境!
你的領導只會對你說:"我們用的XX軟件"!
你再問?信不信我打你!
由此可見,學好配置環境有多重要!
視頻教程
Linux下JDK的安裝(多種方式)
Mac下JDK的安裝 Java 軟件
Java 軟件(點擊獲取)?提取碼:r471
史上最簡單安裝教程(戳我查看)
1.4 Java是世界上最好的語言嗎?
不是,因為在每個領域都有更合適的編程語言。
C 語言無疑是現代計算機軟件編程語言的王者,幾乎所有的操作系統都是 C 語言寫成的。C++ 是面向對象的 C 語 言,一直在不斷的改進。
JavaScript 是能運行在瀏覽器中的語言,豐富的前端界面離不開 Javascript 的功勞。近年來的 Node.js 又在后端占 有一席之地。
Python 用于系統管理,并通過高性能預編譯的庫,提供 API 來進行科學計算,文本處理等,是 Linux 必選的解釋 性語言。
Ruby 強于 DSL(領域特定語言),程序員可以定義豐富的語義來充分表達自己的思想。
Erlang 就是為分布式計算 設計的,能保證在大規模并發訪問的情況下,保持強壯和穩定性。
Go 語言內置了并發能力,可以編譯成本地代碼。當前新的網絡相關項目,很大比例是由 Go 語言編寫的,如 Docker、Kubernetes 等。
編寫網頁用 PHP,函數式編程有 Lisp/Scala,編寫 iOS 程序有 Swift/Objective-C。 一句話概括,能留在排行榜之上的語言,都是好的語言,在其所在的領域能做到最好。
那么,Java 語言到底有什么優勢可以占據排行榜第一的位置呢?
其一,語法比較簡單,學過計算機編程的開發者都能快速上手。
其二,在若干了領域都有很強的競爭力,比如服務端編程,高性能網絡程序,企業軟件事務處理,分布式計算, Android 移動終端應用開發等等。
1.5 HelloWorld詳解
1.5.1 main函數
//public: 訪問修飾限定符。后期的文章會詳細介紹 //class:關鍵字,用來定義一個類,類型【抽象的】 //HelloWorld 類的名稱 //String[] 形式參數:數組 //下面的代碼是java中main函數的固定寫法,函數也稱為方法 public class HelloWorld { public static void main(String[] args) { System.out.println("HelloWorld!"); } }
注意事項:
一個java文件中,只能有一個public類
類名和文件名相同
編程規范建議,左括號是緊跟著當前行的
類名一定要采用大駝峰的形式命名
有人知道args是什么嘛?
下面先來看幾張圖~
會輸出什么呢?
貌似是空的誒?但真的是空的嘛?
接著我輸入Nick is very outgoing
神奇的事情發生了
可見args是運行時的命令行參數
總結:
通過上述代碼,我們可以看到一個完整的Java程序的結構,Java程序的結構由如下三個部分組成:
源文件(擴展名為*.java):源文件帶有類的定義。類用來表示程序的一個組件,小程序或許只會有一個類。類的內容必須包含在花括號里面。
類:類中帶有一個或多個方法。方法必須在類的內部聲明。
方法:在方法的花括號中編寫方法應該執行的語句。
類存在于源文件里面;方法存在于類中;語句存在于方法中。
1.5.2?注釋
注釋是為了讓代碼更容易被讀懂而附加的描述信息. 不參與編譯運行, 但是卻非常重要。時刻牢記! 代碼寫出來是為了給人看的, 更是為了給三個月后的你自己看的。
public class HelloWorld { /** *文檔注釋:類或者方法的前面 */ public static void main(String[] args) { for (int i = 0; i < args.length; i++) { //System.out.println(args[0]); 行注釋 /* 塊注釋 System.out.println(args[0]); System.out.println(args[1]); System.out.println(args[2]); System.out.println(args[3]);*/ System.out.println(args[i]); } System.out.println("HelloWorld"); } }
基本規則
Java中的注釋主要分為以下三種
單行注釋:// 注釋內容(用的最多)
多行注釋:/* 注釋內容*/(不推薦)
文檔注釋: /** 文檔注釋 */(常見于方法和類之上描述方法和類的作用),可用來自動生成文檔。
注釋規范
內容準確: 注釋內容要和代碼一致, 匹配, 并在代碼修改時及時更新。
篇幅合理: 注釋既不應該太精簡, 也不應該長篇大論。
使用中文: 一般中國公司都要求使用中文寫注釋, 外企另當別論。
積極向上: 注釋中不要包含負能量(例如領導SB);
接下來跑跑代碼看!
我擦!翻車了?不可映射的字符?!
這咋整呢?(戳我查看)
1.5.3 java三種打印方式
public class HelloWorld{ /** *文檔注釋:類或者方法的前面 */ public static void main(String[] args) { System.out.print("打印不換行"); System.out.println("打印換行"); System.out.printf("%d\n",10); } }
效果顯示
1.5.4 關鍵字
關鍵字是 Java 中的一些具有特定含義的單詞
定義的變量名不能和關鍵字沖突
1.6 運行Java程序
沒有編譯器代碼咋跑起來呢?
.java文件:源代碼目前還在磁盤上,里頭就是一大堆的字母,但是你沒有編譯器怎么編譯?
編譯之后會生成.class二進制文件,包含了當前類中的信息!
生成了.class文件了不起啊又能咋?
咋運行?java HelloWorld?就能運行了
為啥不是一個文件對應一個字節碼文件?
用到哪個類就加載哪個,不會一股腦兒全部運行!
咱就先用DOS系統跑一波HelloWorld!
必要的形式感還是要滴!
為啥記事本和Nick的不一樣呢?
因為我使用的是Notepad++!
普通記事本當然也可以編輯呀~
1.新建一個HelloWorld.txt文件(文件名和類名保持一致),在里面編輯如下內容:
public class HelloWorld { public static void main(String[] args) { System.out.println("HelloWorld!"); } }
2.將文件名后綴由.txt改成.java
--->
我沒有后綴啊?怎么改?
其實很簡單,Win+E 打開資源管理器
選擇查看
勾選文件拓展名即可
3.咱們要開始編譯啦
方法1:找到你文件創建的目錄下,輸入cmd,回車!(我是放在桌面上的)
方法2:Win+R 輸入cmd回車
輸入cd Desktop(Nick是將HelloWorld.java放在桌面上的)
4.在DOS命令界面輸入javac HelloWorld.java,然后回車,生成.class二進制文件
5.運行,字節碼文件生成后,輸入java HelloWorld 回車,看!出結果了!
原理總結
JVM:java虛擬機,跑java程序的!這個JVM實際上是一個軟件,由C/C++寫的,編譯后的.class跑到了JVM里,類似用軟件實現了一個硬件(電腦)。JVM把對應的字節碼拉取過來,然后執行。
類名和文件名一定要保持一致!
問題:我好像沒有安裝JVM吧?
JDK:java開發者工具
JRE:java運行環境
JVM:java虛擬機
口號:一次編譯(字節碼文件) 到處運行(字節碼文件)? 只要你安裝好了JDK!
設想:只要我通過javac 文件名編譯來了java文件,生成了.class文件以后,那么.class文件發給別人,只要對方裝了JDK,他就能直接運行這個文件,因為JDK包含了JRE和JVM!
總結:
Java是一門半編譯型、半解釋型語言。先通過javac編譯程序把源文件進行編譯,編譯后生成的.class文件是由字節 碼組成的平臺無關、面向JVM的文件。最后啟動java虛擬機來運行.class文件,此時JVM會將字節碼轉換成平臺能夠 理解的形式來運行。
JRE(Java Runtime Environment):Java運行時環境,包含了JVM,Java基礎類庫。是使用Java語言編寫程 序運行的所需環境。
JDK(Java Development Kit):Java開發工具包,提供給Java程序員使用,包含了JRE,同時還包含了編譯 器javac與自帶的調試工具Jconsole、jstack等。
Java程序運行需要經過編譯,運行兩個階段。
編譯:javac 命令
運行:java 命令
編譯器Idea的安裝
IDEA 全稱 Intellij IDEA,是java編程語言開發的集成環境。IntelliJ在業界被公認為最好的java開發工具,尤其在智能代碼助手、代碼自動提示、重構、JavaEE支持、各類版本工具(git、svn等)、JUnit、CVS整合、代碼分析、 創新的GUI設計等方面的功能可以說是超常的。
eclipse,MyEclipse不使用,現在用的已經比較少了,vscode不建議新手使用,因為配置起來十分麻煩【大號的記事本而已】
IDEA安裝(戳我查看)
視頻教程
喜歡Nick的文章,
感謝關注加
Java JVM 嵌入式
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。