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

news2025/7/22 10:20:27

目录

课前先导:

一、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);
	}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/17040.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java并发编程之可见性分析 volatile

可见性 对于什么是可见性,比较官方的解释就是:一个线程对共享变量的修改,另一个线程能够立刻看到。 说的直白些,就是两个线程共享一个变量,无论哪一个线程修改了这个变量,则另外的一个线程都能够看到上一…

电脑可以通过蓝牙发送文件吗?电脑蓝牙怎么发送文件

蓝牙(bluetooth)是一种支持设备短距离通信的无线电技术。能在包括移动电话、PDA、无线耳机、笔记本电脑、相关外设等众多设备之间进行无线信息交换。蓝牙技术让数据传输变得更加迅速高效,为无线通信拓宽道路。随着蓝牙技术的发展,…

甘露糖-聚乙二醇-羧酸|mannose-PEG-COOH|羧酸-PEG-甘露糖

甘露糖-聚乙二醇-羧酸|mannose-PEG-COOH|羧酸-PEG-甘露糖 首先合成了二,三分支的甘露糖簇分子.甘露糖经烯丙 苷化,乙酰基保护后,将其烯丙基的双键氧化得到带有羧基连接臂的甘露糖衍生物,然后再分别与1,6-己二胺和三(2-氨乙基)胺进行缩合反应,后脱掉保 护基,得到二分枝甘露糖簇…

Azide-PEG-Thiol,N3-PEG-SH,叠氮-聚乙二醇-巯基可用来制备金纳米颗粒

1、名称 英文:Azide-PEG-Thiol,N3-PEG-SH 中文:叠氮-聚乙二醇-巯基 2、CAS编号:N/A 3、所属分类:Azide PEG Thiol PEG 4、分子量:可定制,5k N3-PEG-SH、20k 叠氮-聚乙二醇-巯基、10k N3-PE…

嵌入式分享合集105

一、智能灯光控制系统(基于stm32) 带你走进物联网的世界说一个整天方案哦 这次是基于stm32的 当然你可以用esp “智能光照灯”使用STM32作为系统的MCU,由于单片机IO口驱动电流过小,搭配三极管放大电流,从而满足光照强…

全网监控 nginx 部署 zabbix6.0

Zabbix监控 文章目录Zabbix监控一、zabbix6.0部署1、部署zabbix 6.0版本(nginxphpzabbix)1、nginx配置2、php配置3、mariadb配置二、zabbix配置1、zabbix配置 (6.0)1、源码安装2、zabbix rpm2、zabbix(5.0安装) -- 补充3、故障汇总…

【Linux】翻山越岭——进程地址空间

文章目录一、是什么写时拷贝二、为什么三、怎么做区域划分和调整一、是什么 回顾我们学习C/C时的地址空间: 有了这个基本框架,我们对于语言的学习更加易于理解,但是地址空间究竟是什么❓我们对其并不了解,是不是内存呢&#xff1…

【创建微服务】创建微服务并使用人人开源代码生成器生成基本代码

创建项目微服务 —— 添加模块 添加依赖 使用 人人开源代码生成器 快速生成 crud 代码 —— https://gitee.com/renrenio 下载导入人人开源项目后,修改 application.yml 文件下的数据库连接配置: 2. 修改 generator.properties 配置文件下的 主路径、包…

CC1101RGPR射频收发器 Low-Power Sub-1GHz 射频收发器

CC1101RGPR射频收发器 Low-Power Sub-1GHz 射频收发器 CC1101RGPR是一种低成本的 sub-1 GHz 收发器专为超低功耗无线应用而设计。该电路主要用于ISM(工业、科学和医疗)和SRD(短程设备)频段315、433、868 和 915 MHz,但…

【891. 子序列宽度之和】

来源:力扣(LeetCode) 描述: 一个序列的 宽度 定义为该序列中最大元素和最小元素的差值。 给你一个整数数组 nums ,返回 nums 的所有非空 子序列 的 宽度之和 。由于答案可能非常大,请返回对 109 7 取余 …

