【Java基礎】03_Java常用API


一、java.lang.Object類【★】

類層次結構的根類,所有類都直接或者間接的繼承自該類。

構造方法:

public Object()

成員方法:

1) public int hashCode()

返回該對象的哈希碼值

2) public final Class getClass()

返回此對象的運行時類,即字節碼文件對象

3)public String toString()        //子類重寫:顯示屬性值

返回對象的字符串表示形式

即內存地址值。組成:包名...類名(即類的全路徑名)@內存地址值的十六進制

4)public boolean equals(Object obj)        //子類重寫:比較屬性值

比較兩個對象是否相同

面試題:==和equals()的區別?

equals():

  比較引用類型,【默認比較的】是引用類型的內存地址值是否相同。

  如果子類重寫了該方法,那就得按照重寫后的規則進行比較。

  基本類型包裝類和String重寫了該方法,比較的是值

==:    

  比較基本類型:比較的是基本類型的值是否相同。

  比較引用類型:比較的是引用類型的內存地址值是否相同。

二、java.util.Scanner類

JDK5以后用於獲取用戶的鍵盤輸入。

構造方法:

  public Scanner(InputStream source)

成員方法:

1) boolean hasNextXxx()     // 注意:判斷字符串省略Xxx

判斷是否存在下一個某種類型元素

2) xxx nextXxx()        

返回某種類型的元素

3) public int nextInt()

獲取int類型

4) public String nextLine()

獲取String類型

注意:先獲取int值,后獲取String值出現問題及解決方案

    同一個Scanner對象,先獲取數值,再獲取字符串會出現一個小問題。主要原因是回車符號\r\n字符的問題。在輸入int類型之后,需要回車執行下一個代碼,但是系統將回車當成了字符串輸入,所以沒法輸入字符串了

    推薦的解決方案:

    把所有的數據都先按照字符串獲取,然后要什么類型,再將獲取到的字符串轉換為什么類型。

三、java.lang.String類【★★★】

字符串是由多個字符組成的一串數據(字符序列)。

a:字符串字面值常量"abc",也可以看成是一個字符串對象。

b:字符串是常量,一旦被賦值,就不能被改變。

常見構造方法:

1)public String()

 

2)public String(byte[] bytes)【將字節數組轉成人能看懂的】

 

3)public String(byte[] bytes,int index,int length)

 

4)public String(char[] value)

 

5)public String(char[] value,int index,int count)

 

6)public String(String original)

 

5個面試題:結論

a:字符串如果是變量相加(有變量參與),先開辟空間,在拼接

b:字符串如果是常量相加(常量優化機制),是先加,然后在常量池中找,如果有就直接返回,否則,就創建。

判斷功能:

    1)boolean equals(Object obj)

  比較字符串是否相同,區分大小寫

    2)boolean equalsIgnoreCase(String str)

  比較字符串是否相同,不區分大小寫

    3)boolean contains(String str)

  字符串對象是否包含給定字符串

    4)boolean startsWith(String str)

 

    5)boolean endsWith(String str)

 

    6)boolean isEmpty()

        

獲取功能:

    1)int length()

 

    2)char charAt(int index)

 

    3)int indexOf(int ch)

 

    4)int indexOf(String str)

 

    5)int indexOf(int ch,int fromIndex)

 

    6)int indexOf(String str,int fromIndex)

 

    7)int lastIndexOf(String str)

 

    8)String substring(int start)

 

    9)String substring(int start,int end)

 

轉換功能:

    1)byte[] getBytes()    【將字符串轉成計算機能看懂的】

 

    2)char[] toCharArray()

 

    3)static String valueOf(char[] chs)

 

    4)static String valueOf(int i)

 

    5)String toLowerCase()

 

    6)String toUpperCase()

 

    7)String concat(String str) // 與+的區別

 

替換功能:

  String replace(char old,char new)

 

    String replace(String old,String new)

 

    String trim()

 

    int compareTo(String str)    (字典順序比較)

 

    int compareToIgnoreCase(String str)    (了解)

 

    String[] split(String regex) (補充,切割功能)

 

四、java.lang.StringBuffer類【★★】

線程安全的可變字符序列.

StringBuffer、StringBuilder和String的區別?

 

構造方法

public StringBuffer()

public StringBuffer(int capacity)

public StringBuffer(String str)

    

成員方法

public int capacity()     

public int length()        

    

添加功能

public StringBuffer append(String str)

 

public StringBuffer insert(int offset,String str)

    

刪除功能

public StringBuffer deleteCharAt(int index)

public StringBuffer delete(int start,int end)

    

替換和反轉功能

public StringBuffer replace(int start,int end,String str)

 

public StringBuffer reverse()

 

截取功能:返回值類型不再是StringBuffer本身

public String substring(int start)

 

public String substring(int start,int end)

      

    

StringBuffer和String的相互轉換【】

