30、Java高级特性——Java API、枚举、包装类、装箱和拆箱

目录

课前先导:

一、Java API

1、API

2、Java API

3、Java API常用包 

二、枚举类型

1、枚举

2、枚举类

3、代码演示 

3.1  创建枚举类

3.2  创建测试类

4、MyEclipse创建枚举类的快捷方式

三、包装类

1、八大基本数据类型包装类

2、包装类中的构造方法

3、包装类对象与基本数据类型的转换

4、包装类常见方法 

4.1  xxxValue()方法

4.2  toString()方法 

4.3  parseXXX()方法

4.4   valueOf()方法

四、装箱和拆箱 

1、装箱

2、拆箱 

3、包装类的特点 


课前先导:

今天带大家了解一下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);
	}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值