实用类介绍(一)

本课目标

  • 熟练定义并使用枚举类型
  • 熟练使用包装类
  • 会使用Math类进行数学运算
  • 会使用 Random 类

一、Java API

1.Java API (Java Application Programming Interface);即Java应用程序编程接口,是运行可的集合,预先定义了一些接口和类,程序员可以直接使用已经打包的接口和类做具体的应用

二、枚举

1.定义:指有一组固定的常量组成的类型
2.枚举案例:
定义一个枚举 Week ,其中包含 7 个枚举常量,代表一周中的 7 天。

           定义一个WeekDemo类,定义一个方法,方法签名为public void doWhat(Week day)。在方法体实现多重判断,如果是MONTUEWEDTHUFRI ,则输出“工作日,努力写代码”;如果是SAT,则输出“星期六,休息!看电影”;如果是SUN,则输出“星期日,休息!打篮球”;都不匹配,则输出“地球上一个星期就7天”。

定义一个 TestWeekDemo类,编程实现查看一周中每天的日常安排
创建枚举类
public enum WeekEnum {
    Mon,TUE,WED,THU,FRI,SAT,SUN;
}
public class WeekDemo {
    public void doWhat(WeekEnum weekEnum){
        if(weekEnum == null){
            System.out.println("星期不能为空!");
            return;
        }
        switch (weekEnum){
            case Mon:
            case TUE:
            case WED:
            case THU:
            case FRI:
                System.out.println("工作日,努力写代码");
                break;
            case SAT:
                System.out.println("星期六,休息,RAP");
                break;
            case SUN:
                System.out.println("星期日,休息,打篮球");
                break;
            default:
                System.out.println("地球上一周只有七天");
        }
    }
}
public class Test {
    public static void main(String[] args) {
        WeekDemo weekDemo = new WeekDemo();
        weekDemo.doWhat(WeekEnum.FRI);
    }
}
3.枚举的优势
  • 枚举可以是代码易于维护,保证类型安全
  • 枚举易于输入,使用枚举赋值,只要输入枚举名,然后输入点操作符就能将所有的值显示出来
  • 美剧是代码更清晰,允许使用描述性的名称表示数据,使用时直观方便
public enum WeekEnum {
    Mon("星期一","语文"),
    Tue("星期二","数学"),
    Wed("星期三","英语"),
    Thur("星期四","物理"),
    Fri("星期五","化学"),
    Sat("星期六","生物"),
    Sun("星期日","休息");
    private String name;
    private String subject;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSubject() {
        return subject;
    }

    public void setSubject(String subject) {
        this.subject = subject;
    }

    WeekEnum(String name, String subject) {
        this.name = name;
        this.subject = subject;
    }
}
public class WeekDemo {
    private String day;
    private String course;

    public WeekDemo(WeekEnum weekEnum) {
        this.day = weekEnum.getName();
        this.course = weekEnum.getSubject();
    }
    public void show(){
        System.out.println(day + "\t" + course);
    }
}
public class WeekTest {
    public static void main(String[] args) {
        WeekDemo weekDemo = new WeekDemo(WeekEnum.Thur);
        weekDemo.show();
    }
}

三、包装类

  • Java语言是面向对象的,但其基本数据类型却不是面向对象的,为了解决这个问题,在设计时为每个基本数据类型设计了一个对应的类,称为包装类
  • 每个基本数据类型在 java.lang 包中都有一个相对应的包装类
  • 包装类的作用:

                         提供了一系列使用的属性和方法,方便对象操作

                         集合不允许存放基本数据类型,存放数字时,要用包装类型

1.包装类和基本数据类型的对应关系

2.包装类的构造方法
  • 所有包装类都可将与之对应的基本数据类型作为参数,来构造它们的实例
  • Boolean 类构造方法参数为 String 类型时,若该字符串内容为 true (不考虑大小写),则该Boolean 对象表示为 true 否则表示为false
  • 当包装类构造方法参数为 String 类型时,字符串不能为 null ,且该字符串必须可解析为相应的基本数据类型,否则编译通过,运行时NumberFormatException异常
3.包装类的常用方法

四、装箱和拆箱

装箱:基本数据类型转换成包装类的对象

拆箱:包装类对象转换成基本类型

1.包装类的特点
  • 所有包装类都是 final 类型,不能创建它们的子类
  • Java 5.0版本以后,程序员不需要编码实现基本数据类型和包装类之间的转换,编译器会自动完成
  • JDK1.5后,允许基本数据类型和包装类型进行混合数学运算
  • 包装类并不是用来取代基本数据类型的;在基本数据类型需要用对象表示时使用

五、Math 类

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

方法名

备注

abs(int a)

返回 int 值的绝对值

ceil(double a)

返回最小的(最接近负无穷大)double 值,该值大于等于参数,并等于某个整数。

floor(double a)

返回最大的(最接近正无穷大)double 值,该值小于等于参数,并等于某个整数。

max(int a, int b)

返回两个 int 值中较大的一个。

min(int a, int b)

返回两个 int 值中较小的一个。

random()

返回带正号的 double 值,该值大于等于 0.0 且小于 1.0

round(double a)

返回最接近参数的 long

sqrt(double a)

返回正确舍入的 double 值的正平方根。

练习:幸运会员

public class LuckNum {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int luckNum = (int)(Math.random()*10);

        String num = null;
        String patten = "[0-9]+";
        do {
            System.out.print("请输入四位数字:");
            num = sc.next();
            if (!Pattern.matches(patten,num) || num.length() != 4) {
                System.out.println("输入不合法,请重新输入");
            }
        }while (!Pattern.matches(patten,num) || num.length() != 4);
        int num1 = Integer.parseInt(num);
        int bai = num1 / 100 % 10;
        System.out.println("是否是幸运客户:" + (bai == luckNum));
        System.out.println("幸运数字是:" + luckNum);
    }
}

六、Random 类

  • Random 类:用于生成伪随机数流

练习:随机生成1~365之间的数

public class RandomUtil {
    public static int getRandom(int start,int end){
        return new Random().nextInt(end + 1 - start) + start;
    }
    public static void main(String[] args) {
        System.out.println(RandomUtil.getRandom(1,365));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值