一、枚舉
1.枚舉的含義
枚舉是由一組固定的常量組成的類型,枚舉的類型關鍵字是enum
2.枚舉的使用
定義枚舉類
package enumtdome; //用enum關鍵字創建 public enum Gender {
//枚舉類中直接放值 不需要數據類型 one,two,three,four,five,six,seven }
枚舉的運用
package enumtdome; import java.util.Scanner; public class test {
//實例化枚舉類 Gender ger; public static void main(String[] args) { test test=new test();
//將枚舉類型填進去 test.name(Gender.one); } public void name(Gender day) { switch (day) { case one: System.out.println(1); break; case two: System.out.println(2); break; case three: System.out.println(3); break; case four: System.out.println(4); break; case five: System.out.println(5); break; case six: System.out.println(6); break; case seven: System.out.println(7); break; } } }
二、實體類和API
1.API
常用API包有:ava.lang (Enum、包裝類、Math、String、StringBuffer、System)、java.util(工具類) java.io(輸入輸出流) java.sql(數據庫)
Api可以比喻成字典 根據類名 在文檔內查找
2.包裝類(實體類)
包裝類把基本類型數據轉換為對象:每個基本類型在Java.lang包里都有一個相應的包裝類
包裝類的作用:提供了一系列實用的方法 集合不允許存放基本數據類型數據,存放數字時,要用包裝類型
2.所有包裝類都可將與之對應的基本數據類型作為參數,來構造它們的實例 public Type(type value) 如: 除Character類外,其他包裝類可將一個字符串作為參數構造它們的實例 public Type(String value) 如:
3.注意事項
Boolean類構造方法參數為String類型時,若該字符串內容為true(不考慮大小寫),則該Boolean對象表示true,否則表示false 當Number包裝類構造方法參數為String 類型時,字符串不能為null,且該字符串必須可解析為相應的基本數據類型的數據,否則編譯不通過,運行時會拋出NumberFormatException異常
4.包裝類的常用方法
(1) XXXValue():包裝類轉換成基本類型 byteValue()、intValue() longValue()、shortValue() doubleValue()、floatValue() charValue()、booleanValue()
(2) toString():以字符串形式返回包裝對象表示的基本類型數據(基本類型->字符串)或 parseXXX():把字符串轉換為相應的基本數據類型數據(Character除外)(字符串->基本類型)
(3) XXX.valueof:將基本數據類型 和字符串轉換成包裝類
代碼實現如下:
package shitilei; import java.util.ArrayList; import java.util.List; import com.sun.xml.internal.ws.api.streaming.XMLStreamReaderFactory.Zephyr; public class Test { public static void main(String[] args) { //基本數據類型是"."不出內容的 可以將基本數據類型轉換為對象 //方法一 int i=9; List list=new ArrayList(); list.add(i);//本身集合中不能存放基本數據類型 但是在添加的時候有了jdk自動裝箱的操作 //所有的包裝類都有的構造方法 對應的數據類型做參數 int j=9; Integer j1=new Integer(j); Double double1=new Double(9.8); //方法二 //除Character之外的都有的構造方法 將字符串做參數 Integer j3=new Integer("9"); //字符串必須符合定義的數據的格式否則會報錯 Double double2=new Double("9.8"); //Character caCharacter=new Character("a");//編譯報錯 //方法三 //valueof() //(1)基本數據類型轉包裝類 Integer iiiInteger=Integer.valueOf(99); //(2)如何把字符串轉成包裝類 Integer iinInteger=Integer.valueOf("99"); //*************************************************************************** //包裝類轉換基本類型 Integer aaInteger=new Integer(99); System.out.println(aaInteger.intValue()); //基本類型轉字符串 int num=9; String ing=Integer.toString(9);//其他的類似 //字符串轉基本數據類型 int num1=Integer.parseInt("99"); } }
5.拆箱和裝箱
概念:在jdk1.5版本后 基本數據類型和包裝類自動轉換換 裝箱:基本類型轉換為包裝類的對象 拆箱:包裝類對象轉換為基本類型的值
特點:JDK1.5后,允許基本數據類型和包裝類型進行混合數學運算 包裝類並不是用來取代基本數據類型的 在基本數據類型需要用對象表示時使用
6.math類
java.lang.Math類提供了常用的數學運算方法和兩個靜態常量E(自然對數的底數) 和PI(圓周率)
常用的方法:
package shitilei; public class Mathtest { public static void main(String[] args) { //隨機生成0-10的浮點數 System.out.println(Math.random()*10); //生成隨機的整數 強制轉換成int System.out.println((int)Math.random()*10); //絕對值 System.out.println(Math.abs(-33)); //最大值 System.out.println(Math.max(22, 5)); } }
7.Random類
Random rand = new Random(); // 創建一個Random對象 for (int i = 0; i < 20; i++) {// 隨機生成20個隨機整數,並顯示 int num = rand.nextInt(10);// 返回下一個偽隨機數,整型的 System.out.println("第"+(i+1)+"個隨機數是:"+num); }
package shitilei; import java.util.Random; public class Rodemtest { public static void main(String[] args) { //不同的種子構造對象生成的隨機數是不一樣的 Random rand = new Random(56); // 創建一個Random對象 Random rand2=new Random(56); System.out.println(( rand.nextInt(10))); System.out.println( rand2.nextInt(10)); } }
由此可見用同一個種子值來初始化兩個Random 對象,然后用每個對象調用相同的方法,得到的隨機數也是相同的
8.String類
String類位於java.lang包中,具有豐富的方法 計算字符串的長度、比較字符串、
package shitilei; import java.util.Scanner; public class StringTest { public static void main(String[] args) { String a=" admin "; String p="123456"; Scanner input=new Scanner(System.in); System.out.println("請輸入用戶名"); String username=input.next(); System.out.println("請輸入密碼"); String pwd=input.next(); //trim()去掉字符串兩端的空格 a.trim(); //lenght()判斷字符串長度 //String 從寫了equels方法變成了比較兩個字符串是否為同一對象 if (pwd.length()<6&&username.equals(a)) { //比較條件可以寫成pwd.length()<6&&username==a ==是比較的地址 System.out.println("登錄成功"); }else { System.out.println("登錄長度不足六位或用戶名錯誤"); } //************************************************************* String str1="BDQN"; String str2="bdqn"; //區分大小寫 System.out.println(str1.equals(str2)); //不區分大小寫 System.out.println(str1.equalsIgnoreCase(str2)); //轉換小寫比較 System.out.println(str1.toLowerCase().equals(str2.toLowerCase())); //轉換大寫比較 System.out.println(str1.toUpperCase().equals(str2.toUpperCase())); } }
提取字符串
package shitilei; import java.util.Scanner; import sun.net.www.content.audio.wav; public class Stringjiequ { public static void main(String[] args) { String shou="hello my name is wuxuewei"; //查找某個字符出現的位置 System.out.println(shou.indexOf("w")); //查找最后一個w出現的位置 System.out.println(shou.lastIndexOf("w")); //截取字符串 System.out.println(shou.substring(4));//從第四截取到最后 //起始位置 結束位置 System.out.println(shou.substring(0, 5)); System.out.println("*******************************************"); //字符截取的練習 Scanner input=new Scanner(System.in); System.out.println("=====歡迎提交作業====="); System.out.println("請輸入文件名"); String name=input.next(); System.out.println("請輸入郵箱"); String yx=input.next(); //檢查文件名 boolean nameflag = false; int i=name.indexOf("."); if (i!=-1&&i!=0&&name.substring(i).equals(".java")) { nameflag=true; }else { System.out.println("文件名無效"); } //檢查郵箱名 boolean yxflag = false; int aite=yx.indexOf("@"); int dian=yx.indexOf("."); if (aite!=-1&&dian!=-1&&dian>aite) { yxflag=true; }else { System.out.println("郵箱無效"); } if (yxflag && nameflag) { System.out.println("提交成功"); }else { System.out.println("提交失敗"); } } }
System.out.println("***************字符串拆分****************"); // 字符串拆分方法 split(); String shici = "長亭外 古道邊 晚風拂柳醉斜陽"; String[] chafen = new String[100]; System.out.println("拆分前" + shici); System.out.println("拆分后"); chafen = shici.split(" "); for (String string : chafen) { System.out.println(string); } System.out.println("*********查詢字符出現的次數********"); System.out.println("請輸入一字符串"); String chaifen2=input.next(); System.out.println("請輸入你要查詢的字符"); String chazi=input.next(); String chaifen2s[]=chaifen2.split("*"); int count=0; for (int j = 0; j < chaifen2s.length; j++) { if (chaifen2s[j].equals(chazi)) { count++; } } System.out.println("查詢的字符出現了"+count);
9.StringBuffyer類
StringBuffer:對字符串頻繁修改時,使用它來大大提高程序執行效率
StringBuffer的使用:
package shitilei; public class StringBufferDome { public static void main(String[] args) { //String →StringBuffer StringBuffer str=new StringBuffer("hello"); //StringBuffer→String String s=str.toString(); //StringBuffer添加內容 str.append("word"); System.out.println(str); //insert 插入內容 str.insert(5, ","); System.out.println(str); } }
10.獲取當前時間
package shitilei; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class DateDome { public static void main(String[] args) { //當前時間 Date date=new Date(); System.out.println(date); System.out.println("******************************************"); //設置時間格式 SimpleDateFormat fomator=new SimpleDateFormat("yyyy-MM-dd-mm:ss"); String string=fomator.format(date); System.out.println(string); System.out.println("*********************************************"); //通過calendar類 Calendar s=Calendar.getInstance(); System.out.println(s.get(Calendar.YEAR)+"年"+(s.get(Calendar.MONTH)+1)+"月"+s.get(Calendar.DAY_OF_MONTH)); System.out.println("今天是星期"+s.get(Calendar.DAY_OF_WEEK)); } }