java基礎

java ==>計算機語言
    語言
        人類語言 一樣 
                剛剛出生  ==》哭
                剛剛會說一個字==》 飯,媽,爸
                會說 短點句子==》媽 我吃飯飯
                人類語言 ==》正常溝通了
        計算機語言
                機器語言(打孔機)==》 0 和1 
                彙編===》簡單的命令  if ?代表什麼
                面向過程==》 c,c#  按部就班
                面向對象 ==》java (最接近人類自然)
    總結: 我們人和電腦對話
       a)java(爪哇)的背景
               95年  出現的是jdk 1.0,我們現在用 jdk1.7
               98年   更名 j2XXX  版本  j2SE(標準版) j2EE(企業版) j2ME(微小)
               sun公司   後來被oracle收購了
               java之父  詹姆斯-高斯林  
       b)java的特點    
               面向對象,擴平臺,簡單、、、、
        命令 
            1)爲什麼配置環境變量 到  bin 夾?
                 爲了  window系統能找到   .javac  .java命令 
            2)dos命令
                進入某個 盤符
                        盤符:
                進入某個文件夾
                        cd 文件夾
                返回上一層文件夾
                        cd ..     
                Java的編譯命令
                        javac 源文件.java     ===》.class
                Java的運行命令
                        java  源文件    
       d)Java的基本知識點
                1)標識符(自己起名的地方)    
                        由字母,數字,_,$組成
                        不能以數字開頭
                        不能使用關鍵字

                    class 後面的名 ==》首字母大寫,駝峯標識,語義化
                2) 關鍵字
                          都是小寫字母 , 有2個 保留關鍵字   goto ,const
                3)註釋 
                        //  單行註釋   
                        /*  */ 多行
                        /** */ 文檔註釋 
                   註釋意義: 方便自己,和他人看    
                4) java的數據類型
                     基本數據類型     和引用類型
                      基本數據類型(8
                          整型
                               int ,short,byte,long
                                   int 是默認的類型?     4個字節    1個字節佔8位
                                   byte 類型  存值範圍   -128 到 127 
                                   long 是 後面加L        
                          浮點型
                                double,float
                                     默認是double
                                     float 加 f
                          字符
                                 char
                                     單引號 引起來的 單個字符
                                     轉移字符
                                     ASII碼 
                          布爾
                               boolean
                                   只有  true 和false
                     爲什麼學習數據類型?
                引用類型 :
                     String  存儲字符串的
                5) 聲明變量 (三要素)
                        數據類型           變量名    =初始化值;         
                    變量名的規範:  首字母小寫,駝峯,語義化  
                           
               6)數據類型轉換
                    大小順序               byte,short,char,int-long-float-double 
                   1) 數據量小的,向大的轉換 成爲 自動轉換     
                   2) 表數範圍 ,大的向小的轉換,需要強制轉換 ==》 小括號裏面寫要轉換的類型
                   3) byte,short,char,再做運算的時候,自身先轉換成 int 
                   4)混合運算時,結果爲 最大的類型
                   5)boolean 不參加轉換

               7)運算符
                   a)算術運算符
                       +,-,*,/,%,++,--
                       / 和%的區別
                       / 取商的 
                       %取 餘數
                    ++ 
                        前綴   ++a ===》 變量 先 +1 ,然後得出結果
                        後綴 a++ ==》 先把變量值取過來,再加+1
                    運算結果 都是  a=a+1
                   b)邏輯運算符
                        &,&& | ,||,!
                   & 是 c語言的
                   && 是java 新增   效率 高
      面試題:& 和&&的區別?
            &  無論結果 什麼樣,第二個表達式都執行,計算二進制
            && 如果第一個式子,對整個結果已經構成影響 ,那麼第二個式子不執行

                   c)關係運算符
                       > < >= == != 
                   d)賦值
                       =
    
                   e)連接符
                       +
                   f)擴展運算符
                        +=,-=,/=
                       a+=b   ===> a=a+b 
                   g)三目運算符
                       boolean 表達式?值1 :值2
              8)java的程序設計結構
                  順序結構 (瀑布流)
                  分支
                      單分支
                          if(boolean 表達式){}
                          if(){} else {}
                  注意:if小括號裏面一定是一個 最後的出來true或者false的東西
                      多分支
                          if(){}else if(){} else if(){}...else{}
                  條件:是一個範圍值 
                          switch(){}
                  條件: 定值    數據類型 ,int,short,byte,char,jdk1.5枚舉 jdk1.7String    
                  循環
                      for(變量的初始化;條件;自增或者自減){
                              循環體
                              }
                      while
                      do while
                  for 是知道循環次數
                  while  不知道次數
                  do while ,無論條件是否成立,必須執行一次 
              注意:循環 必須要有 結束的條件
                  跳出
                      break;   跳出 當前(整個)循環
                      continue;    跳出 當次,然後繼續執行
                  數組
                      1)爲什麼學習數組?
                          相同數據類型的數據  統一管理,然後可以 節省空間,提高效率
                      2)如何聲明數組
                          靜態的
                              數據類型 [] 數組名={數據}
                          動態的
                              數據類型 [] 數組名 =new 數據類型[長度];
                      3)數組的 引用
                           數組名[下標]  0到 長度 -1
                      4)數組的長度
                           數組名.length 
                           
                      5)排序  
                         冒泡 排序 原理
                               相鄰倆個比較 
                        
                      6)二維數組 
                          數據類型[][] 數組名字 = new 數據類型[長度][]
                      7)數組屬於 引用類型,如果沒有初始化,有默認的初始化
                      8)數組的複製
                          System.arraycopy(原數組,從哪起點,目標數組,粘貼位置,長度);
                  方法
              1)爲什麼學習方法?
                  可以重複利用,方便管理!
              2)方法的格式?
                  public static 返回值類型   方法名(參數列表){
                      方法體
                  }
                        返回值類型:  基本數據類型,引用類型,void
                對應的 return語句   是返回值類型的 具體 值
                參數列表: 形參 也就是 數據類型    變量
               實參:  實際  給 形參傳入的值
                 方法重載:
                      方法名相同,參數不同(數據類型,個數,順序),返回值類型 是否相同不影響重載
                 爲啥有重載?
                          是多態的一種體現
                          傳入什麼 值,執行出什麼樣 
    方法的格式
        public static 返回值類型      方法名(參數列表){
              return ;
        }
        
        返回值類型: 基本數據類型,引用類型,void
        
        方法重載: 方法名相同,參數列表不同(類型,順序,個數)  返回值類型不影響重載
    數組
        引用類型, 元素默認值 , 整型 0,浮點 0.0 String null 
    冒泡 的原理
        相鄰的倆個元素比較 

    switch小括號 裏面放什麼類型?
        int,char,byte,short jdk 1.5枚舉  jdk 1.7 String
     面向對象
         總結一下 類和對象的 概念 ,彼此關係
         說出來 3大特徵,每個特徵稍作解釋
         總結一下
    a)如何創建類
        屬性  和功能
      屬性  是 變量 
     變量的分類以及區別:
         局部變量: 在方法語句內的變量  ,臨近大括號內有效,如果使用必須賦初值
         成員變量 :方法外,類體裏的變量,整個類體內有效,有默認的初始值
     功能 是  方法
         public 返回值類型   方法名 (參數列表){
              return 語句
         }
     構造:
         a)爲什麼? 
       有些對象 以創建的時候,就有一些屬性了,通過構造 來實現
        b) 如何寫構造
     構造方法的名字和類名相同,不能有返回值類型 
        c)使用,作用?
      不用程序員手動調用(不用對象名點出來) ,創建對象,初始化對象
    面向對象的三大特徵
         封裝 
     屬性 私有化,功能 公開化,然後調用
     4個權限 修飾符
      可以修飾變量,修飾功能,修飾類
         public :整個項目下
        private  :本類中
        protected :不用包中有繼承關係
               缺省 : 本包中
         
     包 
         package 關鍵字          ==》 java 源文件第一條語句是什麼?
     包的書寫
          所有字母都小寫,用點管理每一層,公司域名到過來  
     導入包
         import 快捷鍵  ctrl+shift+o 
     java 特殊包 ,常用包
     java.lang 包 
           String  Math Object 基本數據類型包裝類     Throwable
          util   io  text  sql 
     this 關鍵字
         調用本類不同構造,區分成員變量和局部變量      ,代表當前對象 
    繼承
        關鍵    extends 
        java 只支持單繼承   ,一個類只有一個父類 , private成員  子類繼承不了
               方法重寫(覆蓋)
                方法名相同   ,參數列表相同,返回值類型 相同,方法的聲明部分相同,方法的實現不同
        一個類型是不是 一個類型         instanceof
        繼承中構造原則
            子類 構造過程中,先構造父類
            用 super 調用父類構造,用this調用本來構造,而且 super和this只能放在第一行
            如果一個父類有有參的,沒有無慘的,那麼子類必須也有有參的構造

    抽象 
        把一些方法,或者屬性 ,抽象到一個類裏面,然後,方法的實現由具體子類完成
       規則:
           方法沒有方法體,爲抽象方法,有抽象方法的類,必須是抽象類,但是抽象類裏 不一定都是抽象方法
           抽象類不能實例化,抽象必須被繼承,抽象方法必須重寫,抽象類裏面可以有構造方法,子類調用

     多態:
         多態必要條件
             有繼承,有方法重寫,有父類引用指向子類對象
    集合
        1個圖
    Collection(接口)
        |List(接口)
            ArrayList
            LinkedList
        |Set(接口)
            HashSet
            
    Map(接口)
        |HashMap
