牛客網刷java題目總結二

1.structs是基於MVC的

2.abstract

用abstract修飾的類表示抽象類,抽象類位於繼承樹的抽象層,抽象類不能被實例化。

用abstract修飾的方法表示抽象方法,抽象方法沒有方法體。抽象方法用來描述系統具有什麼功能,但不提供具體的實現。

Abstract是Java中的一個重要關鍵字,可以用來修飾一個類或者一個方法。 修飾一個方法時,表示該方法只有特徵簽名(signature),沒有具體實現,而是把具體實現留給繼承該類的子類。一個類中只要有一個abstract 方法,那麼這個類就要被聲明爲abstract,但是其中可以有非abstract方法。 abstract類可以使得類的設計者能夠創建方法的原型,而真正的實現留給使用這個類的人

3.在static方法不能使用this

4.URL u =new URL("http://www.123.com");。如果www.123.com不存在,則返回__http://www.123.com____

打印URL的類的時候,調用URL類的toString()方法,不管URL中的網址是不是存在的,都可以將其打印出來

5.i=j++的問題

i=j++的執行步驟:

tmp=j;

j++;

i=tmp;

6.集合與map各自的繼承關係

.

7.一道繞彎子的題目

 

public class Test {  

    public static void main(String [] args){  

        System.out.println(new B().getValue());  

    }  

    static class A{  

        protected int value;  

        public A(int v) {  

            setValue(v);  

        }  

        public void setValue(int value){  

            this.value = value;  

        }  

        public int getValue(){  

            try{  

                value++;  

                return value;  

            } catch(Exception e){  

                System.out.println(e.toString());  

            } finally {  

                this.setValue(value);  

                System.out.println(value);  

            }  

            return value;  

        }  

    }  

    static class B extends A{  

        public B() {  

            super(5);  

            setValue(getValue() - 3);  

        }  

        public void setValue(int value){  

            super.setValue(2 * value);  

        }  

    }  

}  

怎麼理解?

首先要理解當A繼承B的時候,會繼承B的變量和方法,關鍵點就是A如果調用方法時優先自己的重寫方法,當調用父類的方法時,this的意義仍是A類(因爲是在A類中執行的)

8.異常

try捕獲(不可以拋出異常)catch用throw一個對象拋出異常

在方法體上也可以用throws進行異常的拋出

finally時不管是否有異常拋出都執行的代碼段

9.集合的線程安全問題

1. HashMap,TreeMap 未進行同步考慮,是線程不安全的。

2. HashTable 和 ConcurrentHashMap 都是線程安全的。區別在於他們對加鎖的範圍不同,HashTable 對整張Hash表進行加鎖,而ConcurrentHashMap將Hash表分爲16桶(segment),每次只對需要的桶進行加鎖。

3. Collections 類提供了synchronizedXxx()方法,可以將指定的集合包裝成線程同步的集合。比如,

List  list = Collections.synchronizedList(new ArrayList());

Set  set = Collections.synchronizedSet(new HashSet());

10.二元操作

兩個數值進行二元操作時,會有如下的轉換操作:

如果兩個操作數其中有一個是double類型,另一個操作就會轉換爲double類型。

否則,如果其中一個操作數是float類型,另一個將會轉換爲float類型。

否則,如果其中一個操作數是long類型,另一個會轉換爲long類型。

否則,兩個操作數都轉換爲int類型。

故,x==f1[0]中,x將會轉換爲float類型。

11.類之間存在以下幾種常見的關係:

use-a 是依賴關係

has-a   一般是組合關係

is-a   一般是繼承關係   

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