首页 > 编程语言 >java:包装类

java:包装类

时间:2024-03-30 16:32:04浏览次数:16  
标签:java 包装 Object 数据类型 类型 Integer 属性

java是面向对象的编程语言,而基本数据类型并不是对象,于是java对基本数据类型包装了对应的类,如 int-Integer、char-Character等,这些类称之为包装类。

一、包装类用于泛型

何为泛型?实例化一个对象,就是开辟一块空间用于存储对象的属性,Java是强类型编程语言,在声明属性时,需要指定属性的数据类型,如果对象的某个属性是Object,意味着这个属性可以是任意类型(基本数据类型除外),因为Object类是所有类的父类,但是在获取和修改属性数据时,需要强制类型转换。可如果在定义这个类时,既不希望这个属性的类型是Object,但又想有一个属性用于占位置,以便在调用时用于存储数据,于是抽象一个类类型T,用于占位置,实例化时再具体指明这个属性的数据类型,泛型的概念就产生了。

class AAA{
    String s;
    int i;
    Object o;

    T t;
}

方法传参是将数据给到形参变量,而泛型传参是指在实例化对象时,将数据类型给到属性,指明该属性的数据类型。泛型是编译时的概念,即在编译时,可以用一个参数T 指代属性的数据类型,在运行后的字节码文件中,擦除机制会将T类型擦除为Object类型,实例化之后再转为其他数据类型,所以在后续字节码文件中,Object类型会转为实际的类型。

那为何还用参数T而不用Object?用参数T而不用Object是在编写代码时,不用考虑类型转换问题,而且编译器会自动校验后续代码中属性的值和类型是否匹配,而写作Object不一定能在编译阶段发现问题。

基本数据类型并不属于类对象,在泛型传参中也就无法传递基本数据类型,因此使用包装类,可以传递包装类类型。

二、包装类用于集合类

java对于数据的存储结构提供了集合类,如ArrayList、LinkedList、Stack、HashMap等,集合类在实例化时,需要指明存储数据的数据类型。而java在对于基本数据类型和包装类类型之间的类型转换,提供了自动装箱(int -> Integer)和自动拆箱(Integer -> int)操作,实际对于集合类的操作类型,仍然是包装类类型。

List l = new ArrayList();
l.add(1);

三、前后端交互中的方法传参

前端给后端发送请求,请求中的参数可以有值,也可以没有值,没有值即传递的是null值,如果用基本数据类型接收,基本数据类型是不能和null值比较的(==或!=),那么程序就可能崩溃,而用包装类接收时,包装类是可以和null值比较的。

四、Integer的高速缓存

由于包装类是类对象,对象的创建和销毁是存在一定的性能开销的,因此针对int类型的数据,Integer提供了对象缓存机制。Integer在初始化时,针对较小的整数(默认-128 - 127)会存储在一个数组中,对于没有超过缓存范围的数据,默认从数组中取,即引用相同,而超过缓存的数据,则新建对象存储(引用不同),从而节省内存提高性能。

Integer a = 100;
Integer b = 100;
a == b;

标签:java,包装,Object,数据类型,类型,Integer,属性
From: https://blog.csdn.net/qq_45476544/article/details/137162452

相关文章

  • Java(2) ----- 异常、多线程、同步安全、死锁、并发包、Lambda表达式、Stream流
    异常方法默认都可以自动抛出运行时异常!自定义异常:(1)自定义编译时异常1、定义一个异常类继承Exception2、重写构造器3、在出现异常的地方用thrownew自定义对象抛出4、编译时异常是编译阶段就报错,提醒跟家强烈,一定需要处理!(2)自定义运行时异常1、定义一个异常类继承RunTimeE......
  • 【全开源】JAVA上门家政服务系统源码微信小程序+微信公众号+APP+H5_博纳软云
    上门家政服务系统源码微信小程序——让便捷服务触手可及在现代社会,家政服务的需求日益增长,而如何快速、便捷地找到优质的家政服务成为了许多家庭关注的焦点。为此,我们推出了上门家政服务系统源码微信小程序,让便捷服务触手可及。这款微信小程序不仅集成了丰富的家政服务资源,还......
  • 【全开源】JAVA语聊大厅+陪玩系统语音聊天APP系统源码_博纳软云
    JAVA语聊大厅+陪玩系统语音聊天APP系统源码,融合了先进的JAVA技术和独特的陪玩系统,为用户带来了全新的语音社交体验。该系统源码不仅具备JAVA语言的高效稳定特性,还通过陪玩系统的引入,让用户在享受语音聊天的乐趣之余,更能找到心仪的玩伴,一同畅游在精彩的游戏世界。在语聊大厅中,......
  • 基于JavaWeb的家居商城系统的设计与实现论文
    摘要随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势;对于家居商城系统当然也不能排除在外,随着网络技术的不断成熟,带动了家居商城系统,它彻底改变了过去传统的管理方式,不仅使服务管理难度变低了,还提升了管理的灵活性。这种个性化的平......
  • 【JavaScript系列】-- 对象
    今天我们将探讨JavaScript中的一个强大工具—-对象。对象就像生活中的各种工具,帮助你更好地组织和管理信息。在实际开发中,可以使用对象来表示用户信息、处理表单数据等。01、什么是对象JavaScript对象是一种包含属性和方法的数据类型,可视为一个多功能盒子,用于存放各种数据。在......
  • Java:Java中的`static`关键字
    引言:在Java编程语言中,static关键字是一个非常重要的概念,它可以用来声明类变量和类方法。static变量或方法属于类本身,而不是类的某个特定实例。这使得它们可以在没有创建类实例的情况下被访问和使用。本文将详细探讨static关键字的用法、特点以及它在Java编程中的应用。sta......
  • 【全开源】无人共享棋牌室茶室台球室系统JAVA版本支持微信小程序+微信公众号_博纳软云
    在繁忙的都市生活中,寻找一处静谧的棋牌室、茶室或台球室,已成为许多人放松身心、享受闲暇时光的理想选择。为满足这一市场需求,我们推出了无人共享棋牌室茶室台球室系统JAVA版本,支持微信小程序和微信公众号,为您带来全新的智能体验。该系统采用先进的JAVA技术开发,实现了无人值守......
  • 【全开源】JAVA语聊大厅+陪玩系统语音聊天APP系统源码_博纳软云
    JAVA语聊大厅+陪玩系统语音聊天APP系统源码,融合了先进的JAVA技术和独特的陪玩系统,为用户带来了全新的语音社交体验。该系统源码不仅具备JAVA语言的高效稳定特性,还通过陪玩系统的引入,让用户在享受语音聊天的乐趣之余,更能找到心仪的玩伴,一同畅游在精彩的游戏世界。在语聊大厅中,......
  • 【全开源】无人共享棋牌室茶室台球室系统JAVA版本支持微信小程序+微信公众号_博纳软云
    在繁忙的都市生活中,寻找一处静谧的棋牌室、茶室或台球室,已成为许多人放松身心、享受闲暇时光的理想选择。为满足这一市场需求,我们推出了无人共享棋牌室茶室台球室系统JAVA版本,支持微信小程序和微信公众号,为您带来全新的智能体验。该系统采用先进的JAVA技术开发,实现了无人值守......
  • java使用注解实现系统日志记录
    不论在神魔类型的项目中,日志系统绝对是一个不可少的存在,那么,怎末用一个最简便的方式来实现日志在数据库中的存储呢??最近在项目中正好负责了日志模块的实现,就简单记录一下。我在这个项目中使用的是aop自定义注解的方式,大致步骤如下:1.第一步,首先需要先定义一个注解类,来实现部分方法......