麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

基礎知識匯總(一)

2019-11-14 10:16:31
字體:
來源:轉載
供稿:網友
0.bootstrap常用英語:typography 排版Glyphicon 字形圖標breadcrumb 面包碎屑(這里是用來在導航中顯示當前頁面的位置)Pagination 分頁badges 徽章(舉例顯示4條未讀消息的提示,帶圓形背景)jumbotron 超大屏幕tooltip 提示工具插件popover 彈出框插件affix 附加導航插件text-muted muted柔和的,意思是文字顏色淡灰色scheme 策劃計劃schema 概要,計劃,圖表;tab 選項卡1. java中的一個byte,其范圍是-128~127的.byte是一個字節保存的,有8個位,即8個0、1。8位的第一個位是符號位,也就是說0000 0001代表的是數字1 1000 0000代表的就是-1所以正數最大位0111 1111,也就是數字127,  負數最大為1111 1111,也就是數字-1282.byte b;//指定變量b為byte型 (最小值-128 最大值127) 一個常量,保存 byte 類型可取的最大值,即 27-1。(127)  一個常量,保存 byte 類型可取的最小值,即 -27。(-128)    ---------------------------------------------------  short s;//指定變量s為short型   保存 short 可取的最大值的常量,最大值為 215-1。(32 767)  保存 short 可取的最小值的常量,最小值為 -215。(-32 768)   --------------------------------------------------- int i;//指定變量i為int型  值為 231-1 ( 2147483647 二十一億)的常量,它表示 int 類型能夠表示的最大值。  值為 -231 的常量,它表示 int 類型能夠表示的最小值。   ---------------------------------------------------  long l;//指定變量l為long型 3.String是不可變的。也就是說只要用String定義了一個對象,當對他進行修改的時候,都是新建一個String,而不是在原有的基礎上修改而成的。StringBuffer可變。線程安全~所以效率比StringBuilder低一點。StringBuilder可變字符串,可通過aappend等方法對字符串進行修改。線程不安全,是sun為了追求極致寫的。效率比StringBuffer高。3.1.int和Integer的區別int 是基本數據類型,而Integer是一個對象,也是引用類型。 int定義的不易擴展,而Integer定義的,可以借助里面的方法來進行擴展。Integer i = null;說白了,Integer就是一個引用,可以指向null。而int必須賦數字。Java是一個近乎純潔的面向對象編程語言,但是為了編程的方便還是引入了基本數據類型,但是為了能夠將這些基本數據類型當成對象操作,Java為每 一個基本數據類型都引入了對應的包裝類型(wrapper class),int的包裝類就是Integer,從Java 5開始引入了自動裝箱/拆箱機制,使得二者可以相互轉換。Java 為每個原始類型提供了包裝類型:     - 原始類型: boolean,char,byte,short,int,long,float,double     - 包裝類型:Boolean,Character,Byte,Short,Integer,Long,Float,Doubleint基本數據運算速度快,而在map、list等只能裝Object的容器中,就只能使用Integer等外覆類。4.****************************Set、List和Map可以看做集合的三大類。Set存儲的零散的元素且不允許有重復元素(數學中的集合也是如此),List是線性結構的容器,適用于按數值索引訪問元素的情形。     List集合是有序集合,集合中的元素可以重復,訪問集合中的元素可以根據元素的索引來訪問。    Set集合是無序集合,集合中的元素不可以重復,訪問集合中的元素只能根據元素本身來訪問(也是不能集合里元素不允許重復的原因)。     Map集合中保存Key-value對形式的元素,訪問時只能根據每項元素的key來訪問其value。 ArrayList和Vector都是使用數組方式存儲數據,Vector中的方法由于添加了synchronized修飾,因此Vector是線程安全的容器,但性能上較ArrayList差,因此已經是Java中的遺留容器。(Java早期的版本中提供的容器,除此之外,Hashtable、Dictionary、BitSet、Stack、PRoperties都是遺留容器)對于Set、List和Map三種集合,最常用的實現類分別是HashSet、ArrayList和HashMap三個實現類。1.ArrayList是實現了基于動態數組的數據結構,LinkedList基于鏈表的數據結構。2.對于隨機訪問get和set,ArrayList覺得優于LinkedList,因為LinkedList要移動指針。3.對于新增和刪除操作add和remove,LinedList比較占優勢,因為ArrayList要移動數據。LinkedList 采用的將對象存放在獨立的空間中,而且在每個空間中還保存下一個鏈接的索引 但是缺點就是查找非常麻煩 要叢第一個索引開始.是批量隨機的插入刪除數據,LinkedList的速度大大優于ArrayList.因為ArrayList每插入一條數據,要移動插入點及之后的所有數據。  這一點我做了實驗。在分別有200000條“記錄”的ArrayList和LinkedList的首位插入20000條數據,LinkedList耗時約是ArrayList的20分之1。Vector:線程同步HashSet:(無序)哈希表是通過使用稱為散列法的機制來存儲信息的,元素并沒有以某種特定順序來存放;LinkedHashSet:(插入順序)以元素插入的順序來維護集合的鏈接表,允許以插入的順序在集合中迭代;  TreeSet:(升序)提供一個使用樹結構存儲Set接口的實現,對象以升序順序存儲,訪問和遍歷的時間很快。HashSet<String> hs = new HashSet<String>();          hs.add("B");          hs.add("A");          hs.add("D");          hs.add("E");          hs.add("C");          hs.add("F");          System.out.println("HashSet 順序:/n"+hs);                    LinkedHashSet<String> lhs = new LinkedHashSet<String>();          lhs.add("B");          lhs.add("A");          lhs.add("D");          lhs.add("E");          lhs.add("C");          lhs.add("F");          System.out.println("LinkedHashSet 順序:/n"+lhs);                    TreeSet<String> ts = new TreeSet<String>();          ts.add("B");          ts.add("A");          ts.add("D");          ts.add("E");          ts.add("C");          ts.add("F");          System.out.println("TreeSet 順序:/n"+ts);//輸出結果HashSet 順序:[D, E, F, A, B, C]LinkedHashSet 順序:[B, A, D, E, C, F]TreeSet 順序:[A, B, C, D, E, F]********set和map區別***********set里元素都是散養的且不重復,map鍵值對,允許多鍵對一值,但不能一鍵對多值,因為你根本知道選哪個才對。set里放對象,map里放鍵值對。首先加入元素的形式,set:List<Employee> list = new ArrayList<Employee>();     // Java 7的鉆石語法(構造器后面的尖括號中不需要寫類型)     list.add(new Employee(Bob YANG, 22, Shanghai, 10086, waiter)); map:Map<String, String> map = new HashMap<String, String>();    map.put("obama", "present");set中的元素可以是{[name=Bob YANG, age=22, address=Shanghai, phone=10086, job=waiter],[...],[...],[...]}map中的元素則是這個樣子的{obama=present, justin=singer, mao=chairman}hashmap,linkdedhashmap,treemap區別HashMap 隨機排列,允許一個鍵為null,允許多條值為null,不支持線程的同步,最常用的Map,它根據鍵的HashCode值存儲數據,根據鍵可以直接獲取它的值TreeMap 升序排列LinkedHashMap 插入順序排列,是HashMap的一個子類,Hashtable 與HashMap類似,它繼承自Dictionary類,不同的是:它不允許記錄的鍵或者值為空;它支持線程的同步,即任一時刻只有一個線程能寫Hashtable,因此也導致了 Hashtable在寫入時會比較慢。**********HashTable與HashMap的區別************第一:我們從他們的定義就可以看出他們的不同,HashTable基于Dictionary類,而HashMap是基于AbstractMap。Dictionary是什么?它是任何可將鍵映射到相應值的類的抽象父類,而AbstractMap是基于Map接口的骨干實現,它以最大限度地減少實現此接口所需的工作。第二:HashMap可以允許存在一個為null的key和任意個為null的value,但是HashTable中的key和value都不允許為null。5.*********棧,堆,方法區*********================方法區(非堆):是各個線程共享的內存區域,它用于存儲已被虛擬機加載的類信息、靜態變量、即時編譯器編譯后的代碼等數據。java堆:是虛擬機中所管理的內存中區域最大的一塊,是被所有線程共享的一塊內存區域,在虛擬機啟動時創建。此內存區域的唯一目的就是存放對象實例,幾乎所有的對象實例都在這里分配內存。java堆是垃圾收集器管理的主要區域。java虛擬機棧:線程私有的,它的生命周期與線程相同。每個方法被執行的時候都會同時創建一個棧幀,用于存儲局部變量表、操作數棧、動態鏈接、方法出口等信息。每個方法被調用直至執行完成的過程,就對應著一個棧幀在虛擬機中從入棧到出棧的過程。====================堆區: 1.存儲的全部是對象,每個對象都包含一個與之對應的class的信息。(class的目的是得到操作指令) 2.jvm只有一個堆區(heap)被所有線程共享,堆中不存放基本類型和對象引用,只存放對象本身 棧區: 1.每個線程包含一個棧區,棧中只保存基礎數據類型的對象和自定義對象的引用(不是對象),對象都存放在堆區中 2.每個棧中的數據(原始類型和對象引用)都是私有的,其他棧不能訪問。 3.棧分為3個部分:基本類型變量區、執行環境上下文、操作指令區(存放操作指令)。 方法區: 1.又叫靜態區,跟堆一樣,被所有的線程共享。方法區包含所有的class和static變量。 2.方法區中包含的都是在整個程序中永遠唯一的元素,如class,static變量。======================棧里存放的是值類型(int、float等)的值和引用類型(String、你自己創建的類對象等)在堆中的地址;堆中存放引用類u型的值,如果堆中某個值的地址在棧中沒有被指向,他就會被GC回收。方法區存儲所有的類和靜態變量。小總結:方法區放類信息、靜態變量;堆放對象;棧線程私有,放基本類型變量(如int)和對象地址(在堆里的地址)。6.***************inputstream的.read(byte[] b)這個方法是先規定一個數組長度,將這個流中的字節緩沖到數組b中,返回的這個數組中的字節個數,這個緩沖區沒有滿的話,則返回真實的字節個數,到未尾時都返回-1byte[] buffer = new byte[512];int bytesReaded;while((bytesReaded = in.read(buffer)) != -1) {out.write(buffer, 0, bytesReaded);}總結,每次in.read(buffer)返回的都是512,唯獨最后一次返回的是該多少是多少,比如37。7.**********簡單工廠模式,又叫做靜態工廠方法(Static Factory Method)模式。就是專門寫一個類,他有一個方法根據傳入的參數不同,返回不同的對象。所謂簡單工廠模式, 就是將容易變化的地方, 考慮用一個獨立Class來進行創造實體(Object)的過程.目的: 合并創造實體的動作, 統一以變量處理之. 使得新增實體種類時, 可以不修改到已有程序.public class Animal{}public class Cat extends Animal{}public class Dog extends Animal{}public class Fish extends Animal{}/** 工廠類 */public class AnimalFactory {public static getAnimal(String name){Animal animal = null;if("Cat".equals(name)){animal = new Cat();}else if("Dog".equals(name)){animal = new Dog();}else if("Fish".equals(name)){animal = new Fish();}return animal;}}public class Test{ public static void main(String[] args){ Animal a1 = AnimalFactory.getAnimal("Cat"); }}8.*******Object serialization 允許你將實現了Serializable接口的對象轉換為字節序列,這些字節序列可以被完全存儲以備以后重新生成原來的對象。舉個例子:網絡傳輸的時候,可以傳字符串,亦可以傳對象object,例如socket,傳字符串的時候接收方很容易解析出來,但是,傳一個對象的時候,對方讀完字節流后,不知道你傳的什么對象,所以沒辦法給轉成原來的對象并解析對象的屬性,這時候就要用到序列化和反序列化。類實現序列化接口,socket發送這個對象的字節流,接收方到流后就可以將流反序列化成對象,然后使用對象的方法和屬性。9.********java單例模式確保一個類只有一個實例,自行提供這個實例并向整個系統提供這個實例。特點:1,一個類只能有一個實例;2,自己創建這個實例;3,整個系統都要使用這個實例。單例模式,能避免實例重復創建;單例模式,應用于避免存在多個實例引起程序邏輯錯誤的場合;單例模式,較節約內存。餓漢式class Singleton {private static Singleton instance=new Singleton();private Singleton(){}static Singleton getInstance() {return instance;}}懶漢式class Singleton {private static Singleton instance=null;private Singleton(){}static Singleton getInstance() {if(instance==null)instance=new Singleton();return instance;}}10.*******MySQL的left join技術表book+---------+-----------+-------+--------+| book_id | book_name | price | author |+---------+-----------+-------+--------+|       1 | javaSE    |    20 | ligang ||       2 | javaEE    |    30 | lihua  |+---------+-----------+-------+--------+表employee+----+---------+--------+--------+-------+---------------------+| id | name    | dept   | salary | level | date                |+----+---------+--------+--------+-------+---------------------+|  1 | tom     | 開發部 |   2300 |     2 | 2016-01-01 00:02:39 ||  2 | jack    | 開發部 |   2500 |     2 | 2014-01-01 00:03:16 ||  3 | dana    | 董事會 |  15000 |     1 | 2000-02-01 00:04:06 ||  4 | lorenzo | 董事會 |  30000 |     1 | 2000-01-01 00:05:19 ||  5 | sonen   | 銷售部 |   3000 |     3 | 2015-01-04 00:06:02 ||  6 | conor   | 銷售部 |   1800 |     3 | 2014-04-12 00:06:52 ||  7 | bisping | 銷售部 |   2600 |     3 | 2014-01-18 00:17:50 |+----+---------+--------+--------+-------+---------------------+ select * from book left join employee on book.book_id=employee.id; +---------+-----------+-------+--------+----+------+--------+--------+-------+---------------------+| book_id | book_name | price | author | id | name | dept   | salary | level | date                |+---------+-----------+-------+--------+----+------+--------+--------+-------+---------------------+|       1 | javaSE    |    20 | ligang |  1 | tom  | 開發部 |   2300 |     2 | 2016-01-01 00:02:39 ||       2 | javaEE    |    30 | lihua  |  2 | jack | 開發部 |   2500 |     2 | 2014-01-01 00:03:16 |+---------+-----------+-------+--------+----+------+--------+--------+-------+---------------------+select * from employee left join book on employee.id = book.book_id;+----+---------+--------+--------+-------+---------------------+---------+-----------+-------+--------+| id | name    | dept   | salary | level | date                | book_id | book_name | price | author |+----+---------+--------+--------+-------+---------------------+---------+-----------+-------+--------+|  1 | tom     | 開發部 |   2300 |     2 | 2016-01-01 00:02:39 |       1 | javaSE    |    20 | ligang ||  2 | jack    | 開發部 |   2500 |     2 | 2014-01-01 00:03:16 |       2 | javaEE    |    30 | lihua  ||  3 | dana    | 董事會 |  15000 |     1 | 2000-02-01 00:04:06 | NULL    | NULL      | NULL  | NULL   ||  4 | lorenzo | 董事會 |  30000 |     1 | 2000-01-01 00:05:19 | NULL    | NULL      | NULL  | NULL   ||  5 | sonen   | 銷售部 |   3000 |     3 | 2015-01-04 00:06:02 | NULL    | NULL      | NULL  | NULL   ||  6 | conor   | 銷售部 |   1800 |     3 | 2014-04-12 00:06:52 | NULL    | NULL      | NULL  | NULL   ||  7 | bisping | 銷售部 |   2600 |     3 | 2014-01-18 00:17:50 | NULL    | NULL      | NULL  | NULL   |+----+---------+--------+--------+-------+---------------------+---------+-----------+-------+--------+也就是說,left join就是兩個表按某種條件焊接在一起,比如id相同,既然前頭left join后頭,那么前頭自然在左邊,后頭在右邊。左邊的沒有內容了,右邊的即使有內容也不顯示;左邊有多余,右邊沒有也得按null顯示。以左表為中心,返回左表中符合條件的所有記錄以及右表中聯結字段相等的記錄——當右表中無相應聯接記錄時,返回空值select * from book right join employee on book.book_id=employee.id;+---------+-----------+-------+--------+----+---------+--------+--------+-------+---------------------+| book_id | book_name | price | author | id | name    | dept   | salary | level | date                |+---------+-----------+-------+--------+----+---------+--------+--------+-------+---------------------+|       1 | javaSE    |    20 | ligang |  1 | tom     | 開發部 |   2300 |     2 | 2016-01-01 00:02:39 ||       2 | javaEE    |    30 | lihua  |  2 | jack    | 開發部 |   2500 |     2 | 2014-01-01 00:03:16 || NULL    | NULL      | NULL  | NULL   |  3 | dana    | 董事會 |  15000 |     1 | 2000-02-01 00:04:06 || NULL    | NULL      | NULL  | NULL   |  4 | lorenzo | 董事會 |  30000 |     1 | 2000-01-01 00:05:19 || NULL    | NULL      | NULL  | NULL   |  5 | sonen   | 銷售部 |   3000 |     3 | 2015-01-04 00:06:02 || NULL    | NULL      | NULL  | NULL   |  6 | conor   | 銷售部 |   1800 |     3 | 2014-04-12 00:06:52 || NULL    | NULL      | NULL  | NULL   |  7 | bisping | 銷售部 |   2600 |     3 | 2014-01-18 00:17:50 |+---------+-----------+-------+--------+----+---------+--------+--------+-------+---------------------+select * from employee right join book on book.book_id=employee.id;+----+------+--------+--------+-------+---------------------+---------+-----------+-------+--------+| id | name | dept   | salary | level | date                | book_id | book_name | price | author |+----+------+--------+--------+-------+---------------------+---------+-----------+-------+--------+|  1 | tom  | 開發部 |   2300 |     2 | 2016-01-01 00:02:39 |       1 | javaSE    |    20 | ligang ||  2 | jack | 開發部 |   2500 |     2 | 2014-01-01 00:03:16 |       2 | javaEE    |    30 | lihua  |+----+------+--------+--------+-------+---------------------+---------+-----------+-------+--------+左連接與右連接前頭后頭的位置很容易混淆,這里的左右不是絕對對稱的,這里我得出一個結論:A left join B, B left join A, A right join B, B right join A,到底A、B誰在前頭誰在后頭,不要試圖用單詞的意思來理解,那樣一定會犯錯,就按最最簡單的方式,A與B寫出時誰在前誰在后,無論中間是left join還是right join,先寫的永遠都在前頭,后寫的永遠在后頭。下面來點提升練習題:現在修改一下book表:select * from book;+----+------------------+-------+--------+| id | name             | price | author |+----+------------------+-------+--------+|  1 | javaSE           |    20 | ligang ||  2 | javaEE           |    30 | lihua  ||  3 | thinking in java |    80 | bruce  ||  4 | effective java   |    60 | frank  ||  5 | american history |    25 | kerry  ||  6 | house design     |    30 | lee    |+----+------------------+-------+--------+=======================================================================================================select e.id, e.name, b.id, b.name from employee e left join book b on e.id = b.id where e.id<7;+----+---------+----+------------------+| id | name    | id | name             |+----+---------+----+------------------+|  1 | tom     |  1 | javaSE           ||  2 | jack    |  2 | javaEE           ||  3 | dana    |  3 | thinking in java ||  4 | lorenzo |  4 | effective java   ||  5 | sonen   |  5 | american history ||  6 | conor   |  6 | house design     |+----+---------+----+------------------+select e.id, e.name, b.id, b.name from employee e left join book b on e.id = b.id and b.price > 30 where e.id<7;+----+---------+------+------------------+| id | name    | id   | name             |+----+---------+------+------------------+|  1 | tom     | NULL | NULL             ||  2 | jack    | NULL | NULL             ||  3 | dana    |    3 | thinking in java ||  4 | lorenzo |    4 | effective java   ||  5 | sonen   | NULL | NULL             ||  6 | conor   | NULL | NULL             |+----+---------+------+------------------+select e.id, e.name, b.id, b.name from employee e left join book b on e.id = b.id and b.price > 30 where b.id<7;+----+---------+----+------------------+| id | name    | id | name             |+----+---------+----+------------------+|  3 | dana    |  3 | thinking in java ||  4 | lorenzo |  4 | effective java   |+----+---------+----+------------------+=======================================================================================================where采用的book的id,左邊又是book,所以book執行到底,列出6個。select b.id, b.name, e.id, e.name from book b left join employee e on e.id = b.id and b.price > 30 where b.id < 7;+----+------------------+------+---------+| id | name             | id   | name    |+----+------------------+------+---------+|  1 | javaSE           | NULL | NULL    ||  2 | javaEE           | NULL | NULL    ||  3 | thinking in java |    3 | dana    ||  4 | effective java   |    4 | lorenzo ||  5 | american history | NULL | NULL    ||  6 | house design     | NULL | NULL    |+----+------------------+------+---------+where采用e.id,book在左邊,此時只出現book.price大于30的項。為什么此時只有兩項?因為employee的1、2、5、6行都是null。select b.id, b.name, e.id, e.name from book b left join employee e on e.id = b.id and b.price > 30 where e.id < 7;+----+------------------+----+---------+| id | name             | id | name    |+----+------------------+----+---------+|  3 | thinking in java |  3 | dana    ||  4 | effective java   |  4 | lorenzo |+----+------------------+----+---------+一個小小的左連接,卻妙趣無窮,用的時候再做測驗吧。11.int(1)與int(11)有什么區別?  int(M),這里的M代表的并不是存儲在數據庫中的具體的長度,以前總是會誤以為int(3)只能存儲3個長度的數字,int(11)就會存儲11個長度的數字,這是大錯特錯的。其實當我們在選擇使用int的類型的時候,不論是int(3)還是int(11),它在數據庫里面存儲的都是4個字節的長度,在使用int(3)的時候如果你輸入的是10,會默認給你存儲位010,也就是說這個3代表的是默認的一個長度,當你不足3位時,會幫你不全,當你超過3位時,就沒有任何的影響。要查看出不同效果記得在創建類型的時候加 zerofill這個值,表示用0填充,否則看不出效果的。create table t (t int(3) zerofill);insert into t set t = 10;select * from t;+——+| t |+——+| 010 |+——+12.varchar(20) 與 varchar(256)的區別?最大允許長度不一樣。存入的最大長度限制為20, 那就沒有必要弄成varchar(256)。varchar(256)意為最大允許你存儲256個字符。如果你能確保最大長度為不超過20, 則varchar(20)為合重的設計。你存儲一個長度為20的字符串,varchar(20)和varchar(256)所占用的物理空間大小是一樣的。存入“helloWord” 時,varchar255比varchar(20) 占用相同字節數。13.JDK1.5版本到JDK1.7版本的特性JDK1.5新特性:1.自動裝箱與拆箱2.枚舉3.泛型(Generic) 4.For-Each循環 JDK 1.6新特性:1.支持Win7+ 的aero特效,即半透明2. common annotation,插入式注解處理,在編譯期間而不是運行期間處理注解JDK 1.7新特性:1.switch中可以使用字串了2.<>鉆石運算符,泛型自動推斷3.安全的加減乘除,Math.safe....4..數字字面量下劃線支持,age_of_jack=8;....5.支持二進制文字。例如:int binary = 0b1001_1001;6、在try catch異常撲捉中,一個catch可以寫多個異常類型,用"|"隔開7、jdk7之前,你必須用try{}finally{}在try內使用資源,在finally中關閉資源,不管try中的代碼是否正常退出或者異常退出。jdk7之后,你可以不必要寫finally語句來關閉資源,只要你在try()的括號內部定義要使用的資源。jAVA8 十大新特性1、接口的默認方法實現。方法實現,只需要使用 default關鍵字即可2、Lambda 表達式。1、簡化匿名類的編寫。2、支持函數式編程。3、Stream 接口,可以將多個操作依次串起來。4.localtime,localzone,localdate,localdatetime  定義了一個沒有時區信息的時間14.枚舉是一種類型,用于定義變量,以限制變量的賦值 賦值時通過"枚舉名.值"來取得相關枚舉中的值public enum Season {winter, spring, summer, fall;}表示Season(季節)的值只能是枚舉里面定義的 winter, spring, summer, fall(春夏秋冬);看起來很象是特殊的class, 它也可以有自己的變量,可以定義自己的方法,可以實現一個或者多個接口。所有枚舉值都是public , static , final的。15.取整 Math. floor round ceilfloor 向下取整。返回不大于的最大整數 round。加0.5再向下取整。算法為Math.floor(x+0.5),即將原來的數字加上0.5后再向下取整,所以,Math.round(11.5)的結果為12,Math.round(-11.5)的結果為-11。ceil  向上取整。則是不小于他的最小整數看例子  Math.floor Math.round Math.ceil1.4 1 121.5 1 221.6 1 22-1.4 -2 -1 -1-1.5 -2 -1 -1-1.6 -2 -2 -116.封裝,繼承,多態Person => Teacher,Student,一句話,三大特性都有了。封裝:屬于同一類事物的共性(包括屬性與方法)歸到一個類中繼承:個性對共性的屬性與方法的接受,并加入個性特有的屬性與方法多態:多態的概念發展出來,是以封裝和繼承為基礎的。多態就是在抽象的層面上實施一個統一的行為,到個體(具體)的層面上時,這個統一的行為會因為個體(具體)的形態特征而實施自己的特征行為。17.char能不能存儲漢字?java中的一個char的確是2個字節。java采用unicode,2個字節來表示一個字符。一個數字或英文或漢字都是一個字符,只不過數字和英文時,存儲的2個字節的第一個字節都為0,就是浪費了點空間。存漢字就占滿了2個字節。18. final finalize finally區別?final 用于聲明屬性,方法和類,分別表示屬性不可變,方法不可覆蓋,類不可繼承。finally 是異常處理語句結構的一部分,表示總是執行。finalize 是Object類的一個方法,在垃圾收集器執行的時候會調用被回收對象的此方法,可以覆蓋此方法提供垃圾收集時的其他資源回收,例如關閉文件等19.Collection 和Collections的區別? 1、java.util.Collection 是一個集合接口。它提供了對集合對象進行基本操作的通用接口方法。Collection接口在Java 類庫中有很多具體的實現。Collection接口的意義是為各種具體的集合提供了最大化的統一操作方式。 Collection   ├List   │├LinkedList   │├ArrayList   │└Vector   │ └Stack   └Set  2、java.util.Collections 是一個包裝類。它包含有各種有關集合操作的靜態多態方法。此類不能實例化,就像一個工具類,服務于Java的Collection框架。Collections.sort(list);reverse(List list):反轉指定List集合中元素的順序shuffle(List list):對List中的元素進行隨機排序(洗牌)sort(List list):對List里的元素根據自然升序排序sort(List list, Comparator c):自定義比較器進行排序swap(List list, int i, int j):將指定List集合中i處元素和j出元素進行交換rotate(List list, int distance):將所有元素向右移位指定長度,如果distance等于size那么結果不變binarySearch(List list, Object key):使用二分搜索法,以獲得指定對象在List中的索引,前提是集合已經排序max(Collection coll):返回最大元素max(Collection coll, Comparator comp):根據自定義比較器,返回最大元素min(Collection coll):返回最小元素min(Collection coll, Comparator comp):根據自定義比較器,返回最小元素fill(List list, Object obj):使用指定對象填充frequency(Collection Object o):返回指定集合中指定對象出現的次數replaceAll(List list, Object old, Object new):替換20.冒泡排序int[] arr={6,3,8,2,9,1};   第一趟排序:    第一次排序:6和3比較,6大于3,交換位置:  3  6  8  2  9  1    第二次排序:6和8比較,6小于8,不交換位置:3  6  8  2  9  1    第三次排序:8和2比較,8大于2,交換位置:  3  6  2  8  9  1    第四次排序:8和9比較,8小于9,不交換位置:3  6  2  8  9  1    第五次排序:9和1比較:9大于1,交換位置:  3  6  2  8  1  9    第一趟總共進行了5次比較, 排序結果:      3  6  2  8  1  9---------------------------------------------------------------------第二趟排序:    第一次排序:3和6比較,3小于6,不交換位置:3  6  2  8  1  9    第二次排序:6和2比較,6大于2,交換位置:  3  2  6  8  1  9    第三次排序:6和8比較,6大于8,不交換位置:3  2  6  8  1  9    第四次排序:8和1比較,8大于1,交換位置:  3  2  6  1  8  9    第二趟總共進行了4次比較, 排序結果:      3  2  6  1  8  9---------------------------------------------------------------------第五趟排序:    第一次排序:1和2比較,2大于1,交換位置:  1  2  3  6  8  9    第二趟總共進行了1次比較, 排序結果:  1  2  3  6  8  9---------------------------------------------------------------------第一趟比較5次,過來一遍,一定能找到最大的那個,下一趟比較就不需要再比誰最大了,因為最大的已經有了。第二趟比較4次一定可以找到二大的,下一趟就不用管最大、二大了。第三趟比較3次一定找到三大最后一個不用比較了,它一定是最小的,所以只需要arr.length-1趟。每一趟的比較次數也不同,越來越少,因為最大、二大已經知道,無須再比。可以這么想:第n趟比較總共會比較多少次呢?首先后頭是n-1個不管(比如說第3趟開始時,最大、二大已經有了,后頭3-1=2個不管);前頭第一個不管,因為比較最少需要2個,第一個是基礎;然后拿第一個和剩余的一一映射,看看有多少根映射,就有多少次。那么也就是:a[0]-->a[1]; a[0]-->a[2]; a[0]-->a[3],共比較三次。a[4]a[5]分別是二大、最大。for(int i=1;i<arr.length;i++){    for(int j=1;j<arr.length-i;j++){    //交換位置}  代碼實現:arr.lenth=6,我們這里就寫6。    for(int i=0;i<6-1;i++){//外層循環控制排序趟數      for(int j=0;j<6-1-i;j++){//內層循環控制每一趟排序多少次        if(arr[j]>arr[j+1]){ //第一次比較,a[0]和a[1],大于就替換位置,小于就不變。          int temp=arr[j]; //第二次比較,a[1]和a[2],....          arr[j]=arr[j+1]; //一直比到a[5]          arr[j+1]=temp;        }      }    } 21.向上轉型和向下轉型向上轉型:將子類對象轉為父類對象。父類指向子類引用對象會遺失除與父類對象共有的其他方法,也就是在轉型過程中,子類的新有的方法都會遺失掉,在編譯時,系統會提供找不到方法的錯誤。Animal a 引用指向 new Bird();子類對象當成父類對象,只能調用父類的成員,如果子類重寫了父類的方法就根據這個引用指向調用子類重寫的這個方法(這個方法就是覆蓋override)。這個調用過程就稱為“動態綁定”。向下轉型:父類轉子類。 情況一:如果父類引用的對象如果引用的是指向的子類對象,那么在向下轉型的過程中是安全的。也就是編譯是不會出錯誤的。情況二:如果父類引用的對象是父類本身,那么在向下轉型的過程中是不安全的,編譯不會出錯,但是運行時會出現java.lang.ClassCastException錯誤。它可以使用instanceof來避免出錯此類錯誤。class Animal {public void eat() {System.out.println("animal eatting...");}}class Bird extends Animal {public void eat() System.out.println("bird eatting...");}public void fly() {System.out.println("bird flying...");}}向下轉型:main(String[] args) {Animal ab = new Bird(); // 向上轉型,這種情況太常見了,List<T> list=new ArrayList<T>;// 原來這種寫法只能用ArrayList重寫List的方法,不能用ArrayList特有的方法ab.eat();ab.fly();//這句報錯!此處提示在Animal中沒有定義fly方法。}向下轉型:2種情況main(String[] args) {Animal ab = new Bird(); // 向下,指向子類對象,不報錯Bird b = (Bird) ab;b.eat();b.fly();}main(String[] args) {Animal ab = new Animal(); // 向下,指向父類對象,報錯Bird b = (Bird) ab;b.eat();b.fly();}22. Servlet簡介> Server + let        > 意為:運行在服務器端的小程序。        > Servlet實際上就是一個接口。            - 狹義上的Servlet,指的就是Servlet接口            - 廣義上的我們認為凡是實現Servlet接口的類,我們都稱他是一個Servlet *****        > Servlet的作用:            1.接收用戶發送的請求            2.調用其他的java程序來處理請求            3.根據處理結果,返回給用戶一個頁面23.緩存是什么?作用就像倉庫中臨時堆放貨物的地方一樣,貨物從運輸車輛上放下時臨時堆放在緩存區中,然后再搬到內部存儲區中長時間存放。貨物在這段區域中存放的時間很短,就是一個臨時貨場。 最初緩存只有一級,后來處理器速率又提升了,一級緩存不夠用了,于是就添加了二級緩存。二級緩存是比一級緩存速率更慢,容量更大的內存,主要就是做一級緩存和內存之間數據臨時交換的地方用。為了適應速率更快的處理器,已經出現了三級緩存了,它的容量更大,速率相對二級緩存也要慢一些,但是比內存可快多了。24.什么是Web緩存?Web緩存是指一個Web資源(如html頁面,圖片,js,數據等)存在于Web服務器和客戶端(瀏覽器)之間的副本。緩存會根據進來的請求保存輸出內容的副本;當下一個請求來到的時候,如果是相同的URL,緩存會根據緩存機制決定是直接使用副本響應訪問請求,還是向源服務器再次發送請求。Web緩存的作用1.減少網絡帶寬消耗:無論對于網站運營者或者用戶,帶寬都代表著金錢,過多的帶寬消耗,只會便宜了網絡運營商。當Web緩存副本被使用時,只會產生極小的網絡流量,可以有效的降低運營成本。2.降低服務器壓力:給網絡資源設定有效期之后,用戶可以重復使用本地的緩存,減少對源服務器的請求,間接降低服務器的壓力。同時,搜索引擎的爬蟲機器人也能根據過期機制降低爬取的頻率,也能有效降低服務器的壓力。3.減少網絡延遲,加快頁面打開速度:帶寬對于個人網站運營者來說是十分重要,而對于大型的互聯網公司來說,可能有時因為錢多而真的不在乎。那Web緩存還有作用嗎?答案是肯定的,對于最終用戶,緩存的使用能夠明顯加快頁面打開速度,達到更好的體驗。25.Java中用最有效率的方法算出2 乘以8 等於幾?2 << 3,因為將一個數左移n 位,就相當于乘以了2 的n 次方,即:2X2n次方那么,一個數乘以8 只要將其左移3 位即可,而位運算cpu 直接支持的,效率最高,所以,2 乘以8 等於幾的最效率的方法是2 << 3。//計算2*8=2*23System.out.println(2<<3);//8=2的3次方為8//計算2*16=2*24System.out.println(2<<4);//16=2的4次方為16
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 狠狠操视频网站 | 日韩毛片免费观看 | 久久九九热re6这里有精品 | 伦一区二区三区中文字幕v亚洲 | 91福利免费观看 | 高清在线国产 | 九九热在线视频观看这里只有精品 | 成人情欲视频在线看免费 | 成人福利在线视频 | 一级全毛片| 国产毛片网 | 免费毛片电影 | 免费国产视频在线观看 | 特级毛片a级毛片100免费 | 蜜桃网站在线 | 日本aaaa片毛片免费观看视频 | 强伦女教师视频 | 4p一女两男做爰在线观看 | 涩涩天堂 | 国产精品一二区 | 国产色视频在线观看免费 | 曰批全过程40分钟免费视频多人 | 在线a毛片 | 黄色视频一级毛片 | 国产人成免费爽爽爽视频 | 国产精品视频免费在线观看 | 亚洲成人免费影视 | 国产日韩在线观看一区 | av在线直播观看 | 久久久久国产一区二区三区不卡 | 黄网站在线免费 | 国产一级毛片高清 | 久久影院国产精品 | 55夜色66夜色国产精品视频 | 黄色免费在线电影 | 亚洲成人免费电影 | 国产成人在线免费看 | 久久国产成人午夜av浪潮 | 黄色大片在线免费看 | 中文在线国产 | 香蕉黄色网 |