什么是枚举
枚举指由一组固定的常量组成的类型
public enum CourseEnmu {//定义三个枚举常量 L1,L2,L3 }
public class Test { private CourseEnmu en; public void course(CourseEnmu en) { switch (en) { case L1: System.out.println("大数据开发工程师"); break; case L2: System.out.println("大数据挖掘工程师"); break; case L3: System.out.println("大数据构架师"); break; default: break; } } public static void main(String[] args) { Test t = new Test();//实例化方法 //调用枚举里面的常量 t.course(CourseEnmu.L1); t.course(CourseEnmu.L2); t.course(CourseEnmu.L3); } }
常用Java API
- java.lang
Enum、包装类、Math、String、StringBuffer、System… …
- java.util
- java.io
- java.sql
每个基本类型在java.lang包中都有一个相应的包装类
基本数据类型(值类型) | 包装类型(引用类型) |
int | Integer |
short | Short |
long | Long |
byte | Byte |
boolean | Boolean |
char | Character |
float | Float |
double | Double |
图结构
所有包装类都可将与之对应的基本数据类型作为参数,来构造它们的实例
Integer i=new Integer(1);
除Character类外,其他包装类可将一个字符串作为参数构造它们的实例
Integer i=new Integer("123");
注意事项
Boolean类构造方法参数为String类型时,若该字符串内容为true(不考虑大小写),则该Boolean对象表示true,否则表示false
当Number包装类构造方法参数为String 类型时,字符串不能为null,且该字符串必须可解析为相应的基本数据类型的数据,否则编译不通过,运行时会抛出NumberFormatException异常
包装类转换为基本数据类型
- 除了Character包装类之外,其他的包装类parseXXX的方法将String.变量转换为对应的基本类型 valueOf(String)
i.parseInt("1234");//转换为基本数据类型
Integer s=Integer.valueOf(66);//基本数据类型转换为包装类型
- 除了Character包装类之外,其他的包装类都提供了String类型的带参构造可自动将字符串转换为对应的包装类型
Integer i=new Integer("1234"); //自动转换
- 所有的包装类都可以将对应的基本类型作为参数传递,包装为包装类类型
- 将包装类转换为基本数据类型的操作: 包装类对象.XXXValue()
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 in=Integer.valueOf("99");//包装类转换基本类型 Integer inte=new Integer(99); System.out.println(aaInteger.intValue()); //基本类型转字符串 int num=9; String ing=Integer.toString(9);//其他的类似 //字符串转基本数据类型 int num1=Integer.parseInt("99"); } }
Math类
提供了常用的数学运算方法和两个静态常量E(自然对数的底数) 和PI(圆周率)
Math常用方法
- Math.random:生成0-1的随机数
System.out.println(Math.random());
- Math.abs():获取数字的绝对值
System.out.println(Math.abs(-1000));
- Math.max和Math.min
System.out.println(Math.max(1000, 2000));
System.out.println(Math.min(100, 1000));
- Math.ceil 向上取整
System.out.println(Math.ceil(8.1));
- Math.floor() 向下取整
System.out.println(Math.floor(8.1));
- Math.round() 四舍五入
System.out.println(Math.round(8.4));
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); }
String类
常用方法
s.equals(a);//字符串精确比较 s.equalsIgnoreCase(a);//字符串忽略大小写比较 s.toLowerCase();//全部转换为小写 s.toUpperCase();//全部转换为大写
s.indexOf("b");//搜索第一次出现的字符位置
s.lastIndexOf("c");//最后一次出现的位置
s.substring(1);//在第几个位置截取字符
s.substring(0, 2);//指定在第几个到第几个之间截取 前面包含当前位置的字符,后面不包含当前位置的字符
s.trim();//去掉左右两端空格
String s = word.concat("小鱼儿!");//连接字符 等同于+
String word = "哈哈 嘿嘿 呵呵 哒哒";
String[] a=word.split(" ");//拆分之后的元素放到数组里
for (String string : a) {//循环遍历输出
System.out.println(string);
}
StringBuffer类
StringBuffer str=new StringBuffer("哈哈哈哈");//可以直接给值 直接可以修改字符串本身(用于频繁修改字符串使用) str.append("嘿嘿");//添加字符串 str.insert(2, ",");//在某一个位置添加 //String转StringBuffer需要调用toString() String s1=str.toString();
StringBuffer等同于StringBuilder
Date跟Calendar使用
//第一种获得日期办法
Date date=new Date(); SimpleDateFormat formater=new SimpleDateFormat("yyyy年-MM月-dd日 HH时:mm分:ss秒");//修改成我们自己想要的格式 (M大小写表示的是不同的) String d=formater.format(date);//调用format方法改变格式 System.out.println(date); //另一种获得日期跟时间的办法 Calendar ca=Calendar.getInstance();//抽象类不能new,只能调用getInstance()静态方法 ca.get(Calendar.YEAR);//获得当前年 //ca.get(Calendar.MONTH)+1;//获得当前月 +1因为他默认从0月开始 ca.get(Calendar.DAY_OF_MONTH);//获得当前日 ca.get(Calendar.DAY_OF_WEEK)-1;//获得当前是一周里的星期几 -1是因为西方周日为星期一
小练习
1.实现会员注册,要求用户名长度不小于3,密码长度不小于6,注册时两次输入密码必须相同
public class Login { private String user;//用户名 private String pass;//密码 private String passw;//确认密码 public String getUser() { return user; } public void setUser(String user) { this.user = user; } public String getPass() { return pass; } public void setPass(String pass) { this.pass = pass; } public String getPassw() { return passw; } public void setPassw(String passw) { this.passw = passw; } public void login(){ System.out.println("======欢迎进入注册系统======"+"\n"); Scanner input=new Scanner(System.in); boolean flag=true; while (flag) { System.out.println("请输入用户名"); String user=input.next(); System.out.println("请输入密码"); String pass=input.next(); System.out.println("请再次输入密码"); String passw=input.next(); if(user.length()>3 && (pass.length()>6 && pass.length()<16)){//字符串长度判断 if(pass.equals(passw)){ System.out.println("注册成功,请牢记用户名密码"); flag=false; }else { System.out.println("两次输入的密码不相同"); System.out.println("请重新输入:"); flag=true; } }else { System.out.println("用户名长度不能小于3,密码长度不能小于6"); System.out.println("请重新输入:"); flag=true; } } } }
public class Text { public static void main(String[] args) { Login l=new Login(); l.login(); } }
2.实现提交作业功能,判断作业后缀名为.java,并判断邮箱名是否准确(邮箱名里有@和.并且@在.前面)
public class Zytj { public static void main(String[] args) { Scanner input=new Scanner(System.in); System.out.print("请输入您的文件名"); String zy=input.next(); System.out.print("请输入您的邮箱"); String yx=input.next(); int index=zy.indexOf(".");//检查是否有.元素 boolean flag=false; if(index!=-1 && index!=0 && zy.substring(index).equals(".java")){//判断拥有.元素并且.不再第一个位置 然后截取.之后的元素跟要求格式比较 flag=true; }else { System.out.println("作业格式不对"); } int index1=yx.indexOf("@");//查找是否有@ int index2=yx.indexOf(".");//查找是否有. boolean flag1=false; if(index1!=-1 && index2!=-1 && index1<index2){ flag1=true; }else { System.out.println("邮箱格式不正确"); } if (flag && flag1) { System.out.println("提交成功"); }else { System.out.println("提交失败"); } } }