1、Collection和 Collections 的區別?

        Collections是個java.util下的類,它包含有各種有關集合操作的靜態方法。 
        Collection是個
java.util下的接口,它是各種集合結構的父接口。
2、Collection和 Map 的區別?
    Collection中存儲了一組對象,而Map存儲關鍵字/值對

3、List 和 Set 的區別?
    List:     1.可以允許重複的對象。
            2.可以插入多個null元素。
                3.是一個有序容器,保持了每個元素的插入順序,輸出的順序就是插入的順序。
                4.常用的實現類有 ArrayList、LinkedList 和 Vector。ArrayList 最爲流行,它提供了使用索引的隨意訪問,而 LinkedList 則對於經常需要從 List 中添加或刪除元素的場合更爲合適。
     Set:     1.不允許重複對象
              2. 無序容器,你無法保證每個元素的存儲順序,TreeSet通過 Comparator  或者 Comparable 維護了一個排序順序。
             3. 只允許一個 null 元素
             4.Set 接口最流行的幾個實現類是 HashSet、LinkedHashSet 以及 TreeSet。最流行的是基於 HashMap 實現的 HashSet;TreeSet 還實現了 SortedSet 接口,因此 TreeSet 是一個根據其 compare() 和 compareTo() 的定義進行排序的有序容器。

