⑴ 最近開始學java,大四的課,老師極度醬油。想自己學下。求學習方法。
基本要求:
1、 掌握Java語言的特點,實現機制和體系結構;
2、 掌握Java語言中的面向對象的特性;
3、 掌握Java語言提供的數據類型和結構;
4、 掌握Java語言編程的基本技術;
5、 會編寫Java用戶界面程序;
6、 會編寫Java簡單應用程序;
7、 會編寫Java小應用程序(Applet);
考試內容:
一、Java語言的特點和實現機制
1. 特點:
簡單性 去除了指針和多重繼承等內容
網路特性
面向對象
平台無關性,可移植性
穩定性 又稱魯棒性 有自動回收機制和異常處理機制
安全性 符合網路安全協議的
多線程性
解釋性 是java的一個缺點,因為解釋執行的語言一般會比編譯執行的語言的效率要低
2. 機制:
類:類是實例對象的模版,
介面:允許一個類實現多個介面
程序包:
多線程
取消指針
二、 Java體系結構
1. Java API;
i. 核心包java(熟練掌握一些重要的類,)
1. java.lang:
2. java.io
3. java.util
4. java.net
5. java.awt
6. java.awt.event
7. java.applet
8. java.sql
ii. 擴展功能包javax和org(分辨)
iii. 其他第三方的包(分辨)
2. JDK的下載,安裝與使用
i. 了解sun公司的網址
ii. 設置環境變數path和classpath(掌握)
iii. Jdk的操作命令,掌握以下基本命令:
1. javac——編譯命令 javac Test.java
2. java——運行命令 java Test
3. appletviewer ——Java Applet 瀏覽器 appletviewer Test.html
4. jar——java類文件歸檔命令
3. Java程序的編寫和編譯過程
i. 編寫文件的三點注意:
1. 掌握Java程序的結構,即:源程序中的三部分要素必須以包的聲明,引入類聲明,類或介面的定義的順序出現;
2. 掌握Java應用程序的入口main方法();
3. 一個源文件中只能有一個public class 類定義;且源文件的名字與public class 的類名相同(大小寫也要一致),擴展名必須是.java
ii. 編譯與運行:即javac和java命令的用法;
三、Java簡單數據類型及運算
1. 標識符和數據類型
i. Java的基本語法,了解語句,語句塊,注釋
ii. Java的標識符,能判斷標識符是否合法,了解標識符的風格約定
iii. 關鍵字,能分別大部分關鍵字,
iv. 基本數據類型,掌握八大基本數據類型和字元串類型;
2. 表達式和語句
i. 變數,了解變數的聲明及其作用域;
ii. 運算符,掌握算術運算符,關系運算符,邏輯運算符,位操作符,賦值運算符;掌握三元條件運算符,強制類型轉換運算符,了解其他運算符;能分辨運算符的優先順序順序;
3. 程序流控制(此處需要掌握的地方都是出簡單編程題的考點)
i. 掌握while和do while語句
ii. 掌握for語句
iii. 掌握if/else語句
iv. 掌握switch語句
v. 了解循環跳轉語句
4. 數組
i. 掌握一維數組的聲明,創建和初始化;
ii. 了解多維數組;
四、Java語言中面向對象的特性。
1. 了解面向對象編程的基本思想和他的基本特徵:
i. 程序中的所有東西都是對象;
ii. 程序是一系列對象的組合;
iii. 每個對象都有自己的存儲空間,可以容納其他對象;
iv. 每個對象都有一種類型;
v. 同一類型的所有對象都能夠接收相同的消息;
2. 掌握類的基本組成和使用。
i. 類的聲明;
ii. 類體:成員變數,成員方法,構造函數;
iii. 類的修飾符,變數的修飾符,方法的修飾符;
iv. 類的繼承關系:成員變數的隱藏和成員方法的重寫,this和super關鍵字;
v. Object類;
3. 了解對象的生成、使用和刪除。
i. 對象的創建;
ii. 對象的引用(域選擇運算符「.」);
iii. 對象的刪除(垃圾回收機制);
iv. 類中方法的引用;
4. 了解Java類庫中常用類和介面。
i. 核心包中的System,Math,基礎類型的封裝類等;
ii. 字元串相關類(String,StringBuffer,StringTokenizer等);
iii. 集合相關類(Collection,List,Map等介面及其實現類);
五、Java的高級特性
1. static關鍵字,了解靜態變數,靜態方法和靜態語句初始化;
2. final關鍵字,了解常量,最終方法和最終類;
3. 抽象類(abstract關鍵字),了解抽象方法和抽象類;
4. 了解介面
i. 介面的定義;
ii. 介面的實現與使用;
iii. 介面的繼承;
5. 包與訪問控制
i. 包的聲明和引入;
ii. private,預設,protected,public四種訪問控制修飾符的控制范圍;
六、 Java編程技術基礎(此處要求掌握部分為可以出編程題或者編程填空題的考點);
1. 異常處理
i. 了解異常的概念;
ii. 掌握try,catch,finally語句塊;
iii. 掌握throw,throws異常的拋出;
iv. 了解自定義異常;
2. 線程的要領和使用。
i. 了解多線程的含義
ii. 掌握線程的創建的兩種方式:繼承Thread類和實現Runnable介面
iii. 了解線程的調度(即優先順序控制)和其他的基本控制
iv. 初步了解線程的同步,包括同步方法和同步語句塊;
3. 網路程序設計
i. 了解網路的通信機制
ii. 了解URL的通信機制
iii. 掌握有連接的Socket通信機制,了解無連接的通信機制
4. 輸入/輸出
i. 了解位元組流和字元流;
位元組輸入時:把String轉換成byte類型的使用
String str=「大大的」
Byte b[]=str.getBytes();
把byte類型的轉換成string的使用
New string(b);
ii. 掌握文件和文件的基本操作;
iii. 掌握文件流和緩存流等重要輸入輸出流;
iv. 了解隨機存取文件,RandomAccessFile類的創建和操作;
七、 編寫用戶界面程序
1. 了解AWT的基本原理;
2. AWT的組件,容器,布局管理器等重要概念及其相關類;
i. 掌握所有AWT的基本組件及其相關類,包括按鈕(Button),復選框(CheckBox),下拉框(Choice),標簽(Lable),列表(List),文本區(TextArea),文本域(TextFiled)等
ii. 掌握重要容器:框架(Frame),面板(Panel),對話框(Dialog);
iii. 掌握流式布局管理器(FlowLayout)和邊界布局管理器(BorderLayout),了解網格布局管理器(GridLayout)和卡片布局管理器(CardLayout)
3. 了解AWT的事件處理機制;
i. 事件處理模型中的三類對象:事件(Event)、事件源(Event source)以及時間處理器(Event handler);
ii. 了解監聽器的定義,注冊,以及事件適配器;
iii. 掌握以下重要事件,處理介面以及對應的方法:
1. 激活組件事件:ActionEvent,ActionListener,actionPerformed();
2. 條目狀態改變:ItemEvent,ItemListener,itemStateChanged();
3. 滑鼠單擊事件:MouseEvent,MouseListener,mouseClicked();
4. 窗口關閉事件:WindowEvent,WindowListener,windowClosing();
八、 編寫小應用程序(Applet)
1. 了解Applet的基本概念
i. 掌握Applet的生命周期;
ii. 了解Applet的類層次結構;
iii. 掌握Applet的關鍵方法:init(),start(),stop(),destroy(),paint(Graphics g);
iv. 了解Applet的顯示:paint(),update(),repaint()三個方法;
2. 會編寫Applet小程序和相關運行的HTML頁面;
i. 掌握需要引入的包;
ii. Applet必須繼承自java.applet.Applet類;
iii. 掌握HTML頁面中的<Applet>標記及其重要屬性;
3. 了解Applet的圖形化用戶界面;
⑵ 簡述java語言的執行過程
1、java編譯生成的位元組碼,在所有操作系統都是一樣,故其有這樣的特點:
write once, run anywhere.其意思:只需要一次編碼,就可以在任何環境下運行。
2、不同的操作系統,其java 虛擬機是不一樣的。虛擬機將java位元組代碼轉換對應操作系統的
相關指令,保證其正常運行。
3、java 系統支持所有的硬體的平台,不存在你提及的問題,你可以放心使用。
4、解釋器在java虛擬機中,編譯器在JDK或JRE 中。
5、java虛擬機就是常說的java 運行環境,其縮寫是 JRE,安裝在操作系統下的一個目錄中,
這個目錄在安裝時可以由你自行指定,就像你安裝其它應用軟體一樣。JDK中包含了JRE,
還有開發環境,如編譯器,幫助文檔生成器,以及系統API的jar庫文件等。
⑶ java/c跟c++可以同時學嗎
還是從Java入門比較好,畢竟Java和C/C++關注比較緊密,語法上的關系點更多,推薦《Head First Java》。
可以適當鑽鑽Swing的坑,熟悉鍵盤,滑鼠監聽時間什麼的,可以試試做個沒有功能的QQ登陸界面,大概只要兩百行。反正剛入門都是先熟悉運用語法,先不用管數據結構演算法什麼的。
javac 是java語言編程編譯器。全稱java compiler。javac工具讀由java語言編寫的類和介面的定義,並將它們編譯成位元組代碼的class文件。
javac 可以隱式編譯一些沒有在命令行中提及的源文件。用 -verbose 選項可跟蹤自動編譯。當編譯源文件時,編譯器常常需要它還沒有識別出的類型的有關信息。對於源文件中使用、擴展或實現的每個類或介面,編譯器都需要其類型信息。
這包括在源文件中沒有明確提及、但通過繼承提供信息的類和介面。
C++是C語言的繼承,它既可以進行C語言的過程化程序設計,又可以進行以抽象數據類型為特點的基於對象的程序設計,還可以進行以繼承和多態為特點的面向對象的程序設計。
C++擅長面向對象程序設計的同時,還可以進行基於過程的程序設計,因而C++就適應的問題規模而論,大小由之。
C++不僅擁有計算機高效運行的實用性特徵,同時還致力於提高大規模程序的編程質量與程序設計語言的問題描述能力。
⑷ java在編譯時出現 javac:找不到文件 是怎麼回事
原因一:當前的編譯路徑並非是java類的存放路徑;
原因二:java類中沒有定義或者定義的main方法有錯誤;
建議您切換到java類存放路徑,或確認java類中的代碼編寫有沒有出錯。
(4)javac特點擴展閱讀:
Java是一門面向對象編程語言,不僅吸收了C++語言的各種優點,還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語言具有功能強大和簡單易用兩個特徵。Java語言作為靜態面向對象編程語言的代表,極好地實現了面向對象理論,允許程序員以優雅的思維方式進行復雜的編程。
Java具有簡單性、面向對象、分布式、健壯性、安全性、平台獨立與可移植性、多線程、動態性等特點 。Java可以編寫桌面應用程序、Web應用程序、分布式系統和嵌入式系統應用程序等。
參考資料:網路_java
⑸ java基礎面試題有哪些
下面是10道java基礎面試題,後附答案
1.什麼是 Java 虛擬機?為什麼 Java 被稱作是「平台無關的編程語言」?
Java 虛擬機是一個可以執行 Java 位元組碼的虛擬機進程。Java 源文件被編譯成能被 Java 虛擬機執行的位元組碼文件。
Java 被設計成允許應用程序可以運行在任意的平台,而不需要程序員為每一個平台單獨重寫或者是重新編譯。Java 虛擬機讓這個變為可能,因為它知道底層硬體平台的指令長度和其他特性。
2.「static」關鍵字是什麼意思?Java 中是否可以覆蓋(override)一個 private 或者是static 的方法?
「static」關鍵字表明一個成員變數或者是成員方法可以在沒有所屬的類的實例變數的情況下被訪問。
Java 中 static 方法不能被覆蓋,因為方法覆蓋是基於運行時動態綁定的,而 static 方法是編譯時靜態綁定的。static 方法跟類的任何實例都不相關,所以概念上不適用。
3.JDK 和 JRE 的區別是什麼?
Java 運行時環境(JRE)是將要執行 Java 程序的 Java 虛擬機。它同時也包含了執行 applet 需要的瀏覽器插件。Java 開發工具包 (JDK)是完整的 Java 軟體開發包,包含了 JRE,編譯器和其他的工具(比如:JavaDoc,Java 調試器),可以讓開發者開發、編譯、執行 Java 應用程序。
4.是否可以在 static 環境中訪問非 static 變數?
static 變數在 Java 中是屬於類的,它在所有的實例中的值是一樣的。當類被 Java 虛擬機載入的時候,會對 static 變數進行初始化。如果你的代碼嘗試不用實例來訪問非 static 的變數,編譯器會報錯,因為這些變數還沒有被創建出來,還沒有跟任何實例關聯上。
5.Java 支持的數據類型有哪些?什麼是自動拆裝箱?
Java 語言支持的 8 中基本數據類型是:
byte
short
int
long
float
double
boolean
char
自動裝箱是 Java 編譯器在基本數據類型和對應的對象包裝類型之間做的一個轉化。比如:把 int 轉化成 Integer,double 轉化成 double,等等。反之就是自動拆箱。
6.Java 支持多繼承么?
不支持,Java 不支持多繼承。每個類都只能繼承一個類,但是可以實現多個介面。
7.Java 中,什麼是構造函數?什麼是構造函數重載?什麼是復制構造函數?
當新對象被創建的時候,構造函數會被調用。每一個類都有構造函數。在程序員沒有給類提供構造函數的情況下,Java 編譯器會為這個類創建一個默認的構造函數。
Java 中構造函數重載和方法重載很相似。可以為一個類創建多個構造函數。每一個構造函數必須有它自己唯一的參數列表。
Java 不支持像 C++中那樣的復制構造函數,這個不同點是因為如果你不自己寫構造函數的情況下,Java 不會創建默認的復制構造函數。
8.Java 中的方法覆蓋(Overriding)和方法重載(Overloading)是什麼意思?
Java 中的方法重載發生在同一個類裡面兩個或者是多個方法的方法名相同但是參數不同的情況。與此相對,方法覆蓋是說子類重新定義了父類的方法。方法覆蓋必須有相同的方法名,參數列表和返回類型。覆蓋者可能不會限制它所覆蓋的方法的訪問。
9.介面和抽象類的區別是什麼?
Java 提供和支持創建抽象類和介面。它們的實現有共同點,不同點在於:
介面中所有的方法隱含的都是抽象的。而抽象類則可以同時包含抽象和非抽象的方法。
類可以實現很多個介面,但是只能繼承一個抽象類
類如果要實現一個介面,它必須要實現介面聲明的所有方法。但是,類可以不實現抽象類聲明的所有方法,當然,在這種情況下,類也必須得聲明成是抽象的。
抽象類可以在不提供介面方法實現的情況下實現介面。
Java 介面中聲明的變數默認都是 final 的。抽象類可以包含非 final 的變數。
Java 介面中的成員函數默認是 public 的。抽象類的成員函數可以是 private, protected 或者是 public。
介面是絕對抽象的,不可以被實例化。抽象類也不可以被實例化,但是,如果它包含 main 方法的話是可以被調用的。
10.什麼是值傳遞和引用傳遞?
對象被值傳遞,意味著傳遞了對象的一個副本。因此,就算是改變了對象副本,也不會影響源對象的值。
對象被引用傳遞,意味著傳遞的並不是實際的對象,而是對象的引用。因此,外部對引用對象所做的改變會反映到所有的對象上。
最後祝你面試順利!
⑹ 什麼是java
什麼是JAVA?
提問者: nan7913 - 見習魔法師 二級
----------------------------
Java是SUN公司開發的一種面向對象的新一代網路編程語言,它可以在各種不同的機器、操作系統的網路環境中進行開發,具有解釋型語言(如Basic語言)和編譯型語言(如C語言)的特性。Java摒棄了C 中各種弊大於利的功能和許多很少用到的功能,用Java開發的程序可以在網路上傳輸,並運行於任何客戶機上。
特點
1、簡單性:
Java語言通過提供最基本的方法來完成指定的任務,只需理解一些基本的概念,就可以用它編寫出適合於各種情況的應用程序。Java略去了運算符重載、多重繼承等模糊的概念,並且通過實現自動垃圾收集大大簡化了程序設計者的內存管理工作。另外,Java也適合於在小型機上運行,它的基本解釋器及類的支持只有40KB左右,加上標准類庫和線程的支持也只有215KB左右。庫和線程的支持大概有215KB左右。
2、面向對象:
Java語言的設計集中於對象及其介面,它提供了簡單的類機制以及動態的介面模型。對象中封裝了它的狀態變數以及相應的方法,實現了模塊化和信息隱藏;而類則提供了一類對象的原型,並且通過繼承機制,子類可以使用父類所提供的方法,實現了代碼的復用。
3、分布性:
Java是面向網路的語言。通過它提供的類庫可以處理TCP/IP協議,用戶可以通過URL地址在網路上很方便地訪問其它對象。
4、可靠性:
Java在編譯和運行程序時,都要對可能出現的問題進行檢查,以消除錯誤的產生。它提供自動垃圾收集來進行內存管理,防止程序員在管理內存時容易產生的錯誤。通過集成的面向對象的例外處理機制,在編譯時,Java提示出可能出現但未被處理的例外,幫助程序員正確地進行選擇以防止系統的崩潰。另外,Java在編譯時還可捕獲類型聲明中的許多常見錯誤,防止動態運行時不匹配問題的出現。
5、安全性:
用於網路、分布環境下的Java必須要防止病毒的入侵。Java不支持指針, 一切對內存的訪問都必須通過對象的實例變數來實現,這樣就防止程序員使用「特洛伊」木馬等欺騙手段訪問對象的私有成員,同時也避免了指針操作中容易產生的錯誤。
6、體系結構中立:
Java解釋器生成與體系結構無關的位元組碼指令,只要安裝Java運行系統,Java程序就可在任意的處理器上運行。這些位元組碼指令對應於Java虛擬機中的表示,Java解釋器得到位元組碼後,對它進行轉換,使之能夠在不同的平台運行。
7、可移植性:
與平台無關的特性使Java程序可以方便地被移植到網路上的不同機器。同時,Java的類庫中也實現了與不同平台的介面,使這些類庫可以移植。另外,Java編譯器是由Java語言實現的,Java運行時系統由標准C實現,這使得Java 系統本身也具有可移植性。
8、解釋執行:
Java解釋器直接對Java位元組碼進行解釋執行。位元組碼本身攜帶了許多編譯時信息,使得連接過程更加簡單。
9、高性能:
和其它解釋執行的語言如BASIC、TCL不同,Java位元組碼的設計使之能很容易地直接轉換成對應於特定CPU的機器碼,從而得到較高的性能。
10、多線程:
多線程機制使應用程序能夠並行執行,而且同步機制保證了對共享數據的正確操作。通過使用多線程,程序設計者可以分別用不同的線程完成特定的行為,而不需要採用全局的事件循環機制,這樣就很容易地實現網路上的實時交互行為。
11、動態性:
Java的設計使它適合於一個不斷發展的環境。在類庫中可以自由地加入新的方法和實例變數而不會影響用戶程序的執行。並且Java通過介面來支持多重繼承,使之比嚴格的類繼承具有更靈活的方式和擴展性。
Java語言的特性使它可以最大限度地利用網路。Ap-plet是Java的小應用程序,它是動態、安全、跨平台的網路應用程序。JavaApplet嵌入HTML語言,通過主頁發布到Internet。網路用戶訪問伺服器的Applet時,這些Applet 從網路上進行傳輸,然後在支持Java的瀏覽器中運行。由於Java語言的安全機制,用戶一旦載入Applet,就可以放心地來生成多媒體的用戶界面或完成復雜的計算而不必擔心病毒的入侵。雖然Applet可以和圖像、聲音、動畫等一樣從網路上下載,但它並不同於這些多媒體的文件格式,它可以接收用戶的輸入,動態地進行改變,而不僅僅是動畫的顯示和聲音的播放。
Java的開發工具。
1、 UltraEdit
UltraEdit是共享軟體,最新版本是V10.20b。其官方網址是:[url]www.ultraedit.com[/url] 。它是一個功能強大的文本、HTML、程序源代碼編輯器。作為源代碼編輯器,它的默認配置可以對C/C , VB, HTML, Java和 Perl進行語法著色。用它設計Java程序時,可以對Java的關鍵詞進行識別並著色,方便了Java程序設計。它具有完備的復制、粘貼、剪切、查找、替換、格式控制等編輯功能。可以在Advanced菜單的Tool Configuration 菜單項配置好Java的編譯器Javac和解釋器Java,直接編譯運行Java程序。
配置Javac:在Command Line里輸入:D:jspj2sdkinJavac %f,這里Javac的路徑要根據JDK的實際安裝路徑來指定,%f是指當前活動文檔的全文件名。在Menu Item Name 里輸入Javac ,讓其顯示在Advanced菜單里,這樣就可以直接執行它進行編譯了。選中Output To List Box和Capture Output ,這樣就可以在源代碼下面的輸出窗口裡看到編譯時的錯誤信息了。
配置不帶參數運行的解釋器Java:在Command Line里輸入:D:jspj2sdkinJava %n,在Menu Item Name 里輸入: Java filename,選中Output To List Box和Capture Output ,運行結果顯示在輸出窗口裡。
配置帶參數運行的解釋器Java:在Command Line里輸入:d:jspj2sdkinJava %n%modify%,在Menu Item Name 里輸入:Java filename parameter,這樣當執行這個菜單項的時候,會顯示一個要求輸入參數的對話框。
2、 Editplus
EditPlus也是共享軟體,最新版本是EditPlus 2.12。其官方網址是:[url]www.editplus.com[/url]。EditPlus也是功能很全面的文本、HTML、程序源代碼編輯器。默認的支持HTML、CSS、PHP、ASP、Perl、C/C 、Java、JavaScript和VBScript的語法著色。通過定製語法文件還可以擴展到其他程序語言。可以在Tools菜單的Configure User Tools菜單項配置用戶工具,類似於UltraEdit的配置,配置好Java的編譯器Javac和解釋器Java後,通過EditPlus的菜單可以直接編譯執行Java程序。
3、Jcreator
Jcreator是一個用於Java程序設計的集成開發環境,具有編輯、調試、運行Java程序的功能。官方網址是:[url]www.jcreator.com[/url] 。當前最新版本是Jcreator 3.10,它又分為LE和Pro版本。LE版本功能上受到一些限制,是免費版本。Pro版本功能最全,但這個版本是一個共享軟體。這個軟體比較小巧,對硬體要求不是很高,完全用C 寫的,速度快、效率高。具有語法著色、代碼自動完成、代碼參數提示、工程向導、類向導等功能。第一次啟動時提示設置Java JDK主目錄及JDK JavaDoc目錄,軟體自動設置好類路徑、編譯器及解釋器路徑,還可以在幫助菜單中使用JDK Help。但目前這個版本對中文支持性不好。
4、Eclipse
Eclipse是一個開放可擴展的集成開發環境(IDE)。它不僅可以用於Java的開發,通過開發插件,還可以構建其他的開發工具。Eclipse是開放源代碼的項目,並可以免費下載。它的官方網址是:[url]www.eclipse.org[/url],提供Releases、Stable Builds、Integration Builds和Nightly Builds下載。建議使用Releases或Stable Builds版本。
Releases版本是Eclipse開發團隊發布的主要發行版本,是經過測試的穩定的版本,適合要求穩定而不需要最新改進功能的使用者選擇。目前最新的Release版本是Eclipse 3.0。Stable Builds版本對大多數使用者而言已足夠穩定,由開發團隊用比較穩定的Integration Build版本提升到Stable Build而來,適合想使用Eclipse新功能的使用者選擇。對於Releases版本2.1.x,在Eclipse的官方網站上有一個語言包可以下載,這樣Eclipse及其幫助都有簡體中文版。Eclipse用於Java開發,與UltraEdit、Editplus兩種編輯器和Jcreator IDE比較,Eclipse更專業,功能更強大。
總之,Java語言提供一種強有力的工具支援程序設計員。Java讓程序設計變得更容易,因為它屬於面向對象語言,而且提供了自動的內存垃圾收集功能。再者,由於Java碼具備結構中立性,因此其應用程序成為非同質性運算環境 (例如Internet)的理想方案。
⑺ 簡述javac命令的用法
javac命令是用來編譯java程序的。。進入doc命令。要編譯java程序時,需確保當前的路徑就是你要編譯的java程序的路徑,例如,我的桌面有一個Test.java的程序,要編譯它時,進入到當前桌面路徑,運行命令:javacTest.java(當然,這些前提都得是你已經正確安裝了JDK。)如圖:
⑻ 為什麼Java可以跨平台呢為什麼,什麼是虛擬機阿
一般我們所謂的執行檔
內容是一堆人類看不懂得機械碼 是拿來給機器看的
因為他要直接指揮計算機去做事情 所以得寫成機器可以執行的語言
問題是
每一台機器有自己的語言 每一個平台也有自己的語言
所以在不同的機器上 我們要用不同的執行檔
那 Java 怎麼達成一個程序 跨平台執行的呢~~
其實, Java 是在各種平台之上建立起他自己的平台
也就是所謂的 JVM (Java 虛擬機器)
再用 JVM 來執行他的類別檔
因為不管在甚麼平台上 實際執行類別檔的都是 JVM
所以就可以達到 跨平台的目的
123456
類別檔程式
______________________________|_________________________________
| | | |
Windows95/98版JVM WindowsNT系列JVM Linux版JVM Unix版JVM
| | | |
Windows95/98 WindowsNT/2000 Linux Unix
所以要執行 Java 的程序 就必須先在機器上啟動 JVM 才行
而啟動 JVM 的程序 就是所謂的 JRE
Java虛擬機是一個想像中的機器,在實際的計算機上通過軟體模擬來實現。Java虛擬機有自己想像中的硬體,如處理器、堆棧、寄存器等,還具有相應的指令系統。
1.為什麼要使用Java虛擬機
Java語言的一個非常重要的特點就是與平台的無關性。而使用Java虛擬機是實現這一特點的關鍵。一般的高級語言如果要在不同的平台上運行,至少需要編譯成不同的目標代碼。而引入Java語言虛擬機後,Java語言在不同平台上運行時不需要重新編譯。Java語言使用模式Java虛擬機屏蔽了與具體平台相關的信息,使得Java語言編譯程序只需生成在Java虛擬機上運行的目標代碼(位元組碼),就可以在多種平台上不加修改地運行。Java虛擬機在執行位元組碼時,把位元組碼解釋成具體平台上的機器指令執行。
2.誰需要了解Java虛擬機
Java虛擬機是Java語言底層實現的基礎,對Java語言感興趣的人都應對Java虛擬機有個大概的了解。這有助於理解Java語言的一些性質,也有助於使用Java語言。對於要在特定平台上實現Java虛擬機的軟體人員,Java語言的編譯器作者以及要用硬體晶元實現Java虛擬機的人來說,則必須深刻理解Java虛擬機的規范。另外,如果你想擴展Java語言,或是把其它語言編譯成Java語言的位元組碼,你也需要深入地了解Java虛擬機。
⑼ 4. 下列關於JAVA語言特點的敘述中,錯誤的是( )AJava是面向過程的編程語言BJav
咨詢記錄 · 回答於2021-10-17
⑽ java語法基礎,具體內容
Java基礎——Java開發前奏
Java的特點
Java最主要的特點是:一次編譯,到處運行(WriteOnce,RunAnywhere.)。
原理:Java源程序經編譯後生成.class位元組碼文件,.class文件由Java虛擬機(JVM)解釋執行。不同的操作系統下,只要有相應的Java位元組碼解釋程序,.class文件就能夠運行,這是Java跨平台性的根本。c和java編程與執行的過程如下圖所示:
Java的內涵
1、是一種編程語言
2、是一套開發工具
3、是一個運行環境
Java應用平台
1、J2EE()——用於企業級應用程序的開發
2、J2SE(Java2PlatformStandardEdition)——用於普通標准應用程序的開發
3、J2ME(Java2PlatformMicroEdition)——用於小型消費類電子產品或嵌入式系統的開發
J2SE包括4部分——JVM、JRE、JDK與Java語言。
環境變數的設置
環境變數——在操作系統中定義的變數,可供操作系統上所有的應用程序使用。
1、查看環境變數
a.命令提示行:環境變數的命令——set(環境變數名)
b.窗口方式:我的電腦->屬性->高級->環境變數
2、設置path環境變數
path環境變數的作用:設置操作系統尋找和執行應用程序的路徑。
JAVA_HOME:C:ProgramFilesJavajdk1.6.0_14
path:%JAVA_HOME%in;%JAVA_HOME%jrein
3、設置classpath環境變數
classpath環境變數的作用:讓Java執行環境找到指定的java程序(.class文件)。
classpath:.;%JAVA_HOME%libdt.jar;%JAVA_HOME%lib ools.jar
注意:a.%JAVA_HOME%前面有「.;」,「.」表示當前目錄,兩個路徑之間用「;」隔開。
b.設置classpath的路徑中不能有空格,也不能有中文字元。
JVM的運行過程
Java反編譯工具——JAD、FrontEnd
Java開發工具
1、記事本
注意保存時文件名應為*.java。
2、UltraEdit、EditPlus
使用EditPlus編輯和編譯Java程序,需要進行相應配置。選擇「工具」->「參數選擇」->「工具」->「用戶工具」->「添加工具」->「應用程序」。首先設置「javac」的參數,具體如下圖,其中「命令」為javac.exe文件的地址。
然後設置「java」的參數,如下圖所示,其中「命令」為java.exe文件的路徑。
設置好後默認「javac」工具的快捷鍵為Ctrl+1,「java」工具的快捷鍵為Ctrl+2。當編輯好Java源程序後,使用Ctrl+1即可對其進行編譯,然後按Ctrl+2運行程序。如下圖所示:
3、集成開發環境——Eclipse、MyEclipse、JBuilder等。
關於Eclipse和MyEclipse,剛用的時候感覺二者差不多,查了資料才知道Eclipse是基礎,如同操作系統;而MyEclipse是在Eclipse上面運行的程序,不過進行了增強並提供了新功能。
以前用過Microsoft的VisualStudio2005,個人感覺VS2005是一個功能非常強大的集成開發環境,不過.NET和Java畢竟不是一家人,學Java還是要用Eclipse的。
JDK中的常用包
1、java.lang——包含一些Java語言的核心類,如String、Math、Thread、System、Integer類等。
2、java.awt——包含構成抽象窗口工具集的多個類,用來構建和管理應用程序的圖形用戶界面(GUI)。
3、java.applet——包含applet運行所需的一些類。
4、java.net——包含執行與網路相關操作的類。
5、java.io——包含能提供多種輸入/輸出功能的類。
6、java.util——包含一些實用工具類。
Java的命名習慣
1、包名中的字母一律小寫。如:xxxyyyzzz。
2、類名、介面名應使用名詞,每個單詞的首字母大寫。如:XxxYyyZzz。
3、方法名,第一個單詞小寫,後面每個單詞的首字母大寫。如:xxxYyyZzz。
4、變數名,第一個單詞小寫,後面每個單詞的首字母大寫。
5、常量名中的每個字母一律大寫。如:XXXYYYZZZ。
Java基礎——Java語法基礎(1)
Java代碼基本格式
Java中所有程序代碼都必須存在於一個類中,用class關鍵字定義類,在class之前可以有一些修飾符。格式如下:
修飾符class類名
{
程序代碼
}
註:
1、Java是嚴格區分大小寫的。
2、Java程序中一句連續的字元串不能分開在兩行中寫。
Java程序的注釋
Java里的注釋有三種類型:
1、單行注釋
在注釋內容前面加「//」,格式為:
代碼;//注釋內容
2、多行注釋
以斜杠加星號開頭,以星號加斜杠結尾。
3、文檔注釋
以斜杠加兩個星號開頭,以一個星號加斜杠結束。
用這種方法注釋的內容會被解釋成程序的正式文檔,並能包含進諸如javadoc之類的工具程序生成的文檔里,用以說明該程序的層次結構及其方法。
補充:
1、多行注釋中可以嵌套「//」注釋,但不能嵌套多行注釋符號。
2、程序注釋一般占程序代碼總量的20%-50%,「可讀性第一,效率第二」。
Java中的標識符
Java中的包、類、方法、參數、變數的名字,可以由任意順序的大小寫字母、數字、下劃線(_)、美元符號($)組成,但不能以數字開頭,不能是Java中的保留關鍵字。
Java的關鍵字
1、用於類和介面的聲明:class,extends,implements,interface
2、包引入和包聲明:import,package
3、數據類型:byte,boolean,char,double,int,long,float,short
4、某些數據類型的可選值:flase,ture,null
5、流程式控制制:break,case,continue,default,do,else,for,if,return,switch,while
6、異常處理:catch,finally,throw,throws,try
7、修飾符:abstract,final,native,private,protected,public,static,synchronilzed,transient,volatitle
8、操作符:instanceof
9、創建對象:new
10、引用:this,supper
11、方法返回類型:void
12、保留字:const,goto
Java中的常量
1、整形常量
十進制
十六進制——以0x或0X開頭
八進制——以0開頭
長整形——以L(l)結尾
2、浮點數常量
單精度浮點數——後面加f(F)
雙精度浮點數——後面加d(D)
註:
a.小數常量的默認類型是double型,所以float類型常量後一定要加f(F)。
b.浮點數常量可以用指數形式表示,如5.022e+23f
3、布爾常量
true或false
4、字元常量
由英文字母、數字、轉義序列、特殊字元等的字元所表示,如'a'、' '等。
Java中的字元占兩個位元組,是用Unicode碼表示的,也可以使用'u'加Unicode碼值來表示對應字元,如'u0027'。
常用的轉義字元有:
——表示接受鍵盤輸入,相當於按了一下回車鍵
——表示換行
——表示製表符,相當於Tab鍵
——表示退格鍵,相當於BackSpace鍵
'——表示單引號
」——表示雙引號
\——表示反斜杠「」
5、字元串常量
字元串常量用雙引號括起來。
6、null常量
null常量表示對象的引用為空。
Java的變數類型
基本數據類型之間的轉換
1、自動類型轉換(隱式類型轉換)
條件:
a.兩種類型彼此兼容
b.目標類型的取值范圍要大於源類型
2、強制類型轉換(顯示類型轉換)
格式:目標類型常量=(目標類型)值
註:字元串可以使用加號「+」同其他的數據類型相連而形成一個新的字元串。
變數的作用域
代碼塊決定了變數的作用域,作用域決定了變數的可見性和存在時間。
局部變數
在一個函數或函數裡面的代碼塊中定義的變數稱為局部變數。
局部變數在進行取值操作前必須被初始化或進行過賦值操作。
函數
1、定義函數的格式
返回值類型函數名(參數類型形式參數1,參數類型形式參數2,...)
{
程序代碼
return返回值;
}
2、函數的重載
函數的重載就是在一個類中可以同時存在一個以上的同名函數,只要它們的參數個數或類型不同即可。
Java基礎——Java語法基礎(2)——運算符
Java中的運算符
1、算術運算符
a.字元串+其他類型=字元串
b.如果對負數求余,可以把除數負號忽略不計,如5%-1=1。但如果被除數是負數就另當別論了。
2、賦值運算符
a.在Java中,可以把賦值語句連在一起,如:x=y=z=5;
b.x+=y相當於x=x+y
3、比較運算符
a.要注意比較運算符「==」和賦值運算符「=」的區別,特別是布爾型變數進行比較時。
b.可以將比較運算的表達式寫為「false==變數」的形式,以防止誤寫為賦值運算。
4、邏輯運算符
a.邏輯運算符用於對boolean型結果的表達式進行運算,運算的結果都是boolean型。
b.「&」和「&&」的區別在於,如果使用前者連接,那麼無論任何情況,「&」兩邊的表達式都會參與計算。如果使用後者連接,當「&&」的左邊為false,則將不會計算其右邊的表達式。「|」和「||」的區別與「&」和「&&」的區別一樣。
5、位運算符
位運算——對數據按二進制位進行移位操作。
適用類型:byte,short,char,int,long
位運算包括:
&位與
|位或
^位異或
<<左移,左移n位相當於乘以2的n次方
>>右移,右移n位相當於除以2的n次方
>>>無符號右移
註:
a.位運算符也可以與「=」賦值運算符組合產生新的賦值運算符,如:&=,<<=等。
b.移位不會改變變數本身的值,如a>>1在一行語句中單獨存在毫無意義。
c.對低於int型的操作數將先自動轉換為int型再移位;對int型整數移位a>>b,系統先將b對32取模,得到的結果才是真正移位的位數;對於long型整數移位時則是先將移位位數對64取模。
運算符的優先順序
編程技巧:
1、不要在一行中編寫太復雜的表達式,可以將其分解為幾條語句。
2、多用括弧。
Java基礎——Java語法基礎(3)
程序控制流程
1、順序結構
按順序執行
2、if條件語句
a.if...
b.if...else...
可簡寫為:變數=布爾表達式?語句1:語句2;
c.if...elseif...else...
3、switch選擇語句
switch(表達式)
{
case取值1:
語句塊1;
break;
...
case取值n:
語句塊n;
break;
default:
語句塊n+1;
break;
}
4、while循環語句
while(條件表達式)
{
執行語句
}
5、dowhile循環語句
do
{
執行語句
}while(條件表達式)
6、for循環語句
for(初始化表達式;循環條件表達式;循環後操作表達式)
{
執行語句
}
7、增強for循環
for(循環變數類型循環變數名稱:要被遍歷的對象)
{
執行語句
}
8、break與continue語句
a.一個無標號的break語句會把控制傳回當前最內層循環(while,do,for,switch)的下一條語句。
b.無標號的continue語句的作用是跳過當前循環的剩餘語句塊,接著執行下一次循環。
數組
1、數組的定義
如:int[]x=newint[100];
或intx[]=newint[100];
2、數組的靜態初始化
如:int[]aa=newint[]{3,4,5};
3、多維數據
如:
int[][]xx=newint[3][];
xx[0]=newint[3];
xx[1]=newint[2];
4、一些與數組相關的函數
a.System.array(Objectsrc,intsrcPos,Objectdest,intdestPos,intlength)復制數組,將源數組srcPos開始的length個元素從目標數組的destPos位置開始存儲。
b.Array.sort()數組升序排序