1. 程式人生 > >API總結

API總結

JAVA

API

一.Scanner類:
1、鍵盤錄入的步驟:
1)需要創建鍵盤錄入對象:Scanner sc =new Scanner(System.in);
2)導入包:import java.util.Scanenr; ctrl+shift+o
3)接收數據:XXX(類型) 變量名= sc(鍵盤錄入對象).nextXXX();
Eg:int a = sc.nextInt();
2.Scanner類的構造方法:
Public Scanner(InputStream source){//以輸入流的形式錄入數據
//InputStream:字節輸入流
InputStream in = System.in;//底層執行返回的是一個字節輸入流(標準輸入流)

}
3.Scanner類中的一些常見方法:
1).在Scanner類中提供一個判斷功能:
Public boolean hasNextXXX();{//當前掃描器判斷是否有下一個可以錄入的XXX類型數據
nextXXX();
}
Java.util.InputMismatchException:錄入的數據和接收的數據類型不匹配異常
package org.westos.API;

import java.util.Scanner;//ctrl+Shift+o導包

public class APIDemo1 {
public static void main (String[] args) {
//創建鍵盤錄入對象
Scanner sc = new Scanner(System.in);

//錄入對象
System.out.println("請輸入一個數據:");
if(sc.hasNextInt()) {
int num = sc.nextInt() ;
System.out.println("num:"+num);
}else {
System.out.println("您輸入的數據類型不匹配.");
}

}

2).問題:
鍵盤錄入兩個int類型的數據,分別輸出,沒有問題;
鍵盤錄入兩個String類型的數據,分別輸出:沒有問題;
先錄入一個String類型的數據,在錄入int類型的數據,沒有問題;
先錄入一個int類型的數據,再錄入String類型的數據,有問題。第二個數據是字符串類型,又由於錄入下一個數據要"空格"本身是一個字符串。

b是空格,b的值沒有錄入!
如何解決:重寫創建鍵盤錄入對象
Eg:package org.westos.API;

import java.util.Scanner;

public class APIDemo {
public static void main(String[] args) {
//創建鍵盤錄入對象
Scanner sc = new Scanner(System.in);
//接收數據
System.out.println("請輸入一個數據:");
int a = sc.nextInt();
System.out.println("num:"+a);
//接收字符串

    //System.out.println("請輸入一個字符串:");
    //String b = sc.nextLine();
    //System.out.println("String:"+b);

    //重新創建一個鍵盤錄入對象
    System.out.println("請輸入一個字符串:");
    Scanner sc2 = new Scanner(System.in);
    //接收字符串
    String b = sc2.nextLine();
    System.out.println("String:"+b);

}

}
二.Object類:
1.Object:是類層次結構的根類.每個類都使用 Object 作為超類(父類)
2.Object類中的一些方法:
A).public int hashCode()返回該對象的哈希碼值 . 把它理解地址值(不是實際意義的地址值)
B).public final Class getClass()返回此 Object 的運行時類
Class類中有一個方法:
C).public String getName()以 String 的形式返回此
Class 對象所表示的實體(類、接口、數組類、基本類型或 void)名稱。
返回值是Class(JavaSE最後一天:反射)
public class ObjectDemo {

public static void main(String[] args) {

    //創建一個學生對象
    Student s1 = new Student() ;
    System.out.println(s1.hashCode());//118352462

    System.out.println("-------------------------");

    Class c1 = s1.getClass() ;//Object 的運行時類
    System.out.println(c1);//class org.wesots_01.Student :以Class形式表示的當前類
    String name = c1.getName() ;
    System.out.println(name);//以字符串顯示當前的類:org.wesots_01.Student :全類名

    System.out.println("-------------------------");

    //鏈式編程
    String str = s1.getClass().getName() ;
    System.out.println(str);

}

}
D).public String toString(); 返回該對象的字符串表示。直接輸出對象名稱:實際執行了Object中的toString(),輸出的全類名@十六進制數據
br/>直接輸出對象名稱:實際執行了Object中的toString(),輸出的全類名@十六進制數據

