目录
课前先导:
今天带大家了解一下Java API;我们之前的学习中有好多关于Java类的描述图片,我就是从API文档里截图的。刚开始的时候我都是自己敲得或者复制的,因为怕出现版权问题嘛。但版权这东西,好像只有以后出名了别人才会找你维护版权。我估算了一下,我想要成名的话,一辈子的时间好像不咋够用,,,,,。
枚举类型其实就是规定一些变量的值,我们的变量就只能是这些值,他就像是一个数据规定,我们需要的数据从里面取,不能想赋什么值就赋什么值。
一、Java API
1、API
API(Application Programming Interface):应用程序编程接口
2、Java API
Java API:指的就是JDK中提供的各种功能的Java类。这些类将底层的实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可,我们可以通过帮助文档来学习这些API如何使用。
3、Java API常用包
(1)java.lang:编写Java程序是最广泛使用的包,自动导入到所有的程序中,包含了Java程序的基础类和接口。包装类、Math类、String类等常用的类都包含在此包中,java.lang包还提供了用于管理类的动态加载、外部进程创建、主机环境查询和安全策略实施等“系统操作”的类;
(2)java.util:包含了系统辅助类,特别是Collection、List和Map等集合类;
(3)java.io:包含了与输入/输出有关的类,如文件操作等类;
(4)java.net:包含了与网络有关的类,如Socket、ServerSocket等类;
(5)java.sql:包含了与数据库相关的类,如Connection、Statement等类。
二、枚举类型
在之前面向对象的学习中,封装类可以通过get/set方法来获取和改变值,可以通过set方法添加赋值的条件,今天我们来学习另一种方法,枚举。
1、枚举
(1)从Java SE 5.0开始,Java程序设计语言引入了一种新的类型——枚举(Enum);
(2)在Java中,通常使用枚举表示一组个数有限的值,用于实现对输入的值进行约束检查
(3)枚举是指由一组固定的常量组成的类型。使用关键字enum定义。
(4)枚举的优点:
--->枚举可以使代码更易于维护,有助于确保为变量指定合法的、期望的值
--->枚举更易于编程时输入,使用枚举赋值,只需要输入枚举名,然后输入一个点(.),就能将所有的值显示出来
--->枚举使代码更清晰,允许使用描述性的名称表示数据,使用时直观方便
2、枚举类
是java.lang.Enum类的子类,继承了Enum类的许多有用的方法。
语法格式:
权限修饰符 enum 类名{
enumContantName1 [,enumConstantName2...[;]]
//[field,method]
}
--->enum是关键字
--->enumContantName[,enumContantName2...[;]]表示枚举常量列表,枚举常量之间以逗号隔开
--->//[field,method]表示其他的成员,包括构造方法,置于枚举常量的后面
--->在枚举中,若除了定义枚举常量,还定义了其他成员,则枚举常量列表必须以分号(;)结尾
3、代码演示
3.1 创建枚举类
public enum Gender {
男,女
}
3.2 创建测试类
public class Student {
String name;
Gender sex;
public static void main(String[] args) {
Student student = new Student();
student.name = "张三";
student.sex = Gender.女;
System.out.println(student.name+"的性别是:"+student.sex);
}
}
4、MyEclipse创建枚举类的快捷方式
三、包装类
包装类不是一个类,是八大基本数据类型类的总称。我们前面讲过我们的八大基本数据类型为什么能拿来直接用,因为他们每个都是在java.lang包中包装好的类。
1、八大基本数据类型包装类
Java语言是面向对象的,但是Java中的基本数据类型却不是面向对象的,这在实际开发中存在很多的不便。为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类,称为包装类。
每个基本类型在java.lang包中都有对应的包装类,包装类就是把八大基本数据类型转化为对象
包装类的用途:
(1)包装类作为和基本数据类型对应的类存在,方便对象的操作
(2)包装类包含每种基本数据类型的相关属性,如最大值、最小值等,以及相关的操作方法
(3)集合不允许存放基本数据类型数据,存放数字时,要用包装类型
public static void main(String[] args) {
//输出byte类型的最大值和最小值(范围)
System.out.println("byte类型的最大值为:"+Byte.MAX_VALUE);
System.out.println("byte类型的最小值为:"+Byte.MIN_VALUE);
//输出short类型的最大值和最小值(范围)
System.out.println("short类型的最大值为:"+Short.MAX_VALUE);
System.out.println("short类型的最小值为:"+Short.MIN_VALUE);
//输出int类型的最大值和最小值(范围)
System.out.println("int类型的最大值为:"+Integer.MAX_VALUE);
System.out.println("int类型的最小值为:"+Integer.MIN_VALUE);
//输出long类型的最大值和最小值(范围)
System.out.println("long类型的最大值:"+Long.MAX_VALUE);
System.out.println("long类型的最小值:"+Long.MIN_VALUE);
// 类的成员一般是通过对象来调用,而我们数据类型类的成员需要通过类名来调用,不满足面向对象的需要
}
在Java语言中,类的成员都是通过对象调用的,而基本类型的类不太满足这一要求,要通过包装类转化基本数据类型。
2、包装类中的构造方法
通过包装类的构造方法创建包装类对象 ,所有包装类都可以将与之对应的基本数据类型作为参数,来构造它们的实例
public Type(type value){
}
--->Type是包装类(基本数据类型)
--->type value:包装类构造方法的参数为基本数据类型的值
除了Character以外,其他的包装类还可以将一个字符串作为参数:
publi Type(String value){
}
如:Integer i = new Integer("123");
我们就按Byte、Short、Integer、Long、Float、Double、Character、Boolean的顺序来看一下包装类的构造方法
3、包装类对象与基本数据类型的转换
public static void main(String[] args) {
//创建Byte包装类对象
byte byteNum = 10;
Byte by = new Byte(byteNum);
System.out.println("Byte类对象:"+by);
//创建short包装类对象
Short shortNum = 11;
Short sh = new Short(shortNum);
System.out.println("Short类对象:"+sh);
//创建Integer包装类对象
int intNum = 12;
Integer in = new Integer(intNum);
System.out.println("Integer类对象:"+in);
//创建Long包装类对象
long longNum = 13;
Long lo = new Long(longNum);
System.out.println("Long类对象:"+lo);
//创建Float包装类对象
float floatNum = 14.4f;
Float flo = new Float(floatNum);
System.out.println("Float类对象:"+flo);
//创建Double包装类的对象
double doubleNum = 15.55;
Double dou = new Double(doubleNum);
System.out.println("Double类对象:"+dou);
//创建Character包装类对象
char charClass = 'A';
Character ch = new Character(charClass);
System.out.println("Character类对象:"+ch);
//创建Boolean包装类对象
boolean result = (3>4);
Boolean boo = new Boolean(result);
System.out.println("Boolean类对象:"+boo);
System.out.println("*******************************************************");
//除了Character以外,其他的包装类还可以将一个字符串作为参数
System.out.println("除了Character以外,其他的包装类还可以将一个字符串作为参数:");
//将字符串作为参数创建Byte包装类对象
Byte strByte = new Byte("111");
System.out.println("将字符串作为参数创建Byte类对象:"+strByte);
//将字符串作为参数创建Short包装类对象
Short strShort = new Short("123");
System.out.println("将字符串作为参数创建Short类对象:"+strShort);
//将字符串作为参数创建Integer包装类对象
Integer strInt = new Integer("123456");
System.out.println("将字符串作为参数创建Integer类对象:"+strInt);
//将字符串作为参数创建Long包装类对象
Long strLong = new Long("123456789");
System.out.println("将字符串作为参数创建Long类对象:"+strLong);
//将字符串作为参数创建Float包装类对象
Float strFloat = new Float("8.8");
System.out.println("将字符串作为参数创建Float类对象:"+strFloat);
//将字符串作为参数创建Double包装类对象
Double strDouble = new Double("66.66");
System.out.println("将字符串作为参数创建Double类对象:"+strDouble);
//将字符串作为参数创建Boolean包装类对象
Boolean tStrBoolean = new Boolean("TrUe");
System.out.println("将字符串作为参数创建Boolean类对象:"+tStrBoolean);
Boolean fStrBoolean = new Boolean("flASE");
System.out.println("将字符串作为参数创建Boolean类对象:"+fStrBoolean);
}
在使用字符串来创建Number包装类Byte、Short、Integer、Long、Float、Double对象时,字符串不能为null,也不能为字符串,只能为数字且不能超出数据类型的范围,否则编译时不会报错,运行时会抛出异常: NumberFormatException
在使用字符串来创建Boolean包装类的对象时,字符串不考虑大小写,若该字符串内容为true,则该Boolean对象表示true,否则表示false
4、包装类常见方法
4.1 xxxValue()方法
将包装类转换为基本类型
public static void main(String[] args) {
Integer intNum = new Integer(100);
int num1 = intNum.intValue();
System.out.println(num1);
Double doubleNum = new Double(88.88);
double num2 = doubleNum.doubleValue();
System.out.println(num2);
}
4.2 toString()方法
以字符串形式返回包装对象表示的基本类型数据(基本类型—>字符串)
静态方法,可通过类名直接调用
public static void main(String[] args) {
Integer intNum = new Integer(100);
String str1 = intNum.toString();
System.out.println(str1);
String str2 = Boolean.toString(true);
System.out.println(str2);
}
4.3 parseXXX()方法
parseXXX():把字符串转换为相应的基本数据类型数据(Character除外)字符串->基本类型
静态方法,可通过类名直接调用
public static void main(String[] args) {
int num1 = Integer.parseInt("145");
System.out.println(num1);
boolean result = Boolean.parseBoolean("true");
System.out.println(result);
}
4.4 valueOf()方法
所有包装类都有如下方法(基本类型->包装类)
public static Type valueOf(type value)
public static void main(String[] args) {
Integer num = Integer.valueOf(20);
System.out.println(num);
Boolean result = Boolean.valueOf(true);
System.out.println(result);
}
除Character类外,其他包装类都有如下方法(字符串->包装类)
public static Type valueOf(String s)
public static void main(String[] args) {
Integer num = Integer.valueOf("123");
System.out.println(num);
Boolean result = Boolean.valueOf("true");
System.out.println(result);
}
四、装箱和拆箱
实现的是基本数据类型和包装类对象之间的自动转换
1、装箱
将基本数据类型直接赋值给包装类对象
public static void main(String[] args) {
//装箱
Integer integer1 = 100;
int num = 200;
Integer integer2 = num;
}
2、拆箱
将包装类对象直接赋值给基本数据类型变量
public static void main(String[] args) {
//拆箱
Character cha = new Character('f');
char ch = cha;
}
3、包装类的特点
(1)JDK1.5后,允许基本数据类型和包装类型进行混合数学运算
(2)包装类并不是用来取代基本数据类型的,在基本数据类型需要用对象表示时使用
public static void main(String[] args) {
Integer int1 = new Integer(100);
int num1 = 200;
Integer int2 = int1+num1;
int sum = int1+num1;
System.out.println(int2);
System.out.println(sum);
}