JAVA基礎編程部分
1,什麼式Java虛擬機?爲什麼Java被稱作是“平臺無關的編程語言”?
Java虛擬機是執行字節碼文件(.class)的虛擬機進程。java源程序(.java)被編譯器編譯成字節碼文件(.class)。然後字節碼文件,將由java虛擬機,解釋成機器碼(不同平臺的機器碼不同)。利用機器碼操作硬件和操作系統。
因爲不同的平臺裝有不同的JVM,它們能夠將相同的.class文件,解釋成不同平臺所需要的機器碼。正是因爲有JVM的存在,java被稱爲平臺無關的編程語言。
2,JAVA支持的數據類型有哪些?什麼是自動拆裝箱?
1)8種基本數據類型:byte short char boolean int longfloat double
2)引用類型,包括類、接口、數組
自動拆裝箱,是指基本數據類型和引用數據類型之間的自動轉換,如Integer 和 int 可以自動轉換; Float和float可以自動轉換
3,簡述方法中的參數傳遞的原理?(提示:值傳遞和引用傳遞)
值傳遞:(形式參數類型是基本數據類型):方法調用時,實際參數把它的值傳遞給對應的形式參數,形式參數只是用實際參數的值初始化自己的存儲單元內容,是兩個不同的存儲單元,所以方法執行中形式參數值的改變不影響實際參數的值。
引用傳遞:(形式參數類型是引用數據類型參數):也稱爲傳地址。方法調用時,實際參數是對象(或數組),這時實際參數與形式參數指向同一個地址,在方法執行中,對形式參數的操作實際上就是對實際參數的操作,這個結果在方法結束後被保留了下來,所以方法執行中形式參數的改變將會影響實際參數。
4,簡述抽象類和接口的區別?
1 .接口只能包含抽象方法,抽象類可以包含普通方法。
2. 接口只能定義靜態常量屬性,抽象類既可以定義普通屬性,也可以定義靜態常量屬性。
3 .接口不包含構造方法,抽象類裏可以包含構造方法。
4.抽象類不能被實例化,但不代表它不可以有構造函數,抽象類可以有構造函數,備繼承類擴充
5.接口是核心,其定義了要做的事情,包含了許多的方法,但沒有定義這些方法應該如何做。
6. 如果許多類實現了某個接口,那麼每個都要用代碼實現那些方法
7.如果某一些類的實現有共通之處,則可以抽象出來一個抽象類,讓抽象類實現接口的公用的代碼,而那些個性化的方法則由各個子類去實現。
5,定義一個完整的Student類,包含字段code,name,age,類成員包括:成員變量,getter,setter,
多字段的構造器,重寫toString方法。
class Demo {
public static void main(String[] args) {
Student s = new Student("張三", 22, 95);
}
}
class Student {
//私有成員變量。
private String name ;
private int age;
private int code;
//提供 name,age, score 的 set,get方法。
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getCode() {
return score;
}
public void setCode(int code) {
this.score = score;
}
//構造函數。
public Student(String name, int age, int score){
this.age = age;
this.name = name ;
this.score = score;
System.out.println("姓名:"+getName()+","+"年齡:"+ getAge() + ","+"分數:"+getScore());
}
@Override
public String toString() {
return "Student[code=" + code + ", name=" + name + ", age=" + age +"]";
}
}
6,Java集合類框架的基本接口有哪些?並闡述他們的基本特徵。
Java集合類裏面最基本的接口有:
Collection:代表一組對象,每一個對象都是它的子元素。
Set:不包含重複元素,。
List:有順序的集合,並且可以包含重複元素,其中含有arraylist和linkedlist。
Map:可以把鍵(key)映射到值(value)的對象,鍵不能重複。
7,寫一個mian方法,使用全字段的構造器創建5個Student對象,並放入到一個集合中(list)中,使用迭代器遍歷List,並刪除一個符合條件code值的對象。
public class Client {
public static voidmain(String[] args) {
Student pxj =new Student("彭賢君", "001");
Student hjn =new Student("黃佳男", "002");
Student zsf =new Student("張三丰", "004");
Student zwj =new Student("張無忌", "005");
Clazz j103 =new Clazz();
j96.setName("Java103班");
j96.setCode("java103");
// Step1:學生類型的集合定義完成了
List<Student>stus = new ArrayList<Student>();
// Step2: 添加數據
stus.add(pxj);
stus.add(hjn);
stus.add(zsf);
stus.add(zwj);
// Step3: 追加一個新的學生
Student ljn =new Student("陸佳楠", "003");
stus.add(ljn);
// Step4: 設置班級學生屬性
J103.setStudents(stus);
// 使用迭代器遍歷
// Step1:創建迭代器
Iterator<Student>it = stus.iterator();
while(it.hasNext()) {
Studentstu = it.next();
System.out.println(stu);
if(stu.getName().equals("黃佳男")) {
it.remove();
}
}
System.out.println("處理完的結果======================");
it =stus.iterator();
while(it.hasNext()) {
Studentstu = it.next();
System.out.println(stu);
}
}
}
8,在異常處理時,finally代碼塊的重要性是什麼?(提示:一般在finally塊中定義哪些內容)
無論是否拋出異常,finally代碼塊總是會被執行。就算是沒有catch語句同時又拋出異常的情況下,finally代碼塊仍然會被執行。最後要說的是,finally代碼塊主要用來釋放資源,比如:I/O緩衝區,數據庫連接。
9,使用JDBC書寫一段查詢student表的代碼,從控制注意臺格式化打印輸出,控制檯打印的格式。
try {
// 1. 選擇數據庫:加載數據庫驅動
Class.forName("com.mysql.jdbc.Driver");
// 2. 連接數據庫
conn = DriverManager.getConnection(url,user, password);
// 3. 創建數據庫查詢
ps =conn.prepareStatement("SELECT * FROM student WHERE name = ?;");
ps.setString(1, name);
// 4. 獲取查詢結果
int i =ps.executeUpdate();
System.out.println("一共執行了" +i + "條");
} catch(ClassNotFoundException e) {
System.out.println("數據庫驅動沒有找到");
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
// 5. 關閉查詢和連接
try {
if (null != ps){
ps.close();
}
if (null !=conn) {
conn.close();
}
} catch (SQLExceptione) {
e.printStackTrace();
}
}
10,什麼是泛型,爲什麼要使用泛型。
泛型:本質是參數化類型。
爲什麼要使用?創建集合的時候,往集合裏面添加數據,再次取出時,集合會忘記這數據類型,該對象的編譯類型就會變成Object類型,否則如果想要變回原來的數據類型的時候,就要強制進行轉換。創建集合的時候,我們就指定集合類型,避免這個過程。
JSP&Servlet部分
1,什麼是Servlet?解釋下Servlet的生命週期。
Java Servlet 是運行在 Web 服務器或應用服務器上的程序,它是作爲來自 Web 瀏覽器或其他 HTTP 客戶端的請求和 HTTP 服務器上的數據庫或應用程序之間的中間層。
Servlet 通過調用 init () 方法進行初始化。Servlet 調用 service() 方法來處理客戶端的請求。Servlet 通過調用 destroy() 方法終止(結束)。最後,Servlet 是由 JVM 的垃圾回收器進行垃圾回收的。
2,doGet()方法和doPsot()方法有什麼區別?
doGet:GET方法會把名值對追加在請求的URL後面。因爲URL對字符數目有限制,進而限制了用在客戶端請求的參數值的數目。並且請求中的參數值是可見的,因此,敏感信息不能用這種方式傳遞。
doPOST:POST方法通過把請求參數值放在請求體中來克服GET方法的限制,因此,可以發送的參數的數目是沒有限制的。最後,通過POST請求傳遞的敏感信息對外部客戶端是不可見的。
3,瀏覽器和Servlet通信使用的是什麼協議?
HTTP協議,即:超文本傳輸協議
4,sendRedirect()forward()方法有什麼區別?
相同點:都能實現頁面跳轉或者是服務器資源的跳轉;
不同點:1、sendRedirect(“目的地”) 是response 對象的方法,forward(request,response)是request.getRequestDispatcher("目的地") 方法 返回的對象requestDispatcher 的方法;
2、sendRedirect()在客戶端運行,會產生新的請求,地址欄顯示新地址,forward()在服務端運行,地址欄的地址不變;
3、sendRedirect() 跳轉之後,不能獲取request中的對象,而forward()可以獲取;
4、forward()速度更快。
5,什麼是JSP?JSP有什麼優點?
JSP技術是用JAVA語言作爲腳本語言的,JSP網頁爲整個服務器端的JAVA庫單元提供了一個接口來服務於HTTP的應用程序。
JSP的優點:
·對於用戶界面的更新,其實就是由 WebServer進行的,所以給人的感覺更新很快。
·所有的應用都是基於服務器的,所以它們可以時刻保持最新版本。
·客戶端的接口不是很繁瑣,對於各種應用易於部署、維護和修改。
6,使用JSTL結合EL表達式,完成一個在JSP輸出表格tbody體內容的代碼(表格內容自擬)
<%@ page language="java"contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglibprefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<body>
<div class="row">
<form class="form-inline"action="/test">
<divclass="form-group">
<labelclass="label-middle">開始時間</label><inputsize="16" type="text" value="${startTime}"name="startTime">
<labelclass="label-middle">結束時間</label><inputsize="16" type="text" value="${endTime}"name="endTime">
<buttontype="submit">查詢</button>
</div>
</form>
</div>
<div class="row margin-top-20">
<table class="table">
<thead>
<tr>
<thclass="seq">序號</th>
<th>時間</th>
<th>MSG</th>
</tr>
</thead>
<tbody>
</tbody>
<c:forEach var="data"items="${datas}" varStatus="loop">
<tr>
<td>${loop.index +1}</td>
<td>${data.time}</td>
<td>${data.msg}</td>
</tr>
</c:forEach>
</table>
</div>
</body>
</html>
7,MVC是什麼意思?MVC的優點有哪些?
MVC全名是Model ViewController,是模型(model)-視圖(view)-控制器(controller)的縮寫,一種軟件設計典範,用一種業務邏輯、數據、界面顯示分離的方法組織代碼,將業務邏輯聚集到一個部件裏面,在改進和個性化定製界面及用戶交互的同時,不需要重新編寫業務邏輯。
1:耦合性低
2:重用性高
3:部署快
4:可維護性高
5:有利軟件工程化管理
8,在一個典型的Web應用中,被Nutz的Ioc容器管理的對象有哪些?
javabea
9,在Nutz中,已知一個dao對象,書寫如下代碼:
1,查詢ID爲1的Student對象;
2,添加一個新的Student對象數據到數據庫;
3,查詢所有的age在18~20歲之間的學生數據,並放置到一個List集合中。
1,Student p =dao.fetch(Student.class,1);
System.out.println(p.getId());
2,Student p =new Student();
p.setName("Peter");
p.setAge(22);
dao.insert(p);
System.out.println(p.getId());
3,List<Student>people = dao.query(Student.class, Cnd.where("age","between", 18,20));