6/23周測

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));


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章