枚举、包装类、Math类

枚举

枚举是指由一组固定的常量组成的类型

为什么用枚举

在编写程序的时候,我们要求从控制太输入一些特定值,如性别只能是男或女,但由于定义的String类型,无法控制用户输入,就如下图所示,对于程序运行完全没有错,但是逻辑上是不对的:

public class Student{
   public  String  sex;
}
// 测试类
//其他代码略
Student stu=new Student();
stu.sex="你好";

对于上述问题解决办法一般有两种:
①用if条件判断
②使用枚举
对于if条件大家都很熟悉了,下面就介绍使用枚举方法来解决此问题

// 枚举的关键字是enum,它的定义与类的定义相似,可以认为是类的变种
// 定义性别枚举,定义方式如下:
 public enum Genders{
 // 此处的男,女可认为是公共静态常量,可以用类型.值的方式调用
    男,女
    // 属性
    String sex;
    // 方法
    public void setSex(String sex){
        this.sex = sex;
    }
    public String getSex(){
        return this.sex;
    }
}
// 学生类
public class Student{
	// 枚举类型变量sex
   public  Genders  sex;
}
// 测试类,其他代码略
Student stu=new Student();
// 类型.值的方式调用
stu.sex=Genders.;// 正常运行
// stu.sex="你好"; 此处会编译报错
if(stu.sex.equals(Genders.valueOf("男"))){
	System.out.println("性别为男");
}

从上述例子可以看出,枚举类型可以和普通类一样定义属性和方法,且valueOf方法常用来将该类的枚举与字符串类型进行比较。
例题:
为大数据岗位课程三个学习阶段定义枚举:L1、L2、L3,分别表示第一、二、三阶段,编程输出每个单元的学习目标:
L1:大数据开发工程师
L2:大数据挖掘工程师
L3:大数据架构师
分析:题目要求定义枚举,从输出可以看出每个枚举类型与固定职位挂钩,此时我们可以用刚刚学过的map来存储并输出。

// 枚举类型
public enum Level {
    L1,L2,L3
}
// 测试类
public class Test {
    public static void main(String[] args) {
        Map<Level,String> map = new HashMap<>();
        map.put(Level.L1,"大数据开发工程师");
        map.put(Level.L2,"大数据挖掘工程师");
        map.put(Level.L3,"大数据架构师");
        Iterator iter = map.keySet().iterator();
        while(iter.hasNext()){
            Object obj = iter.next();
            System.out.println(obj+":"+map.get(obj));
        }
    }
}

包装类

java给8中基本数据类型都提供了包装类,通过包装类可以将基本类型转换成对象。

基本数据类型包装类
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharacter
booleanBoolean

在这里插入图片描述

包装类的作用

①将基本数据类型转换成对象
②提供一系列使用的方法
③集合不允许存放基本数据类型数据,存放数据是=时,可以用包装类型

示例:

// 以Integer为例
// 定义
Integer num = new Integer(123);
// 用String做参数的构造方法时,参数要能够转成相应类型,否则运行会异常
Integer num = new Integer("123");
Integer a =1;// 自动装箱
int b = new Integer("123");// 自动拆箱
Integer e =Integer.valueOf(21);// 此方法可将基本类型转为对应包装类
int f = Integer.parseInt("12");// parseXX()方法可将字符串转为对应基本数据类型,前提字符串可以转,否则运行会报错
// 特殊的
// Boolean的参数只有为true或者字符串true(不区分大小写)时为true,其他都为false
Boolean boo = new Boolean(true);// boo为true
Boolean boo1 = new Boolean("a");// boo1为false
Character chars= new Character('a');// 没有String类型的构造方法

Math类

java.lang.Math类提供了常用的数学运算方法和两个静态常量E(自然对数的底数) 和PI(圆周率)

// 绝对值
Math.abs(-3.5); //返回3.5  
// 比较得出两个数中较大的
Math.max(2.5, 90.5);//返回90.5
// 产生随机数
int random = (int) (Math.random() * 10); //生成一个0-9之间的随机数
// 向上取整
Math.ceil(1.1)//返回2.0
// 取整(四舍五入)
Math.round(1.49)//返回1

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值