Day19:实用类介绍(一)

Java API介绍

Java 应用程序编程接口(Java Aplication Programming Interface,Java API)是运行库的集合,预先定义了一些接口和类,程序员可以直接使用这些已经被打包的接口和类库来开发具体的应用,节约了程序员大量的时间和精力。 API除了有“应用程序编程接口”的意思外,还特指API的说明文档,也称帮助文档。
当。

Java语言的强大之处在于它提供了多种多样的类库,从而大大提高程序员的编程效率和质量。

JavaAPI提供了如下常用的包。
➢javal.lang:编写Java程序时最广泛使用的包,自动导入到所有的程序中,包含了Java程序的基础类和接口。包装类、Math 类、String 类等常用的类都包含在此包中,java.lang 包还提供了用于管理类的动态加载、外部进程创建、主机环境查询和安全策略实施等“系统操作”的类。
➢java.util:包含了系统辅助类,特别是Collection、List 和Map等集合类。
➢java.io: 包含了与输入/输出有关的类,如文件操作等类。
➢java.net: 包含了与网络有关的类,如Socket、ServerSocket等类。
➢java.sqI: 包含了与数据库相关的类,如Connection. Statement等类。本章主要学习java.lang和java.util 两个包中的常用类。

认识枚举

1.枚举概述

从Java SE 5.0开始,Java 程序设计语言引入了一种新的类型——枚举(Enum)。
枚举是指由一组固定的常量组成的类型。使用关键字enum定义。
定义枚举语法格式如下。

[Modifier]enum enumName {
    enumContantName1[,enumConstantName2 ..[;]]
//[field, method]
}

➢Modifer是访问修饰符,如public等。
➢enum是关键字。
➢enumContsantNamel[, enumConstantName…[;]] 表示枚举常量列表,枚举常量之间以逗号隔开。
➢//feld, method]表示其他的成员,包括构造方法,置于枚举常量的后面。
➢在枚举中,如果除了定义枚举常量,还定义了其他成员,则枚举常量列表必须以分号结尾。

示例1
定义表示性别的枚举,两个枚举常量分别代表“男”和“女”。
关键代码:

public enum Genders {
Male,Female
}

枚举其实就是一种类型, 是java.lang.Enum类的子类,继承了Enum类的许多有用的方法。关于Enum类,此处不深入讲解,以后用到时请读者自行查看API即可。

2.使用枚举实现输出每周日程信息

在Java中,通常使用枚举表示一组个数有限的值,用于实现对输入的值进行约束检查。下面通过示例2,学习在程序中如何使用枚举。

示例2
定义一个枚举,其中包括7个枚举常量,代表一周中的 7天,编程实现查看一周中每天的日程安排。
实现步骤如下。
(1)定义枚举。
(2)定义枚举变量。
(3)查看一周中每天的日程安排。
关键代码:

扫描二维码关注公众号,回复: 11575362 查看本文章
//定义枚举

public enum Week {
    MON, TUE, WED, THU, FRI, SAT, SUN
}

    /**
     * 查看日程安排
     *
     * @param day星期几
     */
    public void doWhat(Week day) {
        switch (day) {
            case MON:
            case WED:
            case THU:
            case FRI:
                System.out.println(" 工作日,努力写代码!");
                break;
            case SAT:
                System.out.println("星期六,休息!看电影! ");
                break;
            case SUN:
                System.out.println("星期日,休息!打篮球");
                break;
            default:
                System.out.println(" 地球上一个星期就7天");
        }

    }


    public static void main(String[] args) {
        WeekDemo wd = new WeekDemo);
        wd.doWhat(Week.THU);
        Week sat = Week.SAT;
        wd.doWhat(sat);
    }

在示例2中,switch 结构传入的变量day是Week类型,即枝举类型case后面的类型要与之匹配,必须是Week中定义的枚举常量。
在程序中使用枚举的好处总结如下。
➢枚举可以使代码更易于维护,有助于确保为变量指定合法的、期望的值。
➢枚举更易于编程时输入, 使用枚举赋值,只需要输入枚举名, 然后输入一个点(.), 就能将所有 的值显示出来。
➢枚举使代码更清晰,允许用描述性的名称表示数据,使用时直观方便。

包装类

1.包装类概述

Java语言是面向对象的,但是Java中的基本数据类型却不是面向对象的,这在实际开发中存在很多的不便。为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类, 称为包装类。
包装类均位于java.lang 包中,包装类和基本数据类型的对应关系如表2-1所示。
表2-1包装类和基本数据类型的对应表