就需要重寫Object中的toSring(),一般情況:自動生成即可 建議所有子類都重寫此方法。
Integer:是int類型的包裝類類型,它裏面提供了一個方法
public static String toHexString(int i):以十六進制表示對字符串形式。
E).public boolean equals(Object obj)指示其他某個對象是否與此對象“相等”。
==:比較的值相等(地址值)
equals:本身屬於Object類中的方法,默認比較的是地址值是否相同
按照正常情況:equals方法底層實際執行的兩個對象在==,比較是地址值;假如:學生的年齡和姓名一致,看成同一個人
在自定義的類中,重寫Object中的equals()方法,比較是兩個對象的成員變量的值是否相同.自動生成即可!
三.String:
1.String表示字符串:
1).字符串是常量;它們的值在創建之後不能更改。
String是一種特殊的引用類型:默認值:null
2).構造方法:
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):將一個字符串常量構造成一個字符串對象。
3).常用的方法:
Public int length()//返回此字符的長度
4).面試題:
數組中有沒有length(),字符串中有沒有length(),集合中有沒有length()?
數組中沒有length()方法,只有length屬性;
字符串中有length()方法;
集合中沒有length(),獲取集合的元素數:size() (後面講)。
5).面試題:
String s1 = new String("abc");
String s1 = "abc" ;
這兩個分別創建了幾個對象?
6).String作為形式參數:它的效果和基本類型是一樣的,形式參數的改變對對實際參數沒有影響 (它一旦賦值,不能被改變)
2.String類:
1).String類的常用獲取功能:
public int length():獲取字符串的長度;
public char charAt(int index)返回指定索引處的字符;
public int indexOf(int ch)返回指定字符在此字符串中第一次出現處的索引;
問題:既然傳入的字符:這裏為什麽用int類型
‘a‘和97 都表示a
public int indexOf(int ch,int fromIndex)返回在此字符串中第一次出現指定字符處的索引,從指定的索引開始搜索;
public int indexOf(String str)返回指定子字符串在此字符串中第一次出現處的索引;
public int indexOf(String str,int fromIndex)回在此字符串中第一次出現指定字符串處的索引,從指定的索引開始搜索。
截取功能
public String substring(int beginIndex):從指定位置開始截取,默認截取到末尾,返回新的字符串;
public String substring(int beginIndex, int endIndex):從指定位置開始到指定位置末尾結束,包前不包含.
遍歷一個數組:
四.StringBuffer:

  1. StringBuffer::線程安全的可變字符序列.
    • 線程(後面多線程中講)
      線程的安全問題,是難點(多線程屬於難點) 多線程------>解決了多線程安全問題------>是死鎖 :生產消費模式(Java中等待喚醒機制)
      線程安全 --->同步的---->執行效率低
      舉例:銀行的網站,醫療平臺...
      線程不安全---->不同步---->執行效率高
      舉例:新聞網站,XXX論壇...
      2.面試題:
      StringBuffer和String的區別?
      前者是一個可變的字符序列,後者是不可變的字符序列;
      如果從內存角度考慮,String定義的時候,會在常量池中開辟空間,比較耗費內存,而StringBuffer,字符串緩沖區(裏面存儲的全部都是字符串),它會釋放掉 ;
      3.StringBuffer的構造方法:
      StringBuffer() :無參構造的形式,初始容量16;
      StringBuffer(int capacity) :指定容量構造一個字符串緩沖區;
      StringBuffer(String str) 構造一個字符串緩沖區,並將其內容初始化為指定的字符串內容.
      4.StringBuffer的獲取功能:
      public int length()返回長度;
      public int capacity()返回當前容量 (如果超過容量,系統自動分配(存儲字符串的時候,英文的)).
      5..StringBuffer的添加功能
      (實際開發中用的多):public StringBuffer append(String/boolean....) : 在字符串緩沖區中追加數據(在末尾追加),並且返回字符串緩沖區本身
      public StringBuffer insert(int offset,String str):
      將當前str字符串添加到指定位置處,它返回字符串緩沖區本身
      6.StringBuffer的刪除功能:
      public StringBuffer deleteCharAt(int index):移除指定位置處的字符..
      public StringBuffer delete(int start,int end):移除從指定位置處到end-1處的子字符串.
      7.public StringBuffer reverse() :將緩沖區中的字符序列反轉取代,返回它(字符串沖)本身.
      8.StringBuffer的截取功能:
      public String substring(int start):從指定位置開始截取,默認截取到末尾,返回值不在是緩沖區本身,而是一個新的字符串
      public String substring(int start,int end) :從指定位置開始到指定位置結束截取,包前不包後, 返回值不在是緩沖區本身,而是一個新的字符串.
      9.StringBuffer的替換功能:
      public StringBuffer replace(int start,int end,String str)
      從指定位置到指定位置結束,用新的str字符串去替換,返回值是字符串緩沖區本身

API總結