【316天】我愛刷題系列075(2017.12.18)

叨叨兩句

  1. 真正的旅行,從你打算開始旅行,就開始了~ ^_^

牛客網——java專項練習054

1

經過HttpServletRequest. getParameter獲取的參數.
正確答案: C
A 老是採用UTF-8編碼
B 老是採用lS08859-1編碼
C 由客戶端瀏覽器和Web容器配置共同決定編碼
D 由服務器所在的操做系統決定編碼html

編碼格式由瀏覽器決定,瀏覽器根據html中指定的編碼格式進行編碼,tomcat根據指定的格式進行解碼,另外get請求和post請求對編碼格式的處理也是不一樣的
一、瀏覽器根據jsp頁面開頭聲明的編碼方式對request中參數編碼;
二、tomcat默認解碼是ISO-8859-1, 可是咱們能夠顯示指定解碼格式經過調用 request.setCharacterEncoding("UTF-8"),或者修改tomcat的配置文件server.xml中的編碼,添加uriEncoding屬性。

2

給出如下代碼,請給出結果.java

class Two{
    Byte x;
}
class PassO{
    public static void main(String[] args){
        PassO p=new PassO();
        p.start();
    }
    void start(){
        Two t=new Two();
        System.out.print(t.x+」」);
        Two t2=fix(t);
        System.out.print(t.x+」 」 +t2.x);
    }
    Two fix(Two tt){
        tt.x=42;
        return tt;
    }
}

正確答案: B 你的答案: D (錯誤)
A null null 42
B null 42 42
C 0 0 42
D 0 42 42
E An exception is thrown at runtime
F Compilation設計模式

3

對文件名爲Test.java的java代碼描述正確的是()瀏覽器

class Person {
    String name = "No name";
    public Person(String nm) {
        name = nm;
    }
}
class Employee extends Person {
    String empID = "0000";
    public Employee(String id) {
        empID = id;
    }
}
public class Test {
    public static void main(String args[]) {
        Employee e = new Employee("123");
        System.out.println(e.empID);
    }
}

正確答案: C
A 輸出:0000
B 輸出:123
C 編譯報錯
D 輸出:No nametomcat

子類的構造方法老是先調用父類的構造方法,若是子類的構造方法沒有明顯地指明使用父類的哪一個構造方法,子類就調用父類不帶參數的構造方法。
而父類沒有無參的構造函數,因此子類須要在本身的構造函數中顯示的調用父類的構造函數。

4

Java7特性中,abstract class和interface有什麼區別。
正確答案: A B D 你的答案: A B D (正確)
A 抽象類能夠有構造方法,接口中不能有構造方法
B 抽象類中能夠有普通成員變量,接口中沒有普通成員變量
C 抽象類中不能夠包含靜態方法,接口中能夠包含靜態方法
D 一個類能夠實現多個接口,但只能繼承一個抽象類。服務器

含有abstract修飾符的class即爲抽象類,abstract類不能建立的實例對象。含有abstract方法的類必須定義爲abstract class,abstract class類中的方法沒必要是抽象的。abstract class類中定義抽象方法必須在具體(Concrete)子類中實現,因此,不能有抽象構造方法或抽象靜態方法。若是的子類沒有實現抽象父類中的全部抽象方法,那麼子類也必須定義爲abstract類型。  
接口(interface)能夠說成是抽象類的一種特例,接口中的全部方法都必須是抽象的。接口中的方法定義默認爲public abstract類型,接口中的成員變量類型默認爲public static final。  
下面比較一下二者的語法區別:  
1.抽象類能夠有構造方法,接口中不能有構造方法。  
2.抽象類中能夠有普通成員變量,接口中沒有普通成員變量  
3.抽象類中能夠包含非抽象的普通方法,接口中的全部方法必須都是抽象的,不能有非抽象的普通方法。  
4. 抽象類中的抽象方法的訪問類型能夠是public,protected和(默認類型,雖然  
eclipse下不報錯,但應該也不行),但接口中的抽象方法只能是public類型的,而且默認即爲public abstract類型。  
5. 抽象類中能夠包含靜態方法,接口中不能包含靜態方法  
6. 抽象類和接口中均可以包含靜態成員變量,抽象類中的靜態成員變量的訪問類型能夠任意,但接口中定義的變量只能是public static final類型,而且默認即爲public static final類型。  
7. 一個類能夠實現多個接口,但只能繼承一個抽象類。  
下面接着再說說二者在應用上的區別:  
接口更多的是在系統架構設計方法發揮做用,主要用於定義模塊之間的通訊契約。而抽象類在代碼實現方面發揮做用,能夠實現代碼的重用,  
例如,模板方法設計模式是抽象類的一個典型應用,假設某個項目的全部Servlet類都要用相同的方式進行權限判斷、記錄訪問日誌和處理異常,那麼就能夠定義一個抽象的基類,讓全部的Servlet都繼承這個抽象基類,在抽象基類的service方法中完成權限判斷、記錄訪問日誌和處理異常的代碼,在各個子類中只是完成各自的業務邏輯代碼,僞代碼以下: 

package com.lei;
 
import java.io.IOException;
 
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
public abstract class BaseServlet extends HttpServlet {
 
 /**
 * serialVersionUID屬性概述
 * 
 */
 private static final long serialVersionUID = 1L;
 
 public final void service(HttpServletRequest request,
 HttpServletResponse response) throws IOException, ServletException {
 // 記錄訪問日誌
 // 進行權限判斷
 if (true)// if條件裏寫的是「具備權限」
 {
 try {
 doService(request, response);
 } catch (IOException e) {
 // 記錄異常信息
 }
 }
 
 }
 
 protected abstract void doService(HttpServletRequest request,
 HttpServletResponse response) throws IOException, ServletException;
}
 
    
實現類以下: 

package com.lei;
 
import java.io.IOException;
 
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
public class MyServlet extends BaseServlet{
 
 /**
 * serialVersionUID屬性概述
 * 
 */
 private static final long serialVersionUID = 1L;
 
 @Override
 protected void doService(HttpServletRequest request,
 HttpServletResponse response) throws IOException, ServletException {
 // TODO Auto-generated method stub
  
 }
 
}
父類方法中間的某段代碼不肯定,留給子類幹,就用模板方法設計模式。  
備註:這道題的思路是先從整體解釋抽象類和接口的基本概念,而後再比較二者的語法細節,最後再說二者的應用區別。  
比較二者語法細節區別的條理是:先從一個類中的構造方法、普通成員變量和方法(包括抽象方法),靜態變量和方法,繼承性等6個方面逐一去比較回答,接着從第三者繼承的角度的回答,特別是最後用了一個典型的例子來展示本身深厚的技術功底。

5

下面哪些賦值語句是正確的()架構

正確答案: A B D 你的答案: A B D (正確)
A long test=012
B float f=-412
C int other =(int)true
D double d=0x12345678
E byte b=128eclipse

A和B中long和float,正常定義須要加l和f,可是long和float屬於基本類型,會進行轉化,因此不會報出異常。AB正確
boolean類型不能和任何類型進行轉換,會報出類型異常錯誤。因此C錯。
D選項能夠這樣定義,D正確。
E選項中,byte的取值範圍是-128—127。報出異常: cannot convert from int to byte.因此E選項錯誤。
相關文章
相關標籤/搜索