基本数据类型 包装类
byte Byte
boolean Boolean
short Short
char Character
in Integer
long Long
float Float
double Double

包装类的用途主要有两个。
➢包装类作为和基本数据类型对应的类存在,方便对象的操作。
➢包装类包含每种基本数据类型的相关属性,如最大值、最小值等,以及相关的操作方法。

2.包装类和基本数据类型的转换

(1)基本数据类型转换为包装类
在Java中,基于基本数据类型数据创建包装类对象通常可以采用如下两种方式。
1)使用包装类的构造方法
包装类的构造方法有两种形式。
➢public Type(type value)。
➢public Type(String value)。
其中,Type 表示包装类,参数type为基本数据类型。
针对每一个包装类,都可以使用关键字new将一个基本数据类型值包装为一个对象。
例如,要创建一个Integer 类型的包装类对象,

Integer intValue =new Integer(21);
//或
Integer intValue= new Integer("21");

的包装类对象。只能是
注意
不能使用第二种形式的构造方法创建Character
只能是Character charValue=new Character(x);这种形式。

2)使用包装类的valueOf()方法
包装类中一般包含静态的重载的valueOf()方法,它也可以接收基本数据类型数据和字符串作为参数并返回包装类的对象。以Integer包装类为例,valueOf()方法的定义
如表2-2所示。
例如,创建一个Integer类型的包装类对象,代码可以这样写:

Integer intValue=Integer.valueOf("21");

表2-2 Integer包装类 的valueOf()方法

方法 说明
Integer valueOf(int i) 返回一个表示指定的int值的Integer对象
Integer valueOf(String s) 返回保存指定的String值的Integer对象
Integer valueOf(String S, int radix) 返回一个Integer对象,该对象中保存了用第二个参数提供的基数(二进制、十进制等)进行解析时从指定的String中提取的值

注意
Chareter类的valueOf()方法只有一个版本的定义,即valueOf(char c),它返回一个表示指定char值的Character对象。

(2)包装类转换成基本数据类型
包装类转换成基本数据类型通常采用如下的方法:public type type Value();其中type指的是基本数据类型,如byteValue()、charValue()等,相对应的返回值为byte、char,具体用法如以下代码所示。

Integer integerld=new Integer(25);
int intld=integerld.intValue();
Boolean b=Boolean.valueOf(true);
boolean bool=bl.boolean Value();

(3)基本类型和包装类的自动转换
在JavaSE5.0版本之后程序员不需要编码实现基本数据类型和包装类之间的转换,编译器会自动完成。
例如:

Integer intObject=5;//基本数据类型转换成包装类
int int Value=intObject;//包装类转换成基本数据类型

注意
虽然Java平台提供了基本数据类型和包装类的自动转换功能,程序员在程序中也不能只使用对象,而抛弃了基本数据类型。
例如:

Double a,b,c;
a=3;
b=4;
c=Math.sqrt(a*a+b*b);

以上代码在语法上没有任何错误,使用Double对象计算直角三角形的斜边长,但它的性能存在问题,基本数据类型和包装类对象间的相互转换工作增加了系统的额外负担,如果使用基本数据类型则不会。
大家要记住包装类对象只有在基本数据类型需要用对象表示时才使用,包装类并不是用来取代基本数据类型的。

Math 类

java.lang.Math类提供了一些基本数学运算和几何运算的方法。此类中的所有方法都是静态的。这个类是final 类,因此没有子类,Math 类常见方法如下。
➢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。更多的方法请查看Java API。
下面通过示例3学习Math类的用法。

示例3
商场的抽奖规则如下:会员号的百位数字等于产生的随机数字即为幸运会员。编程实现以下功能。
(1)从键盘接收会员号。
(2)生成随机数。

分析:
产生随机数(0~ 9中任意整数)的方法。
int random=(int)(Math.random()*10);
关键代码:

public class GoodLuck {

    public static void main(String[] args) {
//产生随机数
        int random = (int) (Math.random() * 10);
//从控制台接收一个4位会员号
        System.out.print("我行我素购物管理系统>幸运抽奖\n");
        System.out.print("请输入4位会员号: ");
        Scanner input = new Scanner(System.in);
        int custNo = input.nextInt();
//分解获得百位
        int baiwei = custNo / 100 % 10;
//判断是否是幸运会员
        if (baiwei == random) {
            System.out.println(custNo + "是幸运客户,获精美MP3 一个。");
        } else {
            System.out.println((custNo + "谢谢您的支持! "));
        }
    }
}

猜你喜欢

转载自blog.csdn.net/sanjiang521/article/details/107673034