4、ArrayList 和LinkedList 的區別?
    ArrayList 可以提供更快速的訪問,如果經常添加刪除元素的,那麼肯定要選擇LinkedList。

5、List  和Vector的區別?
Vector是線程安全的而ArrayList不是,ArrayList和Vector都採用線性連續存儲空間,當存儲空間不足的時候,ArrayList默認增加爲原來的50%,Vector默認增加爲原來的一倍; Vector可以設置capacityIncrement,而ArrayList不可以,(從字面理解就是capacity容量,Increment增加,容量增長的參數。)

6、HashMap  和 Hashtable 的區別?
    1. 存儲結構
                HashMap                      HashTable
            數組 + 鏈表/紅黑樹             數組 + 鏈表
    2. 擴容方式
              oldCap * 2                      oldCap * 2 + 1
    3. 關於null值
              key, value 均可以爲 null     key, value 均不可以爲 null
    4. 線程安全
              線程不安全                       線程安全

7、HashSet 和 TreeSet 的區別?

    1. 底層存儲的數據結構不同

        HashSet底層用的是HashMap哈希表結構存儲,而TreeSet底層用的是TreeMap樹結構存儲

    2.存儲時保證數據唯一性依據不同

       HashSet是通過複寫hashCode()方法和equals()方法來保證的,而HashSet通過Compareable接口的compareTo()方法來保證的

    3.有序性不一樣

     HashSet無序,TreeSet有序


    jdk1.5新增特性
        a)新增for
            for(數據類型   變量名:要遍歷的變量名){}
        b)可變參數
            void m(int ...a){}
         注意 :多個參數,可變參數,不能寫第一個
        c)泛型
            3個通配符
             類型  ?===》此時問號是 任何類型
                ?  extends 數據類型    ===》 此時問號 是  後面類型的子類
              ?   super    數據類型   ===》此時問號是  後面類的 父類
        d)枚舉
            enum 關鍵字     常量
            作用 :就是 不需要改變的值,單獨定義成一個類型
            構造 必須是private的,而且要放在  常量後面 
            普通的變量,方法,都放在後面
        生成 doc文檔 ===》導出 ==》 javadoc 
    io 流
    File 類
         創建文件
         創建文件夾
         一些方法
             判斷是否是文件的
             判斷是否存在的
             一層一層的查找文件的
        分類
             按單位 :字節 ,字符
             按方向: 輸入,輸出
             按功能: 節點(低級) 處理(高級)
    4大抽象流
        InputStream
        OutputStream
        Reader
        Writer   

        節點流: 子類 File流
        處理流: Buffered流,Data流  Object流 Print流 
        流操作的步驟
            a)先創建文件
            b)選擇流
            c)讀寫操作
            d)關閉流

 

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