UNIAPP实战项目笔记40 设置和地址的页面布局

UNIAPP实战项目笔记40 设置和地址的页面布局 my-config.vue 设置页面布局 具体图片自己替换哈&#xff0c;随便找了个图片的做示例 代码 my-config.vue 页面部分 <template><view class"my-config"><view class"config-item" tap"go…

精益项目管理的流程

我们生活在一个企业家的世界&#xff0c;您可能有许多自己的想法等待实现&#xff0c;但想法在现实中实现是昂贵的。问题是您如何才能获得最大的收益&#xff1f;CEO和管理者如何在追逐梦想和实现目标的同时节省资金&#xff1f;了解初创公司如何进行精益项目管理&#xff0c;它…

第一个汇编程序

第一个汇编程序 文章目录第一个汇编程序1.汇编模拟程序&#xff1a;DOSBox使用2.汇编程序从写出到执行的过程3.程序执行过程跟踪1.汇编模拟程序&#xff1a;DOSBox使用 BOSBox软件常用基本语法&#xff1a; mount c: d:\masn ;挂载磁盘,挂载后用c:切换为C盘才能用debug等工具…

【Java面试八股文宝典之基础篇】备战2023 查缺补漏 你越早准备 越早成功!!!——Day09

大家好&#xff0c;我是陶然同学&#xff0c;软件工程大三明年实习。认识我的朋友们知道&#xff0c;我是科班出身&#xff0c;学的还行&#xff0c;但是对面试掌握不够&#xff0c;所以我将用这100多天更新Java面试题&#x1f643;&#x1f643;。 不敢苟同&#xff0c;相信大…

uni-app入门:WXML列表渲染与条件渲染

1.列表渲染 1.1wx:for 1.2wx:key 2.条件渲染 2.1wx:if 2.2 hidden 正文 WXML全称&#xff1a;wexin markup language,微信标签语言&#xff0c;可以理解为web中的html&#xff0c;今天来讲一下列表渲染&#xff0c;通过几个小案例掌…

艾美捷高纯度 Cholesterol胆固醇相关介绍

胆固醇在体内有着广泛的生理作用&#xff0c;但当其过量时便会导致高胆固醇血症&#xff0c;对机体产生不利的影响。现代研究已发现&#xff0c;动脉粥样硬化、静脉血栓形成与胆石症与高胆固醇血症有密切的相关性。 如果是单纯的胆固醇高则饮食调节是最好的办法&#xff0c;如果…

机器人虚拟仿真工作站考试

总共三个步骤&#xff1a; 创建工作台、加工零件、机器人臂 &#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 一、加工零件的创建 1、先打开sw软件&#xff0c;然后点击零件、创建进入到该软件内&#xff1a; 2、点击前视基础面&#xff08;点击后按esc&#x…

RabbitMQ初步到精通-第四章-RabbitMQ工作模式-WORK

第四章-RabbitMQ工作模式-WORK 1.模式介绍 1.1 work模式 Work模式与前面的Simple模式一致&#xff0c;也是消息经由生产者发到Exchange再到queue再被消费者消费。不同点在于SIMPL模式是一个队列对应的一个消费者&#xff0c;此模式会由一个队列对应两个消费者或大于两个消费者。…

MyBatis的配置文件

日志怎么在mybatis中实现呢 1.添加pom.xml依赖 2.添加logback配置文件 mybatisconfig.xml 引入外部属性资源文件 注意:其中使用的较多的需要设置的为&#xff1a; 引入外部属性资源文件 将数据库的蛇形命名映射为驼峰命名 使用typeAliases标签设置里面的package标签,为…

智工教育:环评师考试重要知识点

环境影响评价师的知识点庞杂纷繁&#xff0c;想要顺利通过考试&#xff0c;就要经常复习看过的知识&#xff0c;达到加强记忆的效果。下面是小编整理的环评师考试重要知识点&#xff0c;一起来复习吧! 考试目的及大纲主要内容 通过本科目考试&#xff0c;检验具有一定实践经验…