初識Java--開啟我的Java學習之旅

目錄

  • 一、JAVA語言概述
  • 二、JAVA語言的重要性
    • 2.1語言使用廣泛程度
    • 2.2工作領域
    • 2.3在校招崗位的需求
    • 2.4 java語言發展簡史
    • 2.5Java語言特性
  • 三、初識java的main方法
  • 四、運行java程序
  • 五、【面試題】JDK、JRE、JVM之間的關系?

一、JAVA語言概述

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

二、JAVA語言的重要性

2.1語言使用廣泛程度

下圖數據來自于TIOBE編程語言社區22024 年 05 月份最新的排行榜,常年占據語言排行榜榜首,是近些年最火的編程語言之一。
在這里插入圖片描述
TIOBE 編程語言社區排行榜是編程語言流行趨勢的一個指標,每月更新,這份排行榜排名基于互聯網上有經驗的程序員、課程和第三方廠商的數量。排名使用著名的搜索引擎(諸如 Google、MSN、Yahoo!、Wikipedia、YouTube 以及 Baidu 等)進行計算。
注意:上述排名不能說明那個語言好,那個語言不好,每門編程語言都有適應自己的應用場景。

2.2工作領域

Java語言目前在IT領域的應用是非常廣泛的,掌握Java語言可以從事不少IT行業的相關開發崗位,具體包括:
企業級系統
比如大型復雜的企業級軟件系統,Java的安全機制以及跨平臺性的優勢,其在分布式系統領域開發中有廣泛應用,涉及到金融、電信、交通、電子商務、ERP系統等。
Web開發領域
Java語言在設計初期,趕上了互聯網發展的風口,當時就瞄準了互聯網開發,憑借穩定的性能表現和較好的擴展性,Java語言一直是大型互聯網平臺的重要解決方案。
android平臺應用
Android是一種智能手機操作系統,Java是一門非常流行的編程語言。Android上的應用程序就是大多是用Java編寫的,Android的SDK大部分就是直接將Java SDK翻譯過來的,所以具有Java基礎,也可以快速上手Android開發。
大數據平臺開發
大數據相關的各類框架,比如:Hadoop、spark、storm、?ink等,以及各種中間件?ume、kafka、
sqoop等,這些框架以及工具等大多數是用Java語言開發的,隨著大數據技術的落地應用,Java在大數據領域的應用前景也是比較廣闊的。
除上述開發領域外,Java在游戲領域、人工智能領域、科學計算領域、嵌入式領域也有一定的應用。因此學好Java,將來就業的選擇也會非常廣泛。

2.3在校招崗位的需求

在這里插入圖片描述
從上述位置需求中可以看出,由于應屆生缺少實際工作經驗,因此校招中企業更看重學生的基礎,也就是:語言、數據結構/算法、操作系統、網絡、數據庫等,其他的屬于加分項。

2.4 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" 的口號。
在這里插入圖片描述

2.5Java語言特性

