API:指的是應用程序編程的接口。JDK中提供了各種功能的Java類,以下是我對這些類的一些總結。
第一講:Sring類
一、概述
String是字符串的類類型,用於描述字符串事物。字符串是一個特殊的對象。特殊之處就在於:Stings= new String();和String s1=””;兩種寫法都是在創建對象,使用起來一樣。二、特點
字符串最大的特點就是:一旦被初始化就不可以被改變。
三、String類常見操作
1、獲取
int length():獲取長度。
char charAt(int index);根據位置獲取位置上的某個字符
int indexOf(int ch);返回的是ch在字符串中第一次出現的位置。//傳入的是字符對應的ASCII碼。//如果沒有找到,返回-1。
int indexOf(int ch,int fromIndex);從fromIndex指定位置開始,獲取ch在字符串中出現的位置。
int indexOf(String str);返回的是str在字符串中第一次出現的位置。
int indexOf(String str,int fromIndex);從fromIndex指定位置開始,獲取str在字符串中出現的位置。
int lastIndexOf();反向索引
2、判斷
boolean contains();判斷字符串中是否包含某一個子串,等價於indexOf
boolean ifEmpty();字符串中是否爲空,爲空返回0
boolean startsWith();字符串是否是以指定內容開頭
boolean endsWith();字符串是否是以指定內容結尾
boolea nequals();判斷字符串內容是否相同,複寫了Object類中的equals方法
3、轉換
String (char[]);將字符數組轉成字符串
char[] toCharArray();將字符串轉成字符數組
String (byte[]);將字節數組轉成字符串
String(byte[],offset,count);將字節數組中的一部分轉成字符串。count表示個數。
byte[] getBytes();將字符串轉成字節數組
4、替換 和比較
String replace(oldchar,newchar);返回的是一個新字符串。如果要替換的字符不存在,返回的還是原字符串。
String toUpperCase();將字符串轉成大寫
String toLowerCase();將字符串轉成小寫
String trim(); //將字符串兩端的多個空格去除
int compareTo(String);對兩個字符串進行自然順序的比較
5、切割
String[] split(regex);regex是一個切割規則
6、子串,獲取字符串中的一部分
String substring(begin);從指定位置開始到結尾。如果角標不存在,會出現字符串角標越界異常。
String substring(begin,end);包含頭,不包含尾。
第二講:StringBuffer類和StringBuilder類
一、概述
StringBuffer是一個容器,字符串的組成原理就是通過該類實現的。StringBuffer可以對字符串內容進行增刪改查等操作,很多方法和String相同。
二、特點
1、而且長度是可變化的。
2、可以直接操作多個數據類型。
3、最終會通過toString方法變成字符串。
三、常見功能
1、存儲
StringBuffer append():將指定數據作爲參數添加到已有數據的結尾處。
StringBuffer insert(intoffset ,數據):可以將數據插入到指定offset位置。
2、刪除
StringBufferedelete(start,end):刪除緩衝區中的數據,包含start,不包含end。
StringBuffer deleteCharAt(index):刪除指定位置的字符。
清空緩衝區:對象.delete(0,對象.length());
3、獲取
char charAt(int index);返回此序列中指定索引處的char
值
int indexOf(String str);返回第一次出現的指定子字符串在該字符串中的索引。
int lastIndexOf(String str);返回最後一次出現的指定子字符串在此字符串中的索引。
int length();返回長度(字符數)。
String substring(int start,int end);
4、修改
StringBuffer replace(int start,int end,String str);
void setCharAt(int index,char ch);
5、反轉
StringBuffer reverse();
在JDK1.5版本之後出現了StringBuilder。StringBuilder的方法跟StringBuffer一樣,在用法上兩者有什麼區別呢?StringBuffer:是線程同步的。有鎖。效率低,多線程建議使用StringBuffe
StringBuilder:是線程不同步的。無鎖。效率高,單線程建議使用 StringBuilder
程序示例:
public static void main(String[] args) {
System.out.println("1、添加--------------------");
add();
System.out.println("2、刪除--------------------");
dele();
System.out.println("3、修改--------------------");
alter();
}
public static void add() {
StringBuilder sb=new StringBuilder();//定義一個字符串緩衝區
sb.append("I came,heima!");
System.out.println("append添加結果爲: "+sb);//在末尾添加字符串
sb.insert(7, "it");
System.out.println("insert添加結果爲: "+sb);//在指定位置添加字符串
}
public static void dele() {
StringBuilder sb=new StringBuilder("I came,this.itheima!");
sb.delete(8, 12);
System.out.println("delete刪除指定範圍結果爲: "+sb);
sb.deleteCharAt(7);
System.out.println("deleteCharAt刪除指定位置結果爲: "+sb);
sb.delete(0, sb.length());//清空緩衝區
System.out.println("清空緩衝區結果爲: "+sb);
}
public static void alter() {
StringBuilder sb=new StringBuilder("I came,iiheima!");
sb.setCharAt(8, 't');//修改指定位置字符
System.out.println("修改指定位置字符結果爲 : "+sb);
sb.replace(7, 9, "ti");//替換指定位置字符串
System.out.println("替換指定位置字符串結果爲 : "+sb);
System.out.println("字符串翻轉結果爲: "+sb.reverse());
}
}
程序運行結果爲:
第三講:System類與Runtime類
一、System類
1、概述
描述系統信息的類,方法和屬性都是靜態的,使用時該類時直接用System調用即可。
2、System類常用方法
static void exit(int status) ;終止當前正在運行的Java 虛擬機。
staticvoid gc() ;運行垃圾回收器。
staticProperties getProperties() ;確定當前的系統屬性 。
static void currentTimeMillis() ;返回以毫秒爲單位的當前世界。
staticString getProperty(String key, String def); 獲取用指定鍵描述的系統屬性。
staticvoid setProperties(Properties props) ;將系統屬性設置爲 Properties 參數。
static StringsetProperty(String key, String value) ;設置指定鍵指示的系統屬性程序示例:
//計算程序在運行時所消耗的時間。
public class Test_3 {
public static void main(String[] args) {
long startTime=System.currentTimeMillis();
int sum=0;
for (int i = 0; i < 1000000000; i++) {
sum+=i;
}
long endTime=System.currentTimeMillis();
System.out.println("程序運行時間爲:"+(endTime-startTime)+"毫秒");
}
}
程序運行結果:
二、Runtime類
1、概述
概念:每個 Java 應用程序都有一個Runtime
類實例,使應用程序能夠與其運行的環境相連接。可以通過 getRuntime
方法獲取當前運行時。
特點:該類沒有構造函數,也就是它不能直接創建對象。該類是單例設計模式,保證在內存中只有一個對象。
2、Runtime類常用方法
process exec(String command) ;在單獨的進程中執行指定的字符串命令。
void gc(); 運行垃圾回收器。
static Runtime getRuntime() ;返回與當前 Java 應用程序相關的運行時對象。
void exit(int status) ;通過啓動虛擬機的關閉序列,終止當前正在運行的 Java 虛擬機。
程序示例:
//打開Windows自帶的筆記本程序
public class Test{
public static void main(String[] args) throws IOException {
Runtime rt=Runtime.getRuntime();
rt.exec("notepad.exe");
}
}
第四講:Math類與Random類
一、Math類
1、概述
Math
類包含用於執行基本數學運算的方法,如初等指數、對數、平方根和三角函數。
2、Math類常用方法
System.out.println("計算絕對值得結果爲: "+Math.abs(-1));
System.out.println("求大於參數的最小整數: "+Math.ceil(3.4));
System.out.println("求小於參數的最小整數: "+Math.floor(-4.1));
System.out.println("四捨五入得結果爲: "+Math.round(3.7));
System.out.println("求兩個數較大值得結果爲 : "+Math.max(4, 5));
System.out.println("求兩個數較大值得結果爲 : "+Math.min(4, 5));
System.out.println("生成一個大於等於0.0小於1.0隨機值爲 : "+Math.random());
運行結果爲:
二、Random類
1、概述
此類的實例用於生成僞隨機數流。
2、Random類常用方法
A:構造方法
Random();創建一個新的隨機數生成器。
Random(long seed) ;使用單個 long 種子創建一個新的隨機數生成器。
B:成員方法
int nextInt() ;返回下一個僞隨機數,它是此隨機數生成器的序列中均勻分佈的 int 值。
int nextInt(int n) ;返回一個僞隨機數,它是取自此隨機數生成器序列的、在 0(包括)和指定值(不包括)之間均勻分佈的 int 值。
程序示例:
//生成10個1-20內的隨機不重複的整數。
public class Test_4 {
public static void main(String[] args) {
Random r=new Random(); //創建Random實例對象
HashSet<Integer> hs=new HashSet<Integer>(); //創建HashSet集合,因爲程序要求數據不能重複
while(hs.size()<10){
hs.add(r.nextInt(20));
}
System.out.println(hs.toString());
}
}
程序運行結果:
第五講:時間類
一、Date類
1、概述
類 Date
表示特定的瞬間,精確到毫秒。
在類 Date
所有可以接受或返回年、月、日期、小時、分鐘和秒值的方法中,將使用下面的表示形式:
年份 y 由整數 y - 1900 表示。
月份由從 0 至 11 的整數表示;0 是一月、1 是二月等等;因此 11 是十二月。
日期(一月中的某天)按通常方式由整數 1 至 31 表示。
小時由從 0 至 23 的整數表示。
分鐘按通常方式由 0 至 59 的整數表示。
秒由 0 至 61 的整數表示;值 60 和 61 只對閏秒發生,儘管那樣,也只用在實際正確跟蹤閏秒的 Java 實現中。
2、常用方法
A:構造方法
Date();分配 Date 對象並初始化此對象,以表示分配它的時間(精確到毫秒)。
Date(long date); 分配Date對象並初始化此對象,以表示自從標準基準時間。B:成員方法
int compareTo(Date anotherDate) 比較兩個日期的順序。
boolean equals(Object obj) 比較兩個日期的相等性。
二、Calendar類
1、概述
Calendar類是一個抽象類,用於完成日期和時間字段的操作,它可以通過特定的方法設置和讀取日期的特定部分,比如年、月、日、時、分和秒等。
2、常用方法
int get(int field) ;返回給定日曆字段的值。
void add(int field, int amount) ;根據日曆的規則,爲給定的日曆字段添加或減去指定的時間量。
void set(int field, int value); 將給定的日曆字段設置爲給定值。
void set(int year, int month, int date, int hourOfDay, int minute, int second) ;設置字段 YEAR、MONTH、DAY_OF_MONTH、HOUR、MINUTE 和 SECOND 的值。
程序示例:
//獲取當前日期和時間
public class Test_3 {
public static void main(String[] args) {
//獲取表示當前時間的Calendar對象
Calendar c=Calendar.getInstance();
int year=c.get(Calendar.YEAR); //獲取當前年份
int month=c.get(Calendar.MONTH)+1;//獲取當前月份
int date=c.get(Calendar.DATE); //獲取當前日
int hour=c.get(Calendar.HOUR); //獲取當前時
int minute=c.get(Calendar.MINUTE); //獲取當前分
int second=c.get(Calendar.SECOND); //獲取當前秒
System.out.println("當前時間爲 : "+year+" 年 "+month+" 月 "+date+" 日 "+hour+" 時 "+minute+" 分 "+second+" 秒 ");
}
}
程序運行結果:
第六講:包裝類
一、概述
爲了更方便的操作每個基本數據類型,java提供了一系列的包裝類,通過這些包裝類可以將基本數據類型的值包裝爲引用數據類型的對象,可以在對象中定義更多的功能操作該數據。
二、基本數據類型和對象類型的對應
byte Byte
short Short
int Integer
long Long
float Float
double Double
boolean Boolean
char Character
三、常用方法
Integer.toBinaryString(); 以二進制(基數 2);無符號整數形式返回一個整數參數的字符串表示形式。
Integer.toOctalString();以八進制(基數 8);無符號整數形式返回一個整數參數的字符串表示形式。
Integer.toHexString();以十六進制(基數 16);無符號整數形式返回一個整數參數的字符串表示形式。
static int Integer.parseInt(String s) ;將字符串參數作爲有符號的十進制整數進行解析,字符串必須是int型範圍內的數字字符串 。
static int Integer.parseInt(String s,int basic);使用第二個參數指定的基數,將字符串參數解析爲有符號的整數. 字符串必須是int型範圍內的數字字符串。
int intValue() ;以int類型返回該Integer的值。
static Integer valueOf(int num) ;返回一個表示指定的 int 值的 Integer 實例。
static Integer valueOf(Strings, int radix) ;返回一個Integer對象,該對象中保存了用第二個參數提供的基數,進行解析時從指定的String中提取的值。
程序示例:
/*
"17 8 78 8 -12 96 52 1 -22"
要求對字符串中的數值進行排序。生成一個數值從小到大新字符串。
-22 -12 1 8 8 17 52 78 96
思路:1、將字符串切割爲字符串數組
2、將字符串數組轉換爲整數類型數組
3、對整數類型數組進行冒泡排序
4、將排序後的整數類型數組轉換爲字符串
*/
public static void main(String[] args)
{
String s="17 8 78 8 -12 96 52 1 -22";
print(s);
print(stringSort(s));
}
public static String stringSort(String s)
{
//將字符串切割成字符串數組
String[] str=s.split(" ");
//將字符串數組轉換爲整數類型數組
int[] arr=stringToInt(str);
// 對整數類型數組進行冒泡排序
bubbleSort(arr);
//將排序後的整數類型數組轉換爲字符串
return intToString(arr).toString();
}
// 將字符串數組轉換爲整數類型數組方法
private static int[] stringToInt(String[] str)
{
int[] arr=new int[str.length];
for(int x=0;x<str.length;x++)
{
arr[x]=Integer.parseInt(str[x]);
}
return arr;
}
//對數組進行冒泡排序
private static void bubbleSort(int[] arr)
{
for (int x=0;x<arr.length ;x++ )
{
for (int y=0;y<arr.length-x-1; y++)
{
if(arr[y]>arr[y+1])
Arrays.sort(arr);
}
}
}
//將整數類型數組存放到一個StringBuiler容器中
private static StringBuilder intToString(int[] arr)
{
StringBuilder sb=new StringBuilder();
for (int x=0;x<arr.length-1; x++)
{
sb.append(arr[x]+" ");
}
sb.append(arr[arr.length-1]+"");
return sb;
}
//打印字符串
private static void print(Object obj)
{
System.out.println(obj);
}
//遍歷數組
private static void print(int[] arr)
{
for (int x=0; x<arr.length;x++ )
{
System.out.print(arr[x]+"\t");
}
System.out.println();
}
}
程序運行結果: