文章來源:一路讀 http://www.yiludu.cn
一、Java基礎知識
1. Java有那些基礎資料型別 (Elementary Data Type),String是不是基礎資料型別 (Elementary Data Type),他們有何區別。
Integer literals,Floating-point literals,character literals,Boolean literal,String iteral.
String 不是基礎資料型別 (Elementary Data Type)
2. 字串的操作:
寫一個方法,實現字串的反轉,如:輸入abc,輸出cba
public static String reverse(String s){
int length=s.length();
StringBuffer result=new StringBuffer(length);
for(int i=length-1;i>=0;i--)
result.append(s.charAt(i));
return result.toString();
}
寫一個方法,實現字串的替換,如:輸入bbbwlirbbb,輸出bbbhhtccc。
3. 資料類型之間的轉換
如何將數值型字元轉換為數字(Integer,Double)
如何將數字轉換為字元
如何去小數點前兩位,並四捨五入。
4. 日期和時間
如何取得年月日,小時分秒
Date dat=new Date();
dat.getYear();dat.getMonth();dat.getDay();dat.getHours();...
如何取得從1970年到現在的毫秒數
long now=dat.getTime();
如何擷取某個日期是當月的最後一天
如何格式化日期
DateFormate df=DateFormate.getInstance();
df.Format(dat);
5. 數組和集合
6. 檔案和目錄(I/O)操作
如何列出某個目錄下的所有檔案
如何列出某個目錄下的所有子目錄
判斷一個檔案或目錄是否存在
如何讀寫檔案
7. Java多態的實現(繼承、重載、覆蓋)
8. 編碼轉換,怎樣實現將GB2312編碼的字串轉換為ISO-8859-1編碼的字串。
9. Java中訪問資料庫的步驟,Statement和PreparedStatement之間的區別。
10. 找出下列代碼可能存在的錯誤,並說明原因:
二、JSP&Servlet技術
1. 描述JSP和Servlet的區別、共同點、各自應用的範圍
2. 在Web開發中需要處理HTML標記時,應做什麼樣的處理,要篩選那些字元(< > & "")
3. 在JSP中如何讀取用戶端的請求,如何訪問CGI變數,如何確定某個Jsp檔案的真實路徑。
4. 描述Cookie和Session的作用,區別和各自的應用範圍,Session工作原理。
5. 列出Jsp中包含外部檔案的方式,兩者有何區別。
6. 說明Jsp中errorPage的作用,應用範圍。
7. 介紹在Jsp中如何使用JavaBeans。
8. 簡單介紹JSP的標記庫
9. Jsp和Servlet中的請求轉寄分別如何?。
三、J2EE相關知識
1. 介紹J2EE、J2SE、J2SE的區別。
2. J2EE是一種技術還是一種平台,他提供了那些技術。
3. 什麼是Application Server,它有什麼功能和優點。
4. 簡單介紹串連池的優點和原理。
5. Web.xml的作用
四、其他
1. Web安全性的考慮(表單驗證、瀏覽器Basic方式的驗證,應用程式的安全性,SSL,代碼考慮)
2. 簡單介紹您所瞭解的MVC。
3. 簡單介紹所瞭解的XML。
4. 文檔和編碼規範
5. Java中的分頁、效率考慮。
6. 簡單介紹您所瞭解的structs。
找出以下程式錯誤。
Class Test{
private String par1;
private String par2;
Test(){
}
public static void main(String[] arg){
int a ;
if(a){
System.out.println("par1="+par1);
}else{
System.out.println("par2=" + par2);
}
}
}
==================================
public class Test
{
public static int a = 5;
public static void main(String[] args)
{
Test test = new Test();
test = null;
System.out.println(test.a);
}
}
答案是5,a為靜態變數;不依賴對象,即使為空白。
J2EE初學者需要理解的問題
一、J2EE提出的背景
1、 企業級應用程式框架的需求
在許多企業級應用中,例如資料庫連接、郵件服務、交易處理等都是一些通用企業需求模組,這些模組如果每次再開發中都由開發人員來完成的話,將會造成開發週期長和代碼可*性差等問題。於是許多大公司開發了自己的通用模組服務。這些服務性的軟體系列統稱為中介軟體。
2、 為了通用必須要提出規範,不然無法達到通用
在上面的需求基礎之上,許多公司都開發了自己的中介軟體,但其與使用者的溝通都各有不同,從而導致使用者無法將各個公司不同的中介軟體組裝在一塊為自己服務。從而產生瓶頸。於是提出標準的概念。其實J2EE就是基於JAVA技術的一系列標準。
註:中介軟體的解釋 中介軟體處在作業系統和更高一級應用程式之間。他充當的功能是:將應用程式運行環境與作業系統隔離,從而實現應用程式開發人員不必為更多系統問題憂慮,而直接關注該應用程式在解決問題上的能力 。我們後面說到的容器的概念就是中介軟體的一種。
二、相關名詞解釋
容器:充當中介軟體的角色
WEB容器:給處於其中的應用程式組件(JSP,SERVLET)提供一個環境,使JSP,SERVLET直接更容器中的環境變數介面互動,不必關注其它系統問題。主要有WEB伺服器來實現。例如:TOMCAT,WEBLOGIC,WEBSPHERE等。該容器提供的介面嚴格遵守J2EE規範中的WEB APPLICATION 標準。我們把遵守以上標準的WEB伺服器就叫做J2EE中的WEB容器。
EJB容器:Enterprise java bean 容器。更具有行業領域特色。他提供給運行在其中的組件EJB各種管理功能。只要滿足J2EE規範的EJB放入該容器,馬上就會被容器進行高效率的管理。並且可以通過現成的介面來獲得系統層級的服務。例如郵件服務、交易管理。
WEB容器和EJB容器在原理上是大體相同的,更多的區別是被隔離的外界環境。WEB容器更多的是跟基於HTTP的請求打交道。而EJB容器不是。它是更多的跟資料庫、其它服務打交道。但他們都是把與外界的互動實現從而減輕應用程式的負擔。例如SERVLET不用關心HTTP的細節,直接引用環境變數session,request,response就行、EJB不用關心資料庫連接速度、各種事務控制,直接由容器來完成。
RMI/IIOP:遠程方法調用/internet對象請求中介協議,他們主要用於通過遠程調用服務。例如,遠程有一台電腦上運行一個程式,它提供股票分析服務,我們可以在本機電腦上實現對其直接調用。當然這是要通過一定的規範才能在異構的系統之間進行通訊。RMI是JAVA特有的。
JNDI:JAVA命名目錄服務。主要提供的功能是:提供一個目錄系統,讓其它各地的應用程式在其上面留下自己的索引,從而滿足快速尋找和定位分布式應用程式的功能。
JMS:JAVAMessage Service。 主要實現各個應用程式之間的通訊。包括點對點和廣播。
JAVAMAIL:JAVA郵件服務。提供郵件的儲存、傳輸功能。他是JAVA編程中實現郵件功能的核心。相當MS中的EXCHANGE開發包。
JTA:JAVA事務服務。提供各種分散式交易服務。應用程式只需調用其提供的介面即可。
JAF:JAVA安全認證架構。提供一些安全控制方面的架構。讓開發人員通過各種部署和自訂實現自己的個性安全控制策略。
EAI:公司專屬應用程式整合。是一種概念,從而牽涉到好多技術。J2EE技術是一種很好的整合實現。
三、J2EE的優越性
1、 基於JAVA 技術,平台無關性表現突出
2、 開放的標準,許多大型公司已經實現了對該規範支援的應用伺服器。如BEA ,IBM,ORACLE等。
3、 提供相當專業的通用軟體服務。
4、 提供了一個優秀的企業級應用程式架構,對快速高品質開發打下基礎
四、現狀
J2EE是由SUN 公司開發的一套企業級應用規範。現在最高版本是1.4。支援J2EE的應用伺服器有IBM WEBSPHERE APPLICATION SERVER,BEA WEBLOGIC SERVER,JBOSS,ORACLE APPLICATION SERVER,SUN ONE APPLICATION SERVER 等。
學習Java的30個基本概念
Java概述:
目前Java主要應用於中介軟體的開發(middleware)---處理客戶機於伺服器之間的通訊技術,早期的實踐證明,Java不適合pc應用程式的開發,其發展逐漸層成在開發手持功能,互連網資訊站,及車載電腦的開發.Java於其他語言所不同的是程式運行時提供了平台的獨立性,稱許可以在windows,solaris,linux其他動作系統上使用完全相同的代碼.Java的文法與C++文法類似,C++/C程式員很容易掌握,而且Java是完全的徹底的物件導向的,其中提出了很好的GC(Garbage Collector)垃圾處理機制,防止記憶體溢出.
Java的白皮書為我們提出了Java語言的11個關鍵特性.
(1)Easy:Java的文法比C++的相對簡單,另一個方面就是Java能使軟體在很小的機器上運行,基礎解釋其和類庫的支援的大小約為40kb,增加基本的標準庫和線程支援的記憶體需要增加125kb.
(2)分布式:Java帶有很強大的TCP/IP協議族的常式庫,Java應用程式能夠通過URL來穿過網路來訪問遠程對象,由於servlet機制的出現,使Java編程非常的高效,現在許多的大的web server都支援servlet.
(3)OO:物件導向設計是把重點放在對象及對象的介面上的一個編程技術.其物件導向和C++有很多不同,在與多重繼承的處理及Java的原類模型.
(4)健壯特性:Java採取了一個安全指標模型,能減小重寫記憶體和資料崩潰的可能性。
(5)安全:Java用來設計網路 和分布系統,這帶來了新的安全問題,Java可以用來構建防病毒和防攻擊的System.事實證明Java在防毒這一方面做的比較好.
(6)中立體繫結構:Java編譯其產生體繫結構中立的目標檔案格式可以在很多處理器上執行,編譯器產生的指令位元組碼(Javabytecode)實現此特性,此位元組碼可以在任何機器上解釋執行.
(7)可移植性:Java中對基本資料結構類型的大小和演算法都有嚴格的規定所以可移植性很好.
(8)多線程:Java處理多線程的過程很簡單,Java把多線程實現交給底下作業系統或線程程式完成.所以多線程是Java作為伺服器端開發語言的流行原因之一
(9)Applet和servlet:能夠在網頁上執行的程式叫Applet,需要支援Java的瀏覽器很多,而applet支援動態網頁,這是很多其他語言所不能做到的.
基本概念:
1.OOP中唯一關係的是對象的介面是什麼,就像電腦的銷售商她不管電源內部結構是怎樣的,他只關係能否給你提供電就行了,也就是只要知道can or not而不是how and why.所有的程式是由一定的屬性和行為對象組成的,不同的對象的訪問通過函數調用來完成,對象間所有的交流都是通過方法調用,通過對封裝對象資料,很大限度上提高複用率.
2.OOP中最重要的思想是類,類是模板是藍圖,從類中構造一個對象,即建立了這個類的一個執行個體(instance)
3.封裝:就是把資料和行為結合起在一個包中)並對對象使用者隱藏資料的實現過程,一個對象中的資料叫他的執行個體欄位(instance field)
4.通過擴充一個類來獲得一個新類叫繼承(inheritance),而所有的類都是由Object根超類擴充而得,根超類下文會做介紹.
5.對象的3個主要特性
behavior---說明這個對象能做什麼.
state---當對象施加方法時對象的反映.
identity---與其他相似行為對象的區分標誌.
每個對象有唯一的indentity 而這3者之間相互影響.
6.類之間的關係:
use-a :依賴關係
has-a :彙總關係
is-a :繼承關係--例:A類繼承了B類,此時A類不僅有了B類的方法,還有其自己的方法.(個性存在於共性中)
7.構造對象使用構造器:構造器的提出,構造器是一種特殊的方法,構造對象並對其初始化.
例:Data類的構造器叫Data
new Data()---構造一個新對象,且初始化目前時間.
Data happyday=new
Data()---把一個對象賦值給一個變數happyday,從而使該對象能夠多次使用,此處要聲明的使變數與物件變數二者是不同的.new返回的值是一個引用.
構造器特點:構造器可以有0個,一個或多個參數
構造器和類有相同的名字
一個類可以有多個構造器
構造器沒有傳回值
構造器總是和new運算子一起使用.
8.重載:當多個方法具有相同的名字而含有不同的參數時,便發生重載.編譯器必須挑選出調用哪個方法.
9.包(package)Java允許把一個或多個類收集在一起成為一組,稱作包,以便於組織任務,標準Java庫分為許多包.java.lang java.util java,net等,包是分層次的所有的java包都在java和javax包層次內.
10.繼承思想:允許在已經存在的類的基礎上構建新的類,當你繼承一個已經存在的類時,那麼你就複用了這個類的方法和欄位,同時你可以在新類中添加新的方法和欄位.
11.擴充類:擴充類充分體現了is-a的繼承關係. 形式為:class (子類) extends (基類).
12.多態:在java中,物件變數是多態的.而java中不支援多重繼承.
13.動態綁定:調用對象方法的機制.
(1)編譯器檢查對象聲明的類型和方法名.
(2)編譯器檢查方法調用的參數類型.
(3)靜態繫結:若方法類型為priavte static final 編譯器會準確知道該調用哪個方法.
(4)當程式運行並且使用動態綁定來調用一個方法時,那麼虛擬機器必須調用x所指向的對象的實際類型相匹配的方法版本.
(5)動態綁定:是很重要的特性,它能使程式變得可擴充而不需要重編譯已存代碼.
14.final類:為防止他人從你的類上派生新類,此類是不可擴充的.
15.動態調用比靜態調用花費的時間要長,
16.抽象類別:規定一個或多個抽象方法的類本身必須定義為abstract例: public abstract string getDescripition
17.Java中的每一個類都是從Object類擴充而來的.
18.object類中的equal和toString方法.equal用於測試一個對象是否同另一個對象相等.toString返回一個代表該對象的字串,幾乎每一個類都會重載該方法,以便返回目前狀態的正確表示.(toString 方法是一個很重要的方法)
19.通用編程:任何類類型的所有值都可以同object類性的變數來代替.
20.數組列表:ArrayList動態數組列表,是一個類庫,定義在java.uitl包中,可自動調節數組的大小.
21.class類 object類中的getclass方法返回ckass類型的一個執行個體,程式啟動時包含在main方法的類會被載入,虛擬機器要載入他需要的所有類,每一個載入的類都要載入它需要的類.
22.class類為編寫可動態操縱java代碼的程式提供了強大的功能反射,這項功能為JavaBeans特別有用,使用反射Java能支援VB程式員習慣使用的工具.能夠分析類能力的程式叫反射器,Java中提供此功能的包叫Java.lang.reflect反射機制十分強大.
1.在運行時分析類的能力.
2.在運行時探察類的對象.
3.實現通用數組操縱代碼.
4.提供方法對象.
而此機制主要針對是工具者而不是應用及程式.
反射機制中的最重要的部分是允許你檢查類的結構.用到的API有:
java.lang.reflect.Field 返回欄位.
java.reflect.Method 返回方法.
java.lang.reflect.Constructor 返回參數.
方法指標:java沒有方法指標,把一個方法的地址傳給另一個方法,可以在後面調用它,而介面是更好的解決方案.
23.介面(Interface)說明類該做什麼而不指定如何去做,一個類可以實現一個或多個interface.
24.介面不是一個類,而是對符合介面要求的類的一套規範.若實現一個介面需要2個步驟:
1.聲明類需要實現的指定介面.
2.提供介面中的所有方法的定義.
聲明一個類實現一個介面需要使用implements 關鍵字class actionB implements Comparable 其actionb需要提供CompareTo方法,介面不是類,不能用new執行個體化一個介面.
25.一個類只有一個超類,但一個類能實現多個介面.Java中的一個重要介面Cloneable
26.介面和回調.編程一個常用的模式是回調模式,在這種模式中你可以指定當一個特定時間發生時回調對象上的方法.例:ActionListener 介面監聽.
類似的API有:java.swing.JOptionPane
java.swing.Timer
java.awt.Tookit
27.對象clone:clone方法是object一個保護方法,這意味著你的代碼不能簡單的調用它.
28.內部類:一個內部類的定義是定義在另一個內部的類
原因是:1.一個內部類的對象能夠訪問建立它的對象的實現,包括私人資料
2.對於同一個包中的其他類來說,內部類能夠隱藏起來.
3.匿名內部類可以很方便的定義回調.
4.使用內部類可以非常方便的編寫事件驅動程式.
29.代理類(proxy):1.指定介面要求所有代碼 2.object類定義的所有的方法(toString equals)
30.資料類型:Java是強調類型的語言,每個變數都必須先申明它都類型,java中總共有8個基本類型.4種是整型,2種是浮點型,一種是字元型,被用於Unicode編碼中的字元,布爾型.