以下Java語言特性來自于Java白皮書:

  1. 簡單性:
    Java語法是C++語法的一個“純凈版本”,相當于對C++做了一個減法。這里沒有頭文件、指針運算(甚至指針語法)、結構、聯合、操作符重載、虛基類等等。不僅如此,Java開發環境遠遠超出大多數其他編程語言的開發環境。
    2.面向對象:
    什么是面向對象?
    在Java的世界里,一切皆對象。比如:人、狗、手機、電腦等都是對象。所謂面相對象,就是依靠對象之間的交互來完成事情,比如:人用手機網上購物,狗吃骨頭…
    Java的面向對象特性與C++旗鼓相當,與C++的主要不同點在于多重繼承。在Java中,取而代之的是更簡單的接口概念。而且與C++相比,Java提供了更豐富的運行時自省功能。
    3.分布式(微服務):
    ava有豐富的例程庫,用于處理像HTTP和FTP之類的TCP/IP協議。Java應用程序能夠通過URL打開和訪問網絡上的對象,其便捷程度就好像訪問本地文件一樣。
    4.健壯性:
    java與C++最大的不同在于Java采用的指針模型可以消除重寫內存和損壞數據的可能性(對于曾經花費幾個小時來檢查由于指針bug而引起內存沖突的人來說,一定很喜歡Java的這一特性)。不僅如此,Java編譯器能夠檢測許多在其他語言中僅在運行時才能夠檢測出來的問題。
    5.安全性:
    Java適用于網絡/分布式環境。為了達到這個目標,在安全性方面投入了大量的精力。使用Java可以構建防病毒、防篡改的系統
    從一開始,Java就設計成能夠防范常見的各種攻擊:
    運行時堆棧溢出。蠕蟲和病毒常用的攻擊手段。破壞自己進程空間之外的內存。
    未經授權讀寫文件
    6.體系結構中立:
    編譯器生成一個體系結構中立的目標文件格式,按照該中規范生成的文件,只要有Java運行時系統,這些編譯后的代碼就可以在許多處理器上運行。Java編譯器通過生成與特定計算機體系結構無關的字節碼指令來實現這一特性。精心設計的字節碼不僅可以很容易的在任何機器上解釋執行,而且還可以動態地翻譯成本地機器代碼。這就是為什么可以:“Wrice once,Run anywhere”。
    在這里插入圖片描述
    而且其他語言編寫的程序,在編譯后如果能夠嚴格按照字節碼文件的規范生成.class文件,也可以在JVM上運行。
    在這里插入圖片描述
    7.可移植性:
    與C/C++不同,Java規范中沒有“依賴具體實現的地方”。基本數據類型的大小以及有關運算都做了明確的說明。例如,Java中的int永遠是32位的整數,而在C/C++中,int可能是16位整數、32位整數,也可能是編譯器提供商指定的其他大小。在Java中,數據類型具有固定的大小,這消除了代碼移植時令人頭疼的主要問題。
    8.解釋性:
    Java為了實現與平臺無關,自己維護了一套基于棧架構的指令集,Java源代碼經過編譯之后,字節碼文件中的指令就是按照自己的指令集來組織的,但是在具體硬件環境中運行時,系統并不能識別,因為Java程序在執行時,Java解釋器會逐條的將字節碼文件中的指令翻譯成CPU的指令集。
    9.高性能:
    邊解釋邊執行,垃圾會說等導致了Java代碼運行效率偏低,近年來JVM也在不斷的優化,比如:JIT(即時編譯器),熱點代碼探測,讓Java程序的執行效率大幅提高,在有些場合不亞于C/C++。
    10.多性能:
    Java在當時很超前。它是第一個支持并發程序設計的主流語言。多線程可以帶來更好的交互響應和實時行為。并發程序設計絕非易事,但是Java在這方面表現出色,可以很好的管理這個工作。
    11.動態性:
    Java與C/C++相比更加具有動態性。它能夠適應不斷發展的環境。庫中可以自由的添加新方法和實例變量,而
    對客戶端沒有任何影響。在Java中找出運行時類型信息十分簡單(反射的特性,后續會學到)因此:Java不僅僅是一門編程語言,也是一個由一些列計算機軟件和規范組成的技術體系。
    在這里插入圖片描述

三、初識java的main方法