* String --> StringBuffer

    a:通過構造方法StringBuffer(String s)

    b:通過append()方法

        

* StringBuffer --> String

    a:通過構造方法 String(StringBuffer sb)

    b:通過toString()方法

    c:通過subString(0,sb.length());

 

注:String作為參數傳遞,效果和基本類型作為參數傳遞是一樣的。

五、數組算法(面試)

冒泡排序的原理和代碼(雙重for循環)

  相鄰元素兩兩比較,大的往后放,第一次完畢,最大值出現在了最大索引處

選擇排序的原理和代碼(雙重for循環)

  從0索引元素開始,依次和后面元素比較,小的往前放,第一次完畢,最小值出現在了最小索引處。

折半查找法的原理和代碼

  這里的有序指的是提供的數組初始狀態本身元素就是有序的。

六、java.util.Arrays類

全部為靜態方法:類名.調用

public static String toString(int[] a)    

 

public static void sort(int[] a)    

 

public static int binarySearch(int[] a,int key)

前提:數組本身是有序的

七、基本類型包裝類(Integer為例)【★】

常用的操作之一:用於基本數據類型與字符串之間的轉換。

基本類型和包裝類的對應:

        byte         Byte

        short        Short

        int        Integer

        long        Long

        float        Float

        double    Double

        char        Character

        boolean    Boolean

 

字段常量:類名.調用

    static int MAX_VALUE

    static int MIN_VALUE

構造方法

    1)public Integer(int value)        

    2)public Integer(String s) "1212"

    參數String必須是int型字符串,否則報數字格式異常

成員方法

1)public int intValue()        // 非靜態方法

    

2)public static int parseInt(String s)    //參數:數值型字符串

    

3)public static String toString(int i)

 

4)public static Integer valueOf(int i) 

 

5)public static Integer valueOf(String s)

 

    十進制到其他進制:

    6)public static String toBinaryString(int i)

 

    7)public static String toOctalString(int i)

 

    8)public static String toHexString(int i)

 

    其他進制到十進制(了解)

    9)public static String toString(int i,int radix)

 

    10)public static int parseInt(String s,int radix)

 

String和int類型的相互轉換【】

* int --> String

    方式1:和""進行拼接【推薦】

    方式2:String類方法【推薦】

            public static String valueOf(int i)

    方式3:int -> Integer(int) - >String(Integer類的toString方法())

    方式4:public static String toString(int i)(Integer類的靜態方法)

 

* String --> int

  方式1:String --> Integer(String) --> int

     方式2:public static int parseInt(String s)【Integer靜態方法推薦】

 

byte常量池:

  Integer的數據直接賦值,如果在-128到127之間,會直接從緩沖池里獲取數據(字節常量池)

  舉例:Integer i = 127;

八、正則表達式

是指一個用來描述或者匹配一系列符合某個語法規則的字符串的單個字符串。

其實就是一種規則。作用:專門用於操作字符串。

常見組成規則:

  字符

  字符類

  預定義字符類

  數量詞

  邊界匹配器

 

常見字符類: 中括號[...]代表單個字符

    1)[abc]           a、b 或 c(簡單類)

    2)[^abc]      除了 a、b 或 c外的任何字符(否定)

    3)[a-zA-Z]     a到 z 或 A到 Z中的任意字符, 兩頭的字母包括在內(范圍)

    4)[0-9]           0到9的字符都包括

 

預定義字符類:

    1)點 .     任何一個字符

    2)\d     數字:[0-9]

    3)\w     單詞字符:[a-zA-Z_0-9]

  注意:需要轉義字符進行轉義\,代碼書寫方式就是\\d。

 

Greedy 數量詞:

    1)X?        X,一次或一次也沒有

    2)X*        X,零次或多次

    3)X+        X,一次或多次

    4)X{n}     X,恰好 n 次

    5)X{n,}     X,至少 n 次

    6)X{n,m}    X,至少 n 次,但是不超過 m 次

 

分割功能:

  String類的功能:

  public String[] split(String regex)

  注意:按點split(".")切割,需要書寫成\\.,即書寫成split("\\.")

 

替換功能:

  String類的功能:

  public String replaceAll(String regex,String replacement)

 

分組功能:

捕獲組可以通過從左到右計算其開括號來編號。

例如,在表達式 ((A)(B(C))) 中,存在四個這樣的組:

        1 ((A)(B(C)))

        2 (A)

        3 (B(C))

        4 (C)

組零始終代表整個表達式。

這里的編號從左括號依次編號分組。(主要看左小括號)

(.)\\1+ $1

java.util.regex.Pattern和Matcher:

Pattern p = Pattern.compile("a*b"); // 獲取到正則表達式

Matcher m = p.matcher("aaaaab");    // 獲取匹配器

boolean b = m.matches();    //看是否能匹配,匹配就返回true

 

