枚举
枚举指由一组固定的常量组成的类型,可以认为是类的变种 使用enum关键字定义;Modifier是访问修饰符;枚举常量之间用逗号分隔;枚举常量列表以分号结尾。 里面的直接写的值都是该类的公共静态常量,可以用类型.值的方式调用,可以和普通类一样定义属性和方法。 valueOf方法常用来将该类的枚举类型与字符串类型比较 枚举的好处:类型安全、易于输入、代码清晰
枚举的使用
public enum Week{//定义枚举类的方法
//分别表示星期几
MON,TUE,WED,THU,FRI,SAT,SUN
}
public class WeekDo{
public void doWhat(Week day){
//对用户输入的星期几,做一个条件判断,防止不合理赋值
if(day>7||day<1){
System.out.println("参数错误,必须在1-7之间!")
return;
}
switch(day){
case MON:
case TUE:
case MED:
case THU:
case FRI:
System.out.println("工作日,好好工作!");
break;
case SAT:
case SUN:
System.out.println("休息日,好好休息");
break;
}
}
//测试类
public class void main(String[]args){
WeekDo week =new WeekDo();
week.doWhat(Week.THU);
}
}
运行结果:
工作日,好好工作!
包装类
包装类:对应每个基本数据类型,都有一个包装类与之对应 目的: 可以把基本数据类型转成对象 也可以把字符串转成相应的基本数据类型 泛型是不可以放基本数据类型,存放数字时,要用包装类型 包装类和基本数据类型的对应关系: bety:Bety short:Short int:Integer long:Long float:Float double:Double char:Character boolean:Boolean
包装类的两个作用:
使用和相应的方法;如集合无法存放基本数据类型,基本数据类型->包装类,放进去
所有的包装类都可以将与之对应的基本数据类型作为参数,来构造他们的实例
Integer i=new Integer(1);
除Character类外,其他包装类可将一个字符串作为参数构造它们的实例
Integer i=new Integer("123");
包装类及其构造方法:
public class Test2{
public class void main(String []args){
int iNum=9;
Integer i=new Integer(iNum);
double dNum=9.8;
Double d=new Double(DNum);
char cNum='c';
Character c=new Character(cNun);
float fNum=9.8f;
Float f=new Float(FNum);
boolean bNum=true;
Boolean b=new Boolean(bNum);
//(2)除Character以外,以字符串作为参数
integer i2=new Integer("123");
System.out.println(i2+1);//124,并非1231
}
}
以Integer为例:几种赋值方法
new Integer(整形)
new Integer(字符串)
Integer.valueOf(整形\字符串)
Integer.parseInt(字符串)包装类和基本数据类型的转换
(1)基本数据类型转换为包装类
基于基本数据类型数据创建包装类对象的两种方式:
1、使用包装类的构造方法
包装类的两种构造方法形式:
a)public Type(type value);
如:Integer i=new Integer(1);
b)public Type(String value);
如:Integer i=new Integer("123");
注:
1、Boolean类构造方法参数为String类型时,若该字符串内容为true(不考虑大小写),则该Boolean对象表示true,否则表示false
2、当Number包装类构造方法参数为String 类型时,字符串不能为null,且该字符串必须可解析为相应的基本数据类型的数据,否则编译不通过,运行时会抛出NumberFormatException异常
3、不能使用第二种形式的构造方法创建Character类型的包装类对象。只能是Character charValue=new Character('x');这种形式。 2、使用包装类的valueOf()方法
a)所有包装类都有如下方法(基本类型->包装类)
public static Type valueOf(type value)
如:Integer intValue = Integer.valueOf(21);
b)除Character类外,其他包装类都有如下方法(字符串->包装类) public static Type valueOf(String s)
如:Integer intValue = Integer.valueOf("21");注:Character类的valueOf()方法只有一个版本的定义,即valueOf(char c),它返回一个表示指定char值的Character对象。(2)包装类转换成基本数据类型
包装类转换成基本数据类型常用方法:
public type typeValue();其中type指的是基本数据类型
如:Integer integerId=new Integer(25);
int intId=integerId.intValue();
//Boolean类型的构造方法参数为字符串时,除了"true"(不区分大小写)之外的其他字符串,结果都为false;当Number类型的包装类构造方法参数是字符串的时候,字符串必须是能转换为Number的字符串,否则会NumberFormatException
//且字符串不能为null;
包装类的常用方法:
- xxxValue() 包装类转换成基本类型
Integer integerId=new Integer(25);
int intId =integerId.intVable();
- toString() 以字符串形式返回包装对象表示的基本类型数据(基本类型->字符串)
String sex=Character.toString('男');
String id=Integer.toString(25);
int num=100;
String sNum=Integer.toString(num);
//常用的方法
String sNum2=100+"";
- parseXXX() 把字符串转换为相应的基本数据类型数据(Character除外)(字符串->基本类型)
String age="18";
int ageNum=Integer.parseInt(age);
String score="98.5";
double score2=Double.parseDouble(score);
- vauleOf() (基本数据类型做参数: 基本类型->包装类 ),(字符串:字符串->包装类,除Character除外)
int j=90;
Integer j1=Integer.valueOf(j);
Char c ='男';
Character cSex=Character.valueOf(c);
String m="13";
Integer mi=Integer.valueOf(m);
装箱和拆箱
基本类型和包装类的自动转换
Integer intObject =5;//装箱
int intValue=intObject;//拆箱
Math
Math常见方法:
ceil();//向上取整
floor();//向下取整
round();//四舍五入 注:float类型返回int类型,double类型返回long类型
sqrt();//开根号
static double abs(double a)://返回double值的绝对值
Math.abs(-3.5); //返回3.5
static double max(double a,double b)//:返回两个double值中较大的一个
Math.max(2.5, 90.5);//返回90.5
static double random()//:返回一个随机的double值,该值大于等于0.0且小于1.0
static int random()//:返回一个随机的int值
int random = (int) (Math.random() * 10); //生成一个0-9之间的随机数