一、枚举
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)); } }