publicclassHelloWorld{
publicstaticvoidmain(String[]args){
System.out.println("Hello,world");
}

如上展示的就是最簡單的一個Java程序,可能同學們看到后一頭霧水,可以說,Java的main方法應該是當前主流編程語言中最“長”的。
通過上述代碼,我們可以看到一個完整的Java程序的結構,Java程序的結構由如下三個部分組成:
1.源文件(擴展名為*.java):源文件帶有類的定義。類用來表示程序的一個組件,小程序或許只會有一個類。類的內容必須包含在花括號里面。
2.類:類中帶有一個或多個方法。方法必須在類的內部聲明。
3.方法:在方法的花括號中編寫方法應該執行的語句。
總結一下:類存在于源文件里面;方法存在于類中;語句存在于方法中。
注意:在一個源文件中只能有一個public修飾的類,而且源文件名字必須與public修飾的類名字相同。好了,代碼編寫完了,如何讓它“運行”起來呢?

四、運行java程序

Java是一門半編譯型、半解釋型語言。先通過javac編譯程序把源文件進行編譯,編譯后生成的.class文件是由字節碼組成的平臺無關、面向JVM的文件。最后啟動java虛擬機來運行.class文件,此時JVM會將字節碼轉換成平臺能夠理解的形式來運行。
在這里插入圖片描述
注意:在運行Java程序前,必須先安裝好JDK(Java Development Kit即Java開發工具包),JDK里面就包含了javac和java工具,Java程序最終是在JVM(Java虛擬機)中運行的。

五、【面試題】JDK、JRE、JVM之間的關系?

JDK(Java Development Kit):Java開發工具包,提供給Java程序員使用,包含了JRE,同時還包含了編譯器javac與自帶的調試工具Jconsole、jstack等。
JRE(Java Runtime Environment):Java運行時環境,包含了JVM,Java基礎類庫。是使用Java語言編寫程序運行的所需環境。
JVM:Java虛擬機,運行Java代碼。
在這里插入圖片描述
編寫和運行第一個Java程序時,可能會遇到的一些錯誤:

  1. 源文件名后綴不是.java
  2. 類名與文件名不一致
  3. main方法名字寫錯:mian
  4. 類沒有使用public修飾
  5. 方法中語句沒有以分號結尾
  6. 中文格式的分號
  7. JDK環境沒有配置好,操作系統不能識別javac或者java命令
  8. 在這里插入圖片描述
    歐耶,學會啦!!!

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

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

相關文章

【Apache Doris】周FAQ集錦:第 4 期

【Apache Doris】周FAQ集錦:第 4 期 SQL問題數據操作問題運維常見問題其它問題關于社區 歡迎查閱本周的 Apache Doris 社區 FAQ 欄目! 在這個欄目中,每周將篩選社區反饋的熱門問題和話題,重點回答并進行深入探討。旨在為廣大用戶和…

Redis常見數據類型(6)-set, zset

目錄 Set 命令小結 內部編碼 使用場景 用戶畫像 其它 Zset有序集合 普通指令 zadd zcard zcount zrange zrevrange ?編輯 zrangebyscore zpopmax/zpopmin bzpopmax/bzpopmin zrank/zrevrank zscore zrem zremrangebyrank zremrangebyscore Set 命令小結 …

鏈棧的存儲

單向鏈表在棧中的存儲 typedef struct StackNode {SElemType data;struct StackNode* next; }StackNode, *LinkStack; LinkStack S; //鏈棧初始化 void InitStack(LinkStack& S) {S NULL;return OK; } //判斷鏈棧是否為空 Status StackEmpty(LinkStack S) {if (S NU…

將具有傳統IP的設計遷移到Vivado設計套件

將具有傳統IP的設計遷移到Vivado設計套件 概述 AMD Vivado?設計套件允許您從CORE Generator?工具遷移IP設計。你可以 還可以將IP遷移到Vivado Design Suite的最新版本。 重要!Vivado集成開發環境(IDE)要求IP、實例化和 端口名都是小寫的。將…

Spring 模擬管理Web應用程序

MVC:Model View Controller 1)controller:控制層(Servlet是運行服務器端,處理請求響應java語言編寫技術) 2)service:業務層(事務,異常) 3&#xf…

視頻號小店的保證金是多少錢?2024最新收費標準,一篇了解!

哈嘍~我是電商月月 現實社會,干什么都需要交錢,就連上班,路費也得掏錢 想要入駐視頻號小店,在視頻號里賣貨賺錢,就要繳納類目保證金 那到底要繳多少錢呢? 今天,月月就把最新的收費標準分享給…

輕松拿捏C語言——【字符串函數】的使用及模擬實現

🥰歡迎關注 輕松拿捏C語言系列,來和 小哇 一起進步!? 🎉創作不易,請多多支持🎉 🌈感謝大家的閱讀、點贊、收藏和關注💕 🌹如有問題,歡迎指正 感謝 目錄 一、…

mysql 拼接兩個字段的值 使用CONCAT的函數

CONCAT()函數拼接兩個不用字段的值,最后在一個字段里面顯示出來,具體實例如下: 下面這個案例就行把SSSHENGBH、SSSBH、SSXBH、SSXZBH字段值拼接到一個字段里面進行顯示 select CONCAT(SSSHENGBH,SSSBH,SSXBH,SSXZBH) FROM BLT_JBXXJLB

3D 生成重建013-ProlificDreamer將SDS拓展到VSD算法進行高質量的3D生成

3D 生成重建013-ProlificDreamer將SDS拓展到VSD算法進行高質量的3D生成 文章目錄 0論文工作1論文方法2效果 0論文工作 **分數蒸餾采樣(SDS)**通過提取預先訓練好的大規模文本到圖像擴散模型,在文本到3d生成方面顯示出了巨大的前景&#xff0…

Windows VS2022 C語言使用 sqlite3.dll 訪問 SQLite數據庫

今天接到一個學生C語言訪問SQLite數據庫的的需求: 第一步,SQLite Download Page下載 sqlite3.dll 庫 下載解壓,發現只有兩個文件: 于是使用x64 Native Tools Command Prompt 終端 生成 sqlite3.lib 和 sqlite3.exp文件 LIB -def:sqlite3.def -out:sqlite3.lib -machin…

廣告圈策劃大師課:活動策劃到品牌企劃的深度解析

對于剛接觸營銷策劃的新人來說,在這個知識密集型行業里生存,要學習非常多各種意思相近的概念,常常讓人感到頭疼,難以區分。 這里對這些策劃概念進行深入解析,幫助您輕松理清各自的含義和區別。 1. 活動策劃&#xff…

C++ 字符串處理-將字符串轉成大寫或小寫

1. 關鍵詞2. strutil.h3. strutil.cpp4. 測試代碼5. 運行結果6. 源碼地址 1. 關鍵詞 C 字符串處理 將字符串轉成大寫或小寫 跨平臺 2. strutil.h #include <string> namespace cutl {/*** brief Convert a string to upper case.** param str the string to be conve…

微信小程序自定義頭部

1.在對應界面的json文件&#xff0c;將navigationStyle屬性設置為“custom” "navigationStyle":"custom" 2. 狀態欄的高度可以通過 wx.getSystemInfo() 獲取。 膠囊按鈕的信息可以通過 wx.getMenuButtonBoundingClientRect() 獲取。 導航欄高度狀態欄…

截圖工具PixPin(比Snipaste更強大)

PixPin官網鏈接&#xff1a;https://pixpinapp.com/ 最近新出的一款截圖工具PixPin&#xff0c;比Snipaste功能多一些。在Snipaste功能基礎上&#xff0c;還支持長截圖&#xff0c;截動圖&#xff0c;文本識別。

C++11-獨占指針unique_ptr原理實現

獨占指針&#xff08;unique_ptr&#xff09;是C11標準引入的一種智能指針&#xff0c;用于獨占管理動態分配對象的生命周期。unique_ptr確保對象在同一時間只有一個所有者&#xff0c;防止對象被多個指針共享。下面是unique_ptr的實現原理及其內存管理機制。 unique_ptr 的基…

618好物推薦,省心省力省錢包!

一年一度的“618”購物狂歡節又來啦&#xff01;大家都心動了吧&#xff0c;購物車也早就堆滿了心儀的好物。別急&#xff0c;別急&#xff0c;讓我給你們推薦幾款真正值得入手的寶貝&#xff0c;讓你們省心、省力還省錢包&#xff01;不管是給自己添置點新裝備&#xff0c;還是…

Vue實現一個動態添加行的表格?

在Vue中實現一個動態添加行的表格可以通過以下步驟來完成&#xff0c;如下所示。 步驟 1&#xff1a;設置表格的數據模型 在Vue組件中定義表格的數據模型&#xff0c;通常使用一個數組來存儲表格的數據。每一行數據可以是一個對象&#xff0c;對象的屬性對應表格的列。 data(…

MFC 編程:Windows 桌面應用程序開發框架

目錄 一.概述 二.MFC 與 Win32 的關系 三.CObject 類 1.CObject 類的主要功能 2.CObject 類的派生類 3.CObject 類成員函數 4.內存管理 對象的創建 對象的銷毀 引用計數 復制對象 5.序列化 序列化的概念 CObject 類的序列化功能 序列化示例 6.運行時類型信息 …

uniapp App去除iOS底部安全區域白邊

未設置的情況下&#xff0c;iOS底部安全區域白邊 如圖&#xff1a; 去除方法&#xff1a; 在 mainfest.json 中加入一下代碼&#xff1a; "safearea" : {"bottom" : {"offset" : "none"} }, 去除效果展示&#xff1a;