当前位置: 首页 > news >正文

Java 常用类(包装类)

目录

  • 八大Wrapper类
    • 包装类的分类
  • 装箱和拆箱
    • 包装类和基本数据类型之间的转换
    • 常见面试题
  • 包装类方法
    • 包装类型和String类型的相互转换
    • 包装类常用方法(以Integer类和Character类为例)
      • Integer类和Character类的常用方法
  • Integer创建机制(面试题)
    • 面试题1
    • 面试题2

八大Wrapper类

包装类的分类

1.针对8种基本数据类型相应的引用类型—包装类

2.有了类的特点,就可以调用类的方法。

3.如图:
相关类图如下:
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

示例代码:

package com.hspedu.wrapper;/*** @author 韩顺平* @version 1.0*/
public class WrapperType {public static void main(String[] args) {//boolean -> Boolean//char -> Character//byte -> Byte//int -> Integer//long -> long//float -> Float//double -> Double//short -> Short}
}

装箱和拆箱

包装类和基本数据类型之间的转换

1.jdk5 前需手动装箱和拆箱。装箱:基本类型 -> 包装类型;反之为拆箱
2.jdk5 以后(含jdk5)采用自动装箱和拆箱的方式【即jdk会在底层自动的帮我们调用相应方法进行转换】
3.自动装箱底层调用的是valueOf方法,如Integer.valueOf()

示例代码:

package com.hspedu.wrapper;/*** @author 韩顺平* @version 1.0*/
public class Integer01 {public static void main(String[] args) {//演示int <--> Integer 的装箱和拆箱//jdk5前是手动装箱和拆箱//手动装箱 int->Integerint n1 = 100;Integer integer = new Integer(n1);Integer integer1 = Integer.valueOf(n1);//手动拆箱//Integer -> intint i = integer.intValue();//jdk5后,就可以自动装箱和自动拆箱int n2 = 200;//自动装箱 int->IntegerInteger integer2 = n2; //底层使用的是 Integer.valueOf(n2)//自动拆箱 Integer->intint n3 = integer2; //底层仍然使用的是 intValue()方法}
}

其它包装类的用法类似

常见面试题

在这里插入图片描述
示例代码:

package com.hspedu.wrapper;/*** @author 韩顺平* @version 1.0*/
public class WrapperExercise01 {public static void main(String[] args) {Double d = 100d; //ok, 自动装箱 Double.valueOf(100d);Float f = 1.5f; //ok, 自动装箱 Float.valueOf(1.5f);Object obj1 = true? new Integer(1) : new Double(2.0);//三元运算符【是一个整体】 一真大师System.out.println(obj1);// 什么? 1.0Object obj2;if(true)obj2 = new Integer(1);elseobj2 = new Double(2.0);System.out.println(obj2);//1//输出什么 ? 1, 分别计算}
}

解析:
① 第一题中由于应该将三元运算符看做一个整体,故会以三元运算符中精度最高的那个类型作为基准来提升其他值的精度;
② 而第二题中的 if 和 else 是两条独立的语句,故精度不会互相影响

包装类方法

包装类型和String类型的相互转换

示例代码(代码中以Integer为例,其余包装类用法类似):

package com.hspedu.wrapper;/*** @author 韩顺平* @version 1.0*/
public class WrapperVSString {public static void main(String[] args) {//包装类(Integer)->StringInteger i = 100;//自动装箱//方式1String str1 = i + "";//方式2String str2 = i.toString();//方式3String str3 = String.valueOf(i);//String -> 包装类(Integer)String str4 = "12345";Integer i2 = Integer.parseInt(str4);//使用到自动装箱Integer i3 = new Integer(str4);//构造器System.out.println("ok~~");}
}

这里介绍的是包装类与String类之间的相互转换。实际我们可以将这里介绍的方法中的所有包装类的位置替换成基本数据类型,因为底层会自动进行拆装箱

包装类常用方法(以Integer类和Character类为例)

Integer类和Character类的常用方法

示例代码:

package com.hspedu.wrapper;/*** @author 韩顺平* @version 1.0*/
public class WrapperMethod {public static void main(String[] args) {System.out.println(Integer.MIN_VALUE); //返回最小值System.out.println(Integer.MAX_VALUE);//返回最大值System.out.println(Character.isDigit('a'));//判断是不是数字System.out.println(Character.isLetter('a'));//判断是不是字母System.out.println(Character.isUpperCase('a'));//判断是不是大写System.out.println(Character.isLowerCase('a'));//判断是不是小写System.out.println(Character.isWhitespace('a'));//判断是不是空格System.out.println(Character.toUpperCase('a'));//转成大写System.out.println(Character.toLowerCase('A'));//转成小写}
}

Integer创建机制(面试题)

面试题1

在这里插入图片描述
代码及解析:

package com.hspedu.wrapper;/*** @author 韩顺平* @version 1.0*/
public class WrapperExercise02 {public static void main(String[] args) {Integer i = new Integer(1);Integer j = new Integer(1);System.out.println(i == j);  //False//所以,这里主要是看范围 -128 ~ 127 就是直接返回/*老韩解读//1. 如果i 在 IntegerCache.low(-128)~IntegerCache.high(127),就直接从数组返回//2. 如果不在 -128~127,就直接 new Integer(i)源码如下:public static Integer valueOf(int i) {if (i >= IntegerCache.low && i <= IntegerCache.high)return IntegerCache.cache[i + (-IntegerCache.low)];return new Integer(i);}*/// 这里1是在-128~127之间。故是从缓存数组中返回,而缓存数组又已经在类加载时就创建好了,是不可变的,所以返回的是同一个对象Integer m = 1; //底层 Integer.valueOf(1); -> 阅读源码Integer n = 1;//底层 Integer.valueOf(1);System.out.println(m == n); //T//所以,这里主要是看范围 -128 ~ 127 就是直接返回//,否则,就new Integer(xx);Integer x = 128;//底层Integer.valueOf(1);Integer y = 128;//底层Integer.valueOf(1);System.out.println(x == y);//False}
}

Integer.valueOf()中IntegerCache为Integer类的静态内部类,而其中的Integer cache[]数组为static final静态常量,而缓存数组是在类加载时就已经事先创建好了

面试题2

在这里插入图片描述
代码及解析:

package com.hspedu.wrapper;/*** @author 韩顺平* @version 1.0*/
public class WrapperExercise03 {public static void main(String[] args) {//示例一Integer i1 = new Integer(127);Integer i2 = new Integer(127);System.out.println(i1 == i2);//F
//示例二Integer i3 = new Integer(128);Integer i4 = new Integer(128);System.out.println(i3 == i4);//F//示例三Integer i5 = 127;//底层Integer.valueOf(127)Integer i6 = 127;//-128~127System.out.println(i5 == i6); //T
//示例四Integer i7 = 128;Integer i8 = 128;System.out.println(i7 == i8);//F
//示例五Integer i9 = 127; //Integer.valueOf(127)Integer i10 = new Integer(127);System.out.println(i9 == i10);//F//示例六Integer i11=127;int i12=127;
//只有有基本数据类型,判断的是
//值是否相同System.out.println(i11==i12); //T
//示例七Integer i13=128;int i14=128;System.out.println(i13==i14);//T}
}

注意:当使用"=="运算符时,若存在基本数据类型,则判断的是值是否相同

相关文章:

Java 常用类(包装类)

目录 八大Wrapper类包装类的分类 装箱和拆箱包装类和基本数据类型之间的转换常见面试题 包装类方法包装类型和String类型的相互转换包装类常用方法&#xff08;以Integer类和Character类为例&#xff09;Integer类和Character类的常用方法 Integer创建机制&#xff08;面试题&a…...

ES|QL:Elasticsearch的 新一代查询语言

作者&#xff1a;李捷 “学会选择很难。学会正确选择更难。而在一个充满无限可能的世界里学会正确选择则更难&#xff0c;也许是太难了。” 巴里-施瓦茨&#xff08;Barry Schwartz&#xff09;在《选择的悖论--多就是少》&#xff08;The Paradox of Choice -More is Less&…...

C语言实现句子中的单词颠倒排序

一、运行结果 二、源代码 # define _CRT_SECURE_NO_WARNINGS # include <stdio.h> # include <assert.h>//实现逆转函数&#xff1b; void reverse(char* left, char* right) {//断言left和right都不能为空&#xff1b;assert(left);assert(right);//循环逆转字母…...

MySQL学习(八)——锁

文章目录 1. 锁概述2. 全局锁2.1 全局锁的必要性2.2 语法2.3 全局锁的特点 3. 表级锁3.1 表锁3.2 元数据锁3.3 意向锁3.4 自增锁 4. 行级锁4.1 介绍4.2 记录锁4.3 间隙锁4.4 临键锁 1. 锁概述 锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中&#xff0c;除传…...

让iPhone用电脑的网络上网

让iPhone用电脑的网络上网&#xff0c;可以按照以下步骤操作&#xff1a; 在iPhone上找到并点击“设置”选项&#xff0c;进入“蜂窝移动网络”。打开“个人热点”选项。此时下方的弹出对话框会显示“仅USB”。用数据线将你的iPhone与电脑相连&#xff0c;并在电脑上打开“控制…...

ThreeJS-3D教学十-有宽度的line

webgl中线是没有宽度的&#xff0c;现实的应用中一般做法都是将线拓宽成面来绘制。默认threejs的线宽是无法调节的&#xff0c;需要用有厚度的线 THREE.Line2。 先看效果图&#xff1a; 看下代码&#xff1a; <!DOCTYPE html> <html lang"en"> <he…...

安装Elasticsearch步骤(包含遇到的问题及解决方案)

注&#xff1a;笔者是在centos云服务器环境下安装的Elasticsearch 目录 1.安装前准备 2.下载Elasticsearch 3.启动Elasticsearch 非常容易出问题 第一次运行时&#xff0c;可能出现如下错误&#xff1a; 一、内存不足原因启动失败 二、使用root用户启动问题 三、启动ES自…...

网络编程面试笔试真题

网络编程笔试面试真题 1、关于Linux系统中多线程的信号处理&#xff0c;说法中不正确的是&#xff1f; A&#xff1a;在线程环境霞&#xff0c;产生的信号是传递给整个进程的 B&#xff1a;一般情况下&#xff0c;信号会随机给进程的一个线程 C&#xff1a;对某个信号处理函数…...

MySQL官方文档如何查看,MySQL中文文档

这里写自定义目录标题 MySQL官方文档如何查看MySQL中文文档 MySQL官方文档如何查看 MySQL官网地址&#xff1a;https://dev.mysql.com/doc/ 比如这里我要找InnoDB架构 MySQL中文文档 MySQL 5.1中文文档地址&#xff1a;https://www.mysqlzh.com/...

第七章:最新版零基础学习 PYTHON 教程—Python 列表(第四节 -如何在 Python 中查找列表的长度)

列表是 Python 日常编程不可或缺的一部分,所有 Python 用户都必须学习,了解其实用程序和操作是必不可少的,而且总是有好处的。因此,本文讨论了找到第一个这样的实用程序。使用Python 的列表中的元素。 目录 在 Python 中查找列表的长度...

XPS虽没流行,但还在使用!在Windows 10中打开XPS文件的最佳方法

当Windows Vista发布时&#xff0c;微软推出了XPS格式&#xff0c;这是PDF的替代品。XPS文件格式并不是什么新鲜事&#xff0c;但从未获得过多大的吸引力。 因此&#xff0c;XPS&#xff08;XML Paper Specification&#xff09;文件是微软对Adobe PDF文件的竞争对手。尽管XPS…...

23 种设计模式详解(C#案例)

&#x1f680;设计模式简介 设计模式&#xff08;Design pattern&#xff09;代表了最佳的实践&#xff0c;通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时…...

@SpringBootApplication配置了scanBasePackages导致请求一直404,分析下原因

出现RequestMapping注解的Controller类可能是因为SpringBootApplication注解中配置了scanBasePackages导致的请求一直返回404错误。 SpringBootApplication注解是Spring Boot的核心注解之一&#xff0c;它用于启动Spring Boot应用程序。这个注解实际上是一个组合注解&#xff…...

{大厂漏洞 } OA产品存在SQL注入

0x01 漏洞介绍 江苏叁拾叁-OA是由江苏叁拾叁信息技术有限公司开发的一款OA办公平台&#xff0c;主要有知识管理&#xff0c;工作流程&#xff0c;沟通交流&#xff0c;辅助办公&#xff0c;集成解决方案&#xff0c;应用支撑平台&#xff0c;基础支撑等功能。 该系统也与江苏叁…...

6-8 舞伴问题 分数 15

void DancePartner(DataType dancer[], int num) {LinkQueue maleQueue SetNullQueue_Link();LinkQueue femaleQueue SetNullQueue_Link();// 将男士和女士的信息分别加入对应的队列for (int i 0; i < num; i) {if (dancer[i].sex M){EnQueue_link(maleQueue, dancer[i]…...

samba服务器的功能是什么

Samba服务器是一个开源的网络文件共享服务&#xff0c;其主要功能是在不同操作系统之间实现文件和打印机共享。它最常用于将Linux/Unix系统与Windows系统互联&#xff0c;但也支持其他操作系统。 以下是Samba服务器的主要功能&#xff1a; 文件共享&#xff1a;Samba允许用户在…...

MSQL系列(五) Mysql实战-索引最左侧匹配原则分析及实战

Mysql实战-索引最左侧匹配原则分析及实战 前面我们讲解了索引的存储结构&#xff0c;BTree的索引结构&#xff0c;以及索引最左侧匹配原则&#xff0c;Explain的用法&#xff0c;今天我们来实战一下 最左侧匹配原则 1.联合索引最左侧匹配原则 联合索引有一个最左侧匹配原则 …...

react|redux状态管理

react|redux状态管理 参考官网&#xff1a;https://cn.redux-toolkit.js.org/tutorials/quick-start 状态管理使用流程 1、安装&#xff1a; npm install react-redux reduxjs/toolkit2、创建store.js 通过configureStore的hook对reducer&#xff08;或slice&#xff09;进行…...

Python之旅----判断语句

布尔类型和比较运算符 布尔类型 布尔类型的定义 布尔类型的字面量&#xff1a; True 表示真&#xff08;是、肯定&#xff09; False 表示假 &#xff08;否、否定&#xff09; 也就是布尔类型进行判断&#xff0c;只会有2个结果&#xff1a;是或否 定义变量存储布尔类型…...

【JavaEE】文件操作和IO

1 什么是文件&#xff1f; 针对硬盘这种持久化存储的I/O设备&#xff0c;当我们想要进行数据保存时&#xff0c;往往不是保存成一个整体&#xff0c;而是独立成一个个的单位进行保存&#xff0c;这个独立的单位就被抽象成文件的概念 2 文件路径 文件路径就是指咱们文件系统中…...

Ollama在Apple Silicon上预览,性能大提升

2026年3月30日&#xff0c;Ollama开启在Apple silicon上的预览&#xff0c;由苹果MLX框架支持&#xff0c;解锁新性能&#xff0c;加速繁重工作&#xff0c;还在多方面有显著改进。MLX驱动&#xff0c;性能飞升基于Apple silicon的Ollama构建在MLX框架上&#xff0c;利用统一内…...

2026最权威的AI写作神器解析与推荐

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 在学术研究范畴之内&#xff0c;人工智能技术的深度交融催生出了多种具备专业性的学术辅助平…...

Qwen3.5-9B-AWQ-4bit惊艳效果:多对象复杂场景图中主次关系与逻辑推断展示

Qwen3.5-9B-AWQ-4bit惊艳效果&#xff1a;多对象复杂场景图中主次关系与逻辑推断展示 1. 模型能力概览 千问3.5-9B-AWQ-4bit是一款突破性的多模态AI模型&#xff0c;它能够像人类一样"看懂"图片并做出智能分析。不同于传统图像识别工具&#xff0c;这个模型最令人惊…...

YOLOv12镜像应用案例:如何快速构建自动驾驶感知原型系统

YOLOv12镜像应用案例&#xff1a;如何快速构建自动驾驶感知原型系统 1. 自动驾驶感知系统的技术挑战 自动驾驶技术正在重塑交通出行的未来&#xff0c;而感知系统作为"车辆的眼睛"&#xff0c;其性能直接影响整个系统的安全性和可靠性。传统方案面临三大核心挑战&a…...

Qwen3-14B GPU算力优化实践:显存占用降低28%的FlashAttention-2配置

Qwen3-14B GPU算力优化实践&#xff1a;显存占用降低28%的FlashAttention-2配置 1. 开箱即用的私有部署方案 对于想要快速部署Qwen3-14B大模型的企业和个人开发者来说&#xff0c;这个经过优化的私有部署镜像提供了完美的解决方案。它基于RTX 4090D 24GB显存显卡和CUDA 12.4环…...

JS 缓存函数(缓存函数计算结果、缓存异步函数的执行结果以及带过期时间)

JS 缓存函数 一、普通函数结果缓存&#xff08;同步缓存&#xff09; 实现一个通用缓存高阶函数&#xff0c;核心逻辑&#xff1a;第一次执行计算并缓存结果&#xff0c;后续相同参数直接读取缓存&#xff0c;不再重复执行。 实现代码 // 缓存高阶函数&#xff1a;接收一个函数…...

MAVLink垂直扩展:Emaxx导航板专用协议库设计与实践

1. 项目概述 mavlink_emaxx 是一个面向 Emaxx 导航板&#xff08;Emaxx Nav Board&#xff09;定制的 MAVLink 协议消息扩展库。该库并非独立协议栈&#xff0c;而是基于标准 MAVLink v2 协议规范构建的一组专用消息定义&#xff08;message definitions&#xff09;与配套 C…...

H5页面如何优雅跳转iOS App Store?解决点击后二次跳转的坑

H5页面如何优雅跳转iOS App Store&#xff1f;解决点击后二次跳转的坑 在移动互联网时代&#xff0c;H5页面与原生App的无缝衔接已经成为提升用户体验的关键环节。特别是对于电商、社交、内容平台等需要引导用户下载App的场景&#xff0c;如何实现从H5页面到iOS App Store的平…...

高效双电源自动切换电路的设计与实现

1. 双电源自动切换电路的应用场景 双电源自动切换电路在现代电子设备中扮演着关键角色&#xff0c;它能确保设备在不同供电来源之间无缝切换&#xff0c;避免断电导致的系统崩溃。这种电路设计特别适合以下场景&#xff1a; 便携式设备&#xff1a;比如蓝牙音箱、移动电源等&am…...

为什么数据质量成为人工智能领域最重要的问题

简而言之&#xff1a;传统的基于人工编写规则和被动检查的数据质量体系&#xff0c;从未针对智能体人工智能进行设计。到2026年&#xff0c;当自主代理处理错误数据时&#xff0c;没有人会介入以发现问题。那些在人工智能领域取得成功的组织&#xff0c;并非从更好的模型入手&a…...