J2SE核心开发实战(一)——认识J2SE
認識J2SE
一、課程簡介
在本章學(xué)習(xí)開始前,你應(yīng)該具備一些Java的基礎(chǔ)知識。我們將在本章來認識J2SE,并復(fù)習(xí)一下前面學(xué)過的面向?qū)ο蟮南嚓P(guān)知識。
注:所有的藍色文字都是帶超鏈接的,這些鏈接是本課程為你提供的擴展知識點,一定不要錯過。
本章知識點
- J2SE的定義和架構(gòu)
- 面向?qū)ο?/li>
二、什么是J2SE
1. J2SE的定義
J2SE,全稱為Java 2 Standard Edition。Java 2平臺包括:標準版(J2SE)、企業(yè)版(J2EE)和微縮版(J2ME)三個版本。J2SE即Java 2的標準版,主要用于桌面應(yīng)用軟件的開發(fā)。
下面這段話是ORACLE對于Java SE的官方描述:
Java Platform, Standard Edition (Java SE) 可以讓您在桌面和服務(wù)器以及目前要求較高的嵌入式環(huán)境中開發(fā)和部署 Java 應(yīng)用程序。 Java 提供了當今應(yīng)用程序所需要的豐富的用戶界面、良好的性能、多功能性、可移植性和安全性。
J2SE與J2EE、J2ME之間的關(guān)系可以通過下圖來表示:
2. J2SE的架構(gòu)
J2SE的架構(gòu)如下圖所示,它主要包含了UI、集成庫、語言和工具基礎(chǔ)庫、其他基礎(chǔ)庫、Java虛擬機等組件。
綜上所述,將J2SE壓縮一點再加上一些CLDC等方面的特性就是J2ME;將其擴充一點再增加一些EJB等企業(yè)應(yīng)用方面的特性就是J2EE。因此J2SE是J2EE的基礎(chǔ),建議從事Java的開發(fā)人員從J2SE開始學(xué)習(xí)。
三、面向?qū)ο蟆柟膛c提高
在前面Java基礎(chǔ)語法的學(xué)習(xí)中,你應(yīng)該接觸了一些面向?qū)ο蟮幕A(chǔ)知識。面向?qū)ο蟮母拍钤贘ava的開發(fā)體系中無處不在,在今后的開發(fā)過程中,你也應(yīng)該以面向?qū)ο蟮乃枷雭砜创徒鉀Q問題。
既然是面向?qū)ο?#xff0c;就會始終談?wù)摰筋惡蛯ο蟮母拍?#xff0c;以及它們之間的關(guān)系:
類是現(xiàn)實世界或思維世界中的實體在計算機中的反映,它將數(shù)據(jù)以及這些數(shù)據(jù)上的操作封裝在一起。對象是具有類類型的變量。
類是對象的抽象,而對象是類的具體實例。類是抽象的,不占用內(nèi)存,而對象是具體的,占用存儲空間。類是用于創(chuàng)建對象的藍圖,它是一個定義包括在特定類型的對象中的方法和變量的軟件模板。
下面,我們通過一些例子來鞏固面向?qū)ο蟮南嚓P(guān)知識。
1. 自定義圖書類
首先在Eclipse中創(chuàng)建一個項目HelloJ2SE,新建一個名為com.shiyanlou.course的包。
然后在這個包里面添加一個Book類。
對于一個圖書對象,一般有書名、作者和編碼等屬性。我們利用這些常見屬性來自定義這個圖書類,創(chuàng)建的Book.java文件中主要代碼如下:
特別說明:在實驗樓的實驗環(huán)境中,暫不支持輸入中文,因此你不必將代碼片段中的注釋也輸入開發(fā)環(huán)境。該說明同樣適用于本課程后續(xù)的章節(jié)。
package com.shiyanlou.course; //此為包名,如果你在創(chuàng)建包時已自動生成了該行,請忽略public class Book {private String name; // 定義書名private String author; // 定義作者private String ISBN; // 定義編碼//Tips: ISBN是國際標準書號,每本書背面的條形碼即為此物public Book(String name, String author, String ISBN) {// 利用構(gòu)造方法初始化域this.name = name;this.author = author;this.ISBN = ISBN;//Q:你清楚this的用法嗎?}public String getName() { // 獲得書名return name;}public String getAuthor() { // 獲得作者return author;}public String getISBN() { // 獲得編碼return ISBN;} }為了測試我們剛剛自定義的圖書類,我們在com.shiyanlou.course這個包中再創(chuàng)建一個名為Test的類文件,并在main()方法中創(chuàng)建一個Book對象。最后,我們在控制臺輸出這個Book對象的屬性。
創(chuàng)建的Test.java文件中,主要的代碼如下:
package com.shiyanlou.course;public class Test {public static void main(String[] args) {Book book = new Book("This is my 1st book", "Peter", "1234567890");// 創(chuàng)建Book對象并設(shè)定其各個屬性System.out.println("Book Name: " + book.getName()); // 輸出這本書的名字System.out.println("Book Author: " + book.getAuthor()); // 輸出這本書的作者System.out.println("ISBN: " + book.getISBN()); // 輸出這本書的編碼} }點擊編譯并運行。
如果在控制臺中可以看到下圖這樣的信息,那么祝賀你,一個自定義的圖書類就成功完成了。
當然,你也可以為Book對象添加更多的屬性,并為每個屬性編寫get方法。
2. 動態(tài)化實例類
在面向?qū)ο蟮木幊讨?#xff0c;把用類創(chuàng)建對象的過程稱為實例化。通常是使用有參數(shù)或無參數(shù)的構(gòu)造方法來創(chuàng)建對象。其格式如下:
//有參數(shù)的情形 類名 對象名 = new 類名(參數(shù)1,參數(shù)2...參數(shù)n); //例如下面這個例子 Person peter = new Person("Peter","boy");//無參數(shù)的情形 類名 對象名 = new 類名(); //例如下面這個例子 Dog dog_1 = new Dog();你可以仿照自定義圖書類的例子,通過自己創(chuàng)建相關(guān)的Person類和Dog類以及測試的方法來驗證上述過程。
但是在Java中,類的實例化方法一共有四種途徑:
我們在自定義圖書類這個例子中,編寫了有參數(shù)的構(gòu)造方法public Book(String name, String author, String ISBN)。但如果類中沒有定義構(gòu)造方法,編譯器便會自動添加一個無參數(shù)的構(gòu)造方法。使用構(gòu)造方法創(chuàng)建對象雖然常用,但并不靈活。因此,我們再來了解一下動態(tài)化實例類,也就是調(diào)用Class對象的newInstance()方法,通過反射創(chuàng)建對象。
了解一下反射的概念:
JAVA反射機制是在運行狀態(tài)中,對于任意一個類,都能夠知道這個類的所有屬性和方法;對于任意一個對象,都能夠調(diào)用它的任意一個方法和屬性;這種動態(tài)獲取的信息以及動態(tài)調(diào)用對象的方法的功能稱為java語言的反射機制。
那么我們就開始來學(xué)習(xí)如何動態(tài)化實例類:
請在在Eclipse中創(chuàng)建一個項目DynamicClass,并在該項目中創(chuàng)建com.shiyanlou.course包。在該包中創(chuàng)建Test類,并編寫main()方法。
在main()方法中創(chuàng)建一個File對象(你只需要知道File對象也是一個對象即可,進一步了解File對象)。
最后,使用該對象在桌面創(chuàng)建一個文本文件。
主要的代碼如下:
package com.shiyanlou.course;import java.io.File; import java.lang.reflect.Constructor; //需要引用上述兩個包public class Test {public static void main(String[] args) {try {Constructor<File> constructor = File.class.getDeclaredConstructor(String.class);//獲得File類的Constructor對象System.out.println("Create File Object with reflection."); //使用反射創(chuàng)建File對象File file = constructor.newInstance("/home/shiyanlou/Desktop/MyFile.txt");System.out.println("Use File Object to create MyFile.txt on desktop.");//指定了創(chuàng)建的路徑為桌面,名稱為“MyFile.txt”file.createNewFile(); //創(chuàng)建新的文件System.out.println("File is created ?" + file.exists());//驗證文件是否創(chuàng)建成功} catch (Exception e) {e.printStackTrace();}} }你可能會問為什么會用到try、catch以及Exception之類的奇怪的東西,這是由于上述代碼會拋出大量的異常。我們通常不推薦這樣寫。不用擔心,我們將在錯誤處理一章為你詳細介紹他們的原理和用法。
點擊編譯并運行,如果在控制臺可以看到下列信息則表示你成功了。
同時,你也應(yīng)該可以在桌面上發(fā)現(xiàn)自己創(chuàng)建的這個MyFile.txt文件。
四、實驗總結(jié)
本章我們學(xué)習(xí)了J2SE的基本概念和架構(gòu),復(fù)習(xí)了面向?qū)ο笾蓄惡蛯ο?、動態(tài)實例化類的相關(guān)知識。建議大家再積累一些數(shù)據(jù)結(jié)構(gòu)相關(guān)知識,以便更好地投入到后續(xù)的學(xué)習(xí)中。
J2SE的整個體系還是很龐大的,本課程會力所能及地涵蓋其核心的知識點,如果你想更加深入地學(xué)習(xí)Java知識,我們還推薦你去閱讀《Java 2核心技術(shù)》等書籍。
五、作業(yè)
好了,我們今天的認識J2SE課程就講完了,你對Java這個大家庭又了解了多少?
不妨通過解決下面的問題來鞏固今日所學(xué)吧。
一個學(xué)校里面有老師和學(xué)生,他們具有一些相同的屬性,例如姓名、生日、性別等。但老師還有一個特別的工齡屬性,請嘗試利用學(xué)生類來編寫老師類,利用繼承技術(shù)讓老師類使用學(xué)生類中定義的屬性和方法,并且為老師類創(chuàng)建新的工齡屬性。
為什么要這樣做?因為繼承技術(shù)可以讓你少寫很多代碼啊…
本文原文鏈接:https://www.shiyanlou.com/courses/111 本課為實驗樓原創(chuàng)課程,轉(zhuǎn)載請注明。
總結(jié)
以上是生活随笔為你收集整理的J2SE核心开发实战(一)——认识J2SE的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pygame开发PC端微信打飞机游戏
- 下一篇: 如何利用《C++ Primer》学习C+