"aaaaab".matches("a*b");

 

Matcher的獲取功能:

public boolean find()    

 

public String group()

九、java.lang.Math類

Math 類包含用於執行基本數學運算的方法,如初等指數、對數、平方根和三角函數。

成員變量

    PI:靜態常量,即圓周率π

 

成員方法:

1)public static int abs(int a)

 

2)public static double ceil(double a)

 

3)public static double floor(double a)

 

4)public static int max(int a,int b)     min自學

 

5)public static double pow(double a,double b)    // a ^ b

 

6)public static double random()

 

7)public static int round(float a)     參數為double的自學

 

8)public static double sqrt(double a)

十、java.util.Random類

此類的實例用於生成偽隨機數流。

構造方法:

    public Random()        //以系統 納秒值為種子

 

    public Random(long seed)

 

成員方法:

    1)public int nextInt()

 

    2)public int nextInt(int n)    // 【重點掌握】

十一、java.lang.System類【★】

System 類包含一些有用的類字段和方法。它不能被實例化。

成員方法

    1)public static void gc()

 

    2)public static void exit(int status)

 

    3)public static long currentTimeMillis() // 【常用】

 

    4)pubiic static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)

十二、java.math.BigInteger類

可以讓超過Integer范圍內的數據進行運算。可以放很大的整數。

金融、銀行、證券行業需要用到這個類。

構造方法:

    public BigInteger(String val)

 

成員方法:

    1)public BigInteger add(BigInteger val)

 

    2)public BigInteger subtract(BigInteger val)

 

    3)public BigInteger multiply(BigInteger val)

 

    4)public BigInteger divide(BigInteger val)

 

    5)public BigInteger[] divideAndRemainder(BigInteger val)

 

十三、java.math.BigDecimal類

由於在運算的時候,float類型和double很容易丟失精度,演示案例。所以,為了能精確的表示、計算浮點數,Java提供了BigDecimal

不可變的、任意精度的有符號十進制數。

構造方法:

    public BigDecimal(String val) // 【推薦使用】

 

成員方法:

    1)public BigDecimal add(BigDecimal augend)

 

    2)public BigDecimal subtract(BigDecimal subtrahend)

 

    3)public BigDecimal multiply(BigDecimal multiplicand)

 

    4)public BigDecimal divide(BigDecimal divisor)

 

    5)public static BigDecimal valueOf(double val) // 【推薦使用】

十四、java.util.Date類【★★】

類Date 表示特定的瞬間,精確到毫秒。

注意:Date是util包下的,不能導入sql包下的。

 

構造方法

  Date()    //【常用】

 

  Date(long date)

成員方法:

    public long getTime()

 

    public void setTime(long time)

十五、java.text.SimpleDateFormat類【★★】

DateFormat 是日期/時間格式化子類的抽象類,

它以與語言無關的方式格式化並解析日期或時間。

DateFormat 是抽象類,不允許實例化,所以開發使用其子類SimpleDateFormat。

 

年月日時分秒:yyyy年MM月dd日HH:mm:ss

 

構造方法:

    public SimpleDateFormat()

 

    public SimpleDateFormat(String pattern) 【使用最多】

 

成員方法:

    public final String format(Date date)

 

    public Date parse(String source)

十六、java.util.Calendar類【★】

Calendar 類是一個抽象類,它為特定瞬間與一組諸如

YEAR、MONTH、DAY_OF_MONTH、HOUR 等日歷字段之間的轉換提供了一些方法,並為操作日歷字段(例如獲得下星期的日期)提供了一些方法。

Calendar替代了很多Date中的方法,所以Date中的類很多方法被標注為過時。

成員字段:

  Calendar.YEAR         獲取年份

  Calendar.MONTH        月份編號是從0開始編號的。【】

  Calendar.DAY_OF_MONTH    獲取月份中的第幾天  

  Calendar.DAY_OF_WEEK    周日是第一天,周六是最后一天。

成員方法:

    public static Calendar getInstance()

 

    public int get(int field)

 

    public void add(int field,int amount)

 

    public final void set(int year,int month,int date)

十七、練習題

A:模擬用戶登錄,並提示還有幾次(總共3次)。如果登錄成功,就可以玩猜數字小游戲了。

B:遍歷獲取字符串中的每一個字符

C:統計字符串中大寫,小寫、數字字符及其他字符的個數

D:把字符串的首字母轉成大寫,其他小寫

E:把int數組拼接成一個指定格式的字符串 如:[1, 2, 3]

F:字符串反轉

G:統計大串中小串出現的次數

H:判斷一個字符串是否是對稱字符串

I:把一個字符串中的手機號碼獲取出來

J:算一下你來到這個世界多少天?

K:鍵盤錄入任意一個年份,判斷該年是閏年還是平年

閏年366天 平年365天 多的那一天就是2月的一天,平年二月28天,閏年29天.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM