Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
佳Java學(xué)習(xí)方式
學(xué)習(xí) Java 既簡單又有趣,無論您有什么背景。有了這本綜合指南的幫助,您將可開始 Java 之旅,并擁有掌握基本概念的所有資源。
通過前面文章的介紹,理解了Java是——
Java 代碼運行在 Java 虛擬機上,該虛擬機將 Java 代碼轉(zhuǎn)換為操作系統(tǒng)能夠理解的語言。所有這些特性以及更多特性使 Java 依然是 2021 年(還將持續(xù)下去)的頂級編程語言之一。
Java很有魅力,對于新手或初學(xué)者,有沒有最佳的學(xué)習(xí)方式呢?這就是本篇文章將要討論的和表達的內(nèi)容——這里主要是為初學(xué)者指明漸進式的Java學(xué)習(xí)核心基礎(chǔ)點,這是針對性編程學(xué)習(xí)必備以及進階的支持基本面。根據(jù)這個學(xué)習(xí)方式,就可把主題知識點連成體系化知識線,然后再根據(jù)需要來拓展關(guān)聯(lián)技術(shù)面或深化體系知識“點”。
友情提醒:我雖然寫了不少,但主要請關(guān)注小標題所說,以及最后的結(jié)論部分。具體的成長還得靠你自己!如果有學(xué)習(xí)需要或咨詢,請給我留言或私信。
學(xué)習(xí)任何東西都沒有捷徑可走,Java 也是如此。如果你想掌握這門語言(相信我,這是值得的),你必須在你的系統(tǒng)上設(shè)置它并開始練習(xí)。下載(https://www.oracle.com/java/technologies/downloads/)并安裝 JDK(Java 開發(fā)工具包)和 JRE(Java 運行時環(huán)境)以及您熟悉的任何 IDE。
對于初學(xué)者來講,Easy Eclipse(http://easyeclipse.org/site-1.0.1/distributions/desktop-java.html) 非常適合編寫程序和構(gòu)建獨立應(yīng)用程序,也很適合用來開始Java編程的學(xué)習(xí);開源的Eclipse(https://www.eclipse.org/downloads/packages/),建議初學(xué)者下載Eclipse IDE for Java Developers版即可,后續(xù)個根據(jù)需要下載企業(yè)版;NetBeans功能很強大,對于初學(xué)者來說也很適用,只是先不要對其本身關(guān)注太多,初學(xué)者很多功能還用不上;IntelliJ IDEA社區(qū)版不收費,但對于初學(xué)者有較高的要求,需要慢慢適應(yīng) ;針對初學(xué)者的BlueJ(https://www.bluej.org/),更關(guān)注學(xué)習(xí)。
隨著對Java技術(shù)的提高和實際工作的需要,將來IDE的選擇,建議NetBeans、Eclipse、以及IntelliJ IDEA(高級版收費的)
那在我們進入核心概念之前,這里有一些你應(yīng)該永遠記住的事情——
現(xiàn)在我們有了積極的心態(tài)和學(xué)習(xí)的動力,那就來看看學(xué)習(xí)用 Java 編寫高效代碼所需的所有概念——
每天,我們都會遇到不同類型的數(shù)據(jù)。例如,您的司機的電話號碼是一個整數(shù),但他的名字是一個字符串(字符數(shù)組)。同樣,他給您車輛加的汽油價格是浮點數(shù)(十進制小數(shù))。 Java 可處理很多數(shù)據(jù)類型,比如:
String driverName;
int telephoneNo;
float petrolPrice;
boolean isRegular;
Java 中的最佳實踐之一是遵循正確的命名約定。上面的變量(driverName、telephone.etc...)和方法應(yīng)該以小寫開頭,后面的單詞以大寫字母開頭——driverName。同樣,由于布爾數(shù)據(jù)類型返回 true 或 false,因此以 is、are、has 等開頭的變量命名是一個好習(xí)慣......
將數(shù)據(jù)存儲在變量中的好處是我們可以在代碼的任何地方使用變量。使用變量的限制由其作用域定義,可以是局部的、靜態(tài)的或全局的。
數(shù)據(jù)類型 char、int、float、boolean 和 double 被稱為原始類型(也叫基本類型),Java對每一種類型都有對應(yīng)的對象類。例如,int 有 Integer; boolean 有 Boolean 等等。一個字符串就是個String類型的對象。
那么,我們?nèi)绾翁幚磉@些數(shù)據(jù)呢?我們要對其進行一些操作!
編程是要處理數(shù)據(jù)的,數(shù)據(jù)有很多種的。例如,根據(jù)司機是否規(guī)范合格,可以給他一些獎勵,或者根據(jù)他加的油量,我們可以知道他開了多少公里。類似代碼可以這樣表示:
if (isRegular){
salary +=200;
}
條件表達式結(jié)果只能是布爾值(true或false)。如果我們比較兩個字符串,例如if(driverName==“Chand”),則可使用比較運算符'==',它不同于賦值運算符'='。同樣的,還有<、<=、> , >=等等。
就像我們在上面看到的那樣,“if”是一個條件判斷,用于測試某些內(nèi)容是否準確并相應(yīng)地返回結(jié)果(true或false)。if通常與可以處理多種情況的 else if 和 else 語句結(jié)合使用。
if(marks < 23)
grade=‘F’;
else if(marks > 23 && marks < 60)
grade=‘D’;
else
grade=‘B’;
請注意,&& 表示兩個表達式都必須為true,if 判斷檢測才能成功。
還要記住的是代碼執(zhí)行中循環(huán)的相關(guān)應(yīng)用:while和for。
我們編寫的很多代碼都可以分成代碼塊,以便應(yīng)用程序的許多其它部分可以重用它們。系統(tǒng)的此類塊稱為函數(shù)/方法(基于OOP的叫法)。例如,grade可以是基于分數(shù)的函數(shù)。當(dāng)系統(tǒng)被分成更小的函數(shù)時,它們看起來整潔、獨立并且易于理解。函數(shù)是模塊化的,可重復(fù)使用。
Java 中的函數(shù)名以小寫開頭,后面的單詞首字母大寫。例如,獲取成績的grades(float marks),返回字符的、 isRegular(String driverName)返回布爾值 等。
接下來就才是 Java 的真正強大——
如果您想了解 OOPS 概念的詳細信息,請觀看我之前嵌入在本文中的上述視頻。盡管如此,對于本文,您需要知道的是,在 OOPS 中,一切都被視為對象。鉛筆是一個對象,汽車、植物、動物,甚至司機也是一個對象。
繼續(xù)我們的司機示例,假設(shè)以下屬性標識司機 – driverName、joinDate、isRegular、dateOfBirth 和 avgCustomerRating。
假設(shè)像優(yōu)步這樣的服務(wù)提供商會有很多這樣的司機。每個司機都具有所有這些屬性,這些屬性將以其獨特的值加以區(qū)分。這意味著,我們可用這些屬性作為司機的成員變量來創(chuàng)建類“Driver”。每當(dāng)我們需要獲取或設(shè)置特定司機的詳細信息時,我們將使用 new 運算符創(chuàng)建 Driver 類的“對象”。
Driver driver=new Driver();
在創(chuàng)建類時,我們還為成員創(chuàng)建了“getter 和 setter”方法,通過這些方法我們可以獲取屬性成員各個值。假如必須設(shè)置整個對象,我們可使用在類中定義的構(gòu)造函數(shù)。如下所示:
public Driver(String driverName, String joiningDate, boolean isRegular,
String dateOfBirth, float avgCustomerRating){
this.driverName=driverName;
this.joiningDate=joiningDate;
this.isRegular=isRegular;
this.dateOfBirth=dateOfBirth;
this.avgCustomerRating=avgCustomerRating;
}
現(xiàn)在,當(dāng)想創(chuàng)建這樣一個對象時,就可以通過調(diào)用 new 操作符和這個構(gòu)造函數(shù)來實現(xiàn):
Driver driver1=new Driver(“John”, “21/12/2018”, true, “12-01-1983”, 4.5);
如果您正在同時練習(xí)代碼,則在修復(fù)編譯錯誤(如果有)之后,就可構(gòu)建并運行程序,然后還可繼續(xù)擴展項目。同時您也將看到與每個 .java 文件對應(yīng)的 .class 文件。
在Java中,有許多如數(shù)組、列表、映射、樹等的數(shù)據(jù)結(jié)構(gòu)。所有這些都在 Collection 框架下,除了 Array,它是 java.util 包的一部分。理解和掌握 Collection 將使您對存儲和檢索數(shù)據(jù)感到非常爽——這意味著您學(xué)習(xí)成功了一半。來用數(shù)組做一個簡單的例子。在我的“何為Java...” (https://www.toutiao.com/a7045534771065438734/?log_from=4b2c72124184e_1640578614119)中,用 ArrayList 進行了類似的操作,可去看看。
Driver[] drivers=new Driver[5];
//為每個司機設(shè)置詳細信息或從數(shù)據(jù)庫或用戶輸入中獲取它
假設(shè)有五個司機,我們想根據(jù)每個司機的一些條件設(shè)置工資。為此,我們使用“for”循環(huán)。
for(int i=0; i<5; i++){
if(driver[i].isRegular && driver[i].salary < 4000)
driver[i].salary +=200;
}
請注意,我們獲取每個司機的詳細信息,然后對每個司機進行一些檢查。之后,我們設(shè)置一個值。在這里,我們將 Driver 的硬編碼為 5個,但在實際應(yīng)用程序中,我們將從數(shù)據(jù)庫或控制臺獲取它。
那又該如何操作呢?請繼續(xù)……
考慮從用戶那里獲取司機詳細信息。對于每個數(shù)據(jù),使用剛剛學(xué)習(xí)的 for 循環(huán)處理更多信息。首先,讓我們創(chuàng)建數(shù)組。這次我們不設(shè)定長度,而是向用戶詢問要多少。
如果還沒有創(chuàng)建 Driver 類,現(xiàn)在使用您的 IDE 來創(chuàng)建(我這里用的是NetBeans)。這些東西最好在實踐中學(xué)習(xí)。要創(chuàng)建這個類,讓我們首先在 IDE 上創(chuàng)建一個項目。創(chuàng)建一個任何名稱的項目,例如 myLearning。然后創(chuàng)建一個名為 com.learning 的包(意思是源代碼)。在包內(nèi),使用成員創(chuàng)建類 Driver。只需單擊幾個按鈕,即可在 IDE 上生成 getter 和 setter。
創(chuàng)建包com.learning,完成后:
創(chuàng)建Driver類
在此類中編寫或創(chuàng)建我們之前討論過的構(gòu)造函數(shù)。
接著可以創(chuàng)建Test類,此類擁有 public static void primary (String args[]) 方法以用于測試之用。
要從用戶那里獲得輸入,最好的方式是使用“Scanner”方法。
之后,我們可以使用Scanner的 next() 方法來一一獲取輸入。我們第一件事是要知道存儲司機數(shù)量的信息。然后,我們創(chuàng)建一個相同長度的數(shù)組,循環(huán)遍歷它,實例化循環(huán)內(nèi)的每個對象,并使用構(gòu)造函數(shù)或 setter 方法設(shè)置類成員的值。
為了讓我們的 java 代碼連接到數(shù)據(jù)庫,我們需要一個 JDBC 驅(qū)動程序。不同的數(shù)據(jù)庫有不同的驅(qū)動;例如,對于 MySQL,驅(qū)動程序?qū)⑹?com.mysql.jdbc.Driver。接下來,我們需要連接到數(shù)據(jù)庫所在的 URL(位置)。為了訪問數(shù)據(jù)庫,我們還需要用戶名和密碼。獲取連接后,我們可以通過代碼執(zhí)行查詢以獲取或設(shè)置必要的詳細信息。
對于任何簡單或復(fù)雜的 Web 應(yīng)用程序,都必須了解 JDBC(Java 數(shù)據(jù)庫連接)——這一點要在學(xué)習(xí)的過程中牢記。
Java 中的文件處理是使用兩個類 FileWriter 和 FileReader 完成的。 Java 文檔描述了這些類提供的所有方法和構(gòu)造函數(shù),它們非常簡單。之前使用了 FileInputStream 和 FileOutputStream,但前兩者更可取,因為它們寫入字符流,而后兩個是字節(jié)流類。請記住,對于文件處理,必須捕獲像 FileNotFoundException 這樣的異常。
當(dāng)然,隨著技能的提高,實際學(xué)習(xí)和應(yīng)用中,還有更多的IO相關(guān)的操作API需要深入研究的。
Java 擁有很大的靈活性。但是作為開發(fā)人員需要知道:我們的代碼在哪些情況下會給出錯誤的結(jié)果。一種這樣的情況是用戶沒有輸入正確的值。比如你把driverName設(shè)置為String,用戶引入了一些數(shù)字或者隨機字符,這樣的情況我們應(yīng)該可以處理并通知用戶。這些通常在客戶端使用 JavaScript 完成相關(guān)校驗,但客戶端也可以禁用 JavaScript。作為開發(fā)人員,我們也需要從我們這邊(后臺)完成此驗證。一些標準的異常如:
Java 中有許多此類受檢查異常和非受檢異常,您需要注意這些異常才能獲得健壯的代碼。
雖然我們總是厭惡垃圾,但 Java GC 會是您喜歡的東西。作為程序員,您不必擔(dān)心垃圾收集器線程的工作方式。它只是安靜地完成它的工作。但是,如果您有興趣,你要好好研究一下,因為在一些核心 Java 面試中會被問到。
為了處理并發(fā),Java 支持多線程并具有高效的內(nèi)置方法。雖然許多人認為線程是一個可怕的話題,但在 Java 中卻并非如此,使用起來非常方便。線程的行為有時會有所不同,就如人們都會有某個時候情緒波動一樣,沒啥大驚小怪的?只要處理得當(dāng),線程總是像處于最佳狀態(tài)。
例如,您正在某地某事嘗試預(yù)訂出租車,總會有很多用戶嘗試從相同的起點尋找相同的出租車——這里出現(xiàn)的多個人就像運行的多線程一樣。
那當(dāng)這樣時,誰獲得預(yù)訂確認呢?
第一個被確認的人!如果您快速預(yù)訂了,則車子為您鎖定——其他打車人不會看到這輛特定的出租車。但是,如果您出于某種原因取消叫車,則會解除鎖定,此車又可供其他人預(yù)定使用。線程也是如此。如果一個線程正在更改其他人想要訪問的代碼的一部分,則其他線程必須等待輪到它們,以便所有線程不會同時處理相同的數(shù)據(jù)并破壞它。多線程讓我們的生活變得輕松——想想在線票務(wù)、銀行交易和所有安全交易——如果每個人都可以同時訪問相同的數(shù)據(jù),那世界將肯定充滿混亂!
好的,現(xiàn)在我們來到了真正的地方!學(xué)習(xí) Java 的全部意義在于創(chuàng)建可交互且快速的強大 Web 應(yīng)用程序。如果您已經(jīng)安裝了 IDE,那么您需要做的就是將 Jakarta EE(以前叫J2EE) 組件安裝到您的 IDE 中。前面的掌握后,就要開始學(xué)習(xí)如何構(gòu)建可擴展且健壯的 Web 應(yīng)用程序了。
要構(gòu)建 Web 應(yīng)用程序,需要了解 servlet 和 JSP(Java 服務(wù)器頁面)的基礎(chǔ)知識,它們很容易學(xué)習(xí)。還有許多其他框架,如 Spring、Struts,等等,它們在與 Java 結(jié)合時提供了強大的 Web 應(yīng)用程序支持。這個我們可以選擇不同的相關(guān)教程來進一步學(xué)習(xí)。
Java Web 服務(wù)用于與 MVC 架構(gòu)的不同層進行交互。 Java Web 服務(wù) (JWS) 應(yīng)用程序有兩種通信方式——SOAP 和 RESTful 服務(wù)——這個通信是通過 WSDL(Web 服務(wù)描述語言)完成的。在學(xué)習(xí)到這一步后,可以找些關(guān)于 SOAP 和 REST 的內(nèi)容豐富的教程,然后開始使用 Java Web 服務(wù)。
web服務(wù),這個是走向微服務(wù)的熱門抓手,請一定順溜地學(xué)到這里,那說明你的技術(shù)已經(jīng)可以獨當(dāng)一面了 ^_^
在本文中,我談?wù)摿苏莆?Java 所需了解的各種 子主題的摘要。 Java 還使用了許多其他 OOPS 概念——例如裝箱、拆箱、設(shè)計模式、泛型等,可以幫助您來更好地進行編碼實踐,幫助您構(gòu)建功能性應(yīng)用程序。你還可通過做些面試題來檢驗?zāi)闶欠衲芑卮疬@些 Java 面試問題來,以確保你的理解是正確的!
通過上面的Java編程的子主題,作為初學(xué)者在具體學(xué)習(xí)時就有了更清晰的進階路線,即可快速打通知識點,由可針對性深挖“主題”知識。
為了這些子主題有落腳點,最后這里給出了一個Java學(xué)習(xí)的初級入門和高級進階的書籍列表,基于我們談到的這些循序漸進的學(xué)習(xí)主題,這些書籍將使你學(xué)習(xí) Java 擁有更愉快而徹底的體驗。
這些書籍是(都有對應(yīng)的中文版):
除此之外,還……你先把上面的搞定再說吧。
習(xí)是一件很痛苦的事情,很多人們總問別人有沒有捷徑,問學(xué)習(xí)路線,好像問完了就學(xué)會了一樣。其實我想說是:要是你真的想做一件事,那么就立刻去做好了,因為時間是不會等你的,在你猶豫的時候,時間早就流走了。所以與其猶豫不決不如理科開始行!
有的人說學(xué)Java要先學(xué)HTML,那就一起來看HTML是什么吧!
首先HTML 并不是一種編程語言,而是一種標記語超文本標記語言,負責(zé)展示網(wǎng)站的外觀,用來控制各種屬性的展示,要想做JavaWeb開發(fā),HTML是必須學(xué)會的基礎(chǔ)。
既然要學(xué)習(xí)開發(fā),那么必須要有工具呀!
EditPlus 3
嗯!就先來認識一下HTML的一些標簽
其中的主要的標簽如下
<html>-------------------開始html文檔
<head>--------------------開始文檔頭部
<title>---------------------開始文檔標題
This is first page
</title>---------------------結(jié)束文檔標題
</head>----------------------結(jié)束文檔頭部
<body>-----------------------開始文檔體
Hello World.
</body>------------------------結(jié)束文檔體
</html>------------------------結(jié)束html文檔
新建 HTML 頁面就會出現(xiàn)代碼如下(綠色文字為注釋):
一個頁面的整體結(jié)構(gòu)就是:
所有的內(nèi)容都在<html></html>這兩個標簽內(nèi)部。然后分為 <head> </head>頭部和 <body> </body>身體兩部分。
文檔的頭部描述了文檔的各種屬性和信息,包括文檔的標題、在 Web 中的位置以及和其他文檔的關(guān)系等。
絕大多數(shù)文檔頭部包含的數(shù)據(jù)都不會真正作為內(nèi)容顯示給讀者。
<body>標簽包含文檔的所有內(nèi)容
(比如文本、超鏈接、圖像、表格和列表等等。)
<title> 定義文檔的標題。
瀏覽器會以特殊的方式來使用標題,并且通常把它放置在瀏覽器窗口的標題欄或狀態(tài)欄上。同樣,當(dāng)把文檔加入用戶的鏈接列表或者收藏夾或書簽列表時,標題將成為該文檔鏈接的默認名稱。
下面的就算是一個簡單的網(wǎng)頁了。
讓我們保存執(zhí)行一下看看。
hello world!Java學(xué)習(xí)我來了!
AVA中將WORD轉(zhuǎn)換為HTML導(dǎo)入到WANGEDITOR編輯器中(解決圖片問題,樣式,非常完美),wangEditor如何導(dǎo)入word文檔,如何實現(xiàn)導(dǎo)入WORD文檔到WANGEDITOR編輯器中?WANGEDITOR導(dǎo)入WORD文檔 WANGEDITOR WORD導(dǎo)入插件,HTML富文本編輯器導(dǎo)入WORD,Web富文本編輯器導(dǎo)入WORD,WANGEDITOR富文本編輯器導(dǎo)入WORD,WANGEDITOR導(dǎo)入WORD,WANGEDITORWORD導(dǎo)入編輯,wangEditor集成word導(dǎo)入功能,
后端是用的JAVA,SpringBoot框架,實際上前端在集成的時候是不關(guān)心后端具體是用什么語言實現(xiàn)的。
它這個版本有幾個wangEditor3,wangEditor4,wangEditor5,好用的是就3和4,5不支持插入HTML。但是用戶用插入HTML這個功能用的比較多。
vue-cli-wangEditor3,vue3-cli-wangEditor4集成word導(dǎo)入功能。在VUE框架下面集成了WORD導(dǎo)入功能。
用戶選擇word文件后,自動轉(zhuǎn)換成html,自動將word里面的圖片上傳到服務(wù)器中,自動將HTML添加到編輯器中。
主要的方案就是提供一個轉(zhuǎn)換接口,轉(zhuǎn)換接口使用RESTful協(xié)議,這樣的話兼容性更好一點,其它的平臺用起來的話更方便簡單一點,而且測試起來也方便。
現(xiàn)有項目需要為TinyMCE增加導(dǎo)入word文件的功能,導(dǎo)入后word文件里面的圖片自動上傳到服務(wù)器中,返回圖片和文字HTML,word里面的文本樣式保留
用戶一般在發(fā)新聞和發(fā)文章時用到,算是一個高頻使用功能,用戶體驗上來講確實是很好,和以前的發(fā)新聞或者發(fā)文章的體驗比起來要方便許多,用戶用的更爽。
1.下載示例
https://gitee.com/xproer/zyoffice-vue3-cli-wang-editor4
2.引入組件
3.添加按鈕
4.配置轉(zhuǎn)換接口
效果
開發(fā)文檔:https://drive.weixin.qq.com/s?k=ACoAYgezAAwsDazDKJ
產(chǎn)品比較:https://drive.weixin.qq.com/s?k=ACoAYgezAAwh8oq8Zf
產(chǎn)品源代碼:https://drive.weixin.qq.com/s?k=ACoAYgezAAwjJM8412
報價單:https://drive.weixin.qq.com/s?k=ACoAYgezAAwsfyDdrf
*請認真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。