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