1. 程式人生 > >4..21學習內容總結

4..21學習內容總結

byw999

一:
1.Object:是類層次結構的根類.每個類都使用 Object 作為超類(父類)
2.public int hashCode()返回該對象的哈希碼值 . 把它理解地址值(不是實際意義 的地址值)
3.public final Class getClass()返回此 Object 的運行時類
4.Class類中有一個方法:
public String getName()以 String 的形式返回此
Class 對象所表示的實體(類、接口、數組類、基本類型或 void)名稱。
5.Object中的一個方法:
public String toString(); 回該對象的字符串表示
6.1>public boolean equals(Object obj)指示其他某個對象是否與此對象“相等”。
2> ==:比較的值相等(地址值)
3>equals:本身屬於Object類中的方法,默認比較的是地址值是否相同
4>按照正常情況:equals方法底層實際執行的兩個對象在==,比較是地址值;假如:學生的年齡和姓名一致,看成同一個人
5>在自定義的類中,重寫Object中的equals()方法,比較是兩個對象的成員變量的值是否同.

  1. 1>protected Object clone()創建並返回此對象的一個副本
    2>Object 類的 clone 方法執行特定的復制操作。首先,如果此對象的類不能實接口 Cloneable,則會拋出 CloneNotSupportedException。

    !!!!!註意,所有的數組都被視為實現接口 Cloneable.
    二:
    1.Scanner類: 簡單文本掃描器。
    2.鍵盤錄入的步驟
    1>需要創建鍵盤錄入對象
    Scanner sc =new Scanner(System.in);
    2>導入包:import java.util.Scanenr; ctrl+shift+o
    接收數據
    XXX 變量名= sc.nextXXX();
    3> 構造方法:
    public Scanner(InputStream source): 以輸入流的形式錄入數據的
    InputStream:字節輸入流
    InputStream in = System.in ; //底層執行返回的是一個字節輸入流(標準輸入流)
    3.Scanner類的一些常見的方法:
    1> XXX 變量名 = 鍵盤錄入對象.nextXXX();
    2>在Scanner類中它提供一個判斷功能:
    3>public boolean hasNextXXX():當前掃描器判斷是否有下一個可以錄入的XXX類型數據
    nextXXX()
    java.util.InputMismatchException:錄入的數據和接收的數據類型不匹配異常
    三:

    1. String:表示字符串:
      2.字符串是常量;它們的值在創建之後不能更改。
      3.String是一種特殊的引用類型:

      1. 構造方法:
        String():無參構造
        String(byte[] bytes) :將字節數轉換成字符串
        public String(byte[] bytes, int index,int length):將字節數組的一部分轉換成字符串
        public String(char[] value):將字符數組轉化成字符串 toCharArray():將字符串轉換成字符
        public String(char[] value, int index, int count):將字符數組的一部分轉換成字符串
        public String(String original):將一個字符串常量構造成一個字符串對象

        1. 常用的方法:
          public int length()返回此字符串的長度
          面試題:??
          數組中有沒有length(),字符串中有沒有length(),集合中有沒有length()?
          數組中沒有length()方法,只有length屬性
          字符串中有length()
          6.String字符串的最大的特點:字符串一旦被賦值,其值不能被改變
          7.String類的常用的判斷功能
          1>boolean equals(Object obj):將此字符串與指定的對象比較
          2>boolean equalsIgnoreCase(String str)將此 String 與另一個 String 比較,不考慮大小寫
          3>boolean contains(String str):判斷當前大川中是否包含子字符串 (重點)
          4>boolean startsWith(String str):以當前str字符串開頭(重點)
          5>boolean endsWith(String str):以當前str字符串結尾(重點)
          6>boolean isEmpty():判斷字符串是否為空
          7>public String concat(String str):字符串的特有功能:拼接功能和+拼接符是一個意思
          8.String類的常用獲取功能:
          1> public int length():獲取字符串的長度
          2>public char charAt(int index)返回指定索引處的 字符
          3>public int indexOf(int ch)返回指定字符在此字符串中第一次出現處的索引
          4> 問題:既然傳入的字符:這裏為什麽用int類型
          ‘a‘和97 都表示a
          5>public int indexOf(int ch,int fromIndex)返回在此字符串中第一次出現指定字符處的索引,從指定的索引開始搜索。
          6>public int indexOf(String str)返回指定子字符串在此字符串中第一次出現處的索引
          7>public int indexOf(String str,int fromIndex)回在此字符串中第一次出現指定字符串處的索引,從指定的索引開始搜索。
          8>截取功能
          a> public String substring(int beginIndex):從指定位置開始截取,默認截取到末尾,返回新的字符串
          b>public String substring(int beginIndex, int endIndex):從指定位置開始到指定位置末尾結束,包前不包含
          9>String的常用轉換功能:
          a> public byte[] getBytes() :將字符串轉換為字節數組
          b>public char[] toCharArray() :將字符串轉換成字符數組(重點)
          c> public static String valueOf(int i):將int類型的數據轉換成字符串(重點)
          d>這個方法可以將任何類型的數據轉化成String類型
          c>public String toLowerCase():轉成小寫
          d>public String toUpperCase():字符串中所有的字符變成大寫
          10>String類型的其他功能:
          a>public String replace(char oldChar,char newChar):將大字符串中的某個字符替換掉成新的字符
          b>public String replace(String oldStr,String newStr):將大串中的某個子字符串替換掉
          c>public String trim():去除字符串兩端空格
          d>public int compareTo(String anotherString)按字典順序比較兩個字符串
          四:
          StringBuffer:線程程安全的可變字符序列
          1.線程的安全問題,是難點(多線程屬於難點) 多線程------>解決了多線程安全問題------>是死鎖 :生產消費模式(Java中等待喚醒機制)

                           2. 線程安全    --->同步的---->執行效率低
                           3. 舉例:
                                  銀行的網站,醫療平臺...
          
                           4. 線程不安全---->不同步---->執行效率高
                              舉例:
                              新聞網站,XXX論壇...

    !!!! 面試題:

    1. StringBuffer和String的區別?
      1> 前者是一個可變的字符序列,後者是不可變的字符序列
      2>如果從內存角度考慮,String定義的時候,會在常量池中開辟空間,比較耗費內存
      3>而StringBuffer,字符串緩沖區(裏面存儲的全部都是字符串),它會釋放掉
      1. StringBuffer的構造方法:
        1> StringBuffer() :無參構造的形式,初始容量16
        2>StringBuffer(int capacity) :指定容量構造一個字符串緩沖區
        3>StringBuffer(String str) 構造一個字符串緩沖區,並將其內容初始化為指定的字符串內容
      2.                              1>StringBuffer的獲取功能:
                                        2>public int length()返回長度
                                     3>public int capacity()返回當前容量 (如果超過容量,系統自動分配(存儲字符串的時候,英文的))

        4.StringBuffer的添加功能
        1>(實際開發中用的多):public StringBuffer append(String/boolean....) :在字符串緩沖區中追加數據(在末尾追加),並且返回字符串緩沖區本身
        2>public StringBuffer insert(int offset,String str):將當前str字符串添加到指定位置處,它返回字符串緩沖區本身
        5.StringBuffer的刪除功能:
        1> public StringBuffer deleteCharAt(int index):移除指定位置處的字符..
        2>public StringBuffer delete(int start,int end):移除從指定位置處到end-1處的子字符串...
        3>StringBuffer的反轉功能:
        public StringBuffer reverse() :將緩沖區中的字符序列反轉取代,返回它(字符串沖)本身
        5>StringBuffer的截取功能:
        public String substring(int start):從指定位置開始截取,默認截取到末尾,返回值不在是緩沖區本身,而是一個新的字符串
        7> public String substring(int start,int end) :從指定位置開始到指定位置結束截取,包前不包後,返回值不在是緩沖區本身,而是一個新的字符串
        8> StringBuffer的替換功能:
        a>public StringBuffer replace(int start,int end,String str)
        b>從指定位置到指定位置結束,用新的str字符串去替換,返回值是字符串緩沖區本身
        !!!!!!幾個面試題:
        1.StringBuffer,String,StringBuilder的區別?
        StringBuffer和StringBuilder都是一個可變的字符序列,提供一個緩沖區.(兩者都看做容器)
        StringBuffer:線程安全的,同步的,執行效率低
        StringBuilder:線程不安全的,不同步的,執行效率高,並且單線程中優先采用StringBuilder
        StringBuffer 執行效率雖然低,但是由於String類型,並且他可變的字符序列,提供了緩沖區
        2 StringBuffer和數組的區別?
        數組:它是可以存儲多個數據的容器,並且多個數據的類型必須一致
        數組長度功能:length屬性
        StringBuffer:它是容器,它在緩沖區始終存儲的只能字符串類型的數據
        獲取緩沖區的長度:length()
        Integer類是int類型的包裝類類型
        ??問題: 需要將100十進制 (整數默認十進制) 它的二進制,八進制,十六進制...
        1>需求:獲取Integer的最值
        public static final int MAX_VALUE
        public static final int MIN_VALUE
        Integer提供了靜態功能:
        public static String toBinaryString(int i)
        public static String toOctalString(int i)
        public static String toHexString(int i)
        2> 基本類型對應都有一個保證類型,目的就為了將基本數據類型可以String類型之間進行互相轉換
        byte Byte
        short Short
        int Integer (講)
        long Long
        float Float
        double Double
        char character (講)
        boolean Booleaan
        3.Integer的構造方法:
        public Integer(int value)
        public Integer(String s)
        4.如何將int轉換為String類型?
        1>valueOf(int i) ;
        2>將String轉換為int類型
        3>static int parseInt(String s)
        5.JDK5 以後提供了自動拆裝箱
        1> 可以將Integer-->拆箱 int類型
        2>可以將int類型--->裝箱 Integer類型
        JDK5 還提供了哪些特性:
        1> 泛型,可變參數,增強for循環(在集合中)等等..
        6.JDK8特性:
        1>Stream流 --> 表達式
        2>Character類:
        3>Character 類在對象中包裝一個基本類型 char 的值。Character 類型的對象包含類型為 char 的單個字段。
        以確定字符的類別(小寫字母,數字,等等),
        4>構造方法:
        public Character(char value)
        7.Character類的判斷功能:
        1>public static boolean isDigit(char ch)確定指定字符是否為數字。
        2>public static boolean isLowerCase(int ch): 確定是否是小寫字母字符
        3>public static boolean isUpperCase(int ch):確定是否大寫字母字符
        8.兩個轉換功能:
        1>public static int toLowerCase(int codePoint)
        2>public static int toUpperCase(int codePoint)
        9.冒泡排序: 兩兩比較,大的往後放,第一次比較完畢最大值出現在最大索引處...
        10.選擇排序: 用0索引對應的元素依次後面索引對應的元素進行比較, 1索引..... 小的數據往前方法,就可以得到一個排好序的數組...
        11.數組中的元素查找法(基本查找法)
        折半查找(二分查找) :數組一定是有序
        分析:
        A:定義最小索引和最大索引
        B:計算中間索引
        C:中間索引對應的元素和需要查找的元素比較
        相等,直接返回中間索引
        不相等:
        大了,左邊找
        max = mid -1 ;
        小了,右邊找
        min = mid + 1 ;
        E:重新計算中間索引 ,回到B繼續查找

4..21學習內容總結