首页 > 其他分享 >包装类共同点

包装类共同点

时间:2024-08-05 22:08:17浏览次数:9  
标签:Java 共同点 包装 equals 对象 类型 原始数据

.所有包装类都重写了Object方法

我们也很容易知道Object的方法有

1.1 equals

equals 基本上用于判断当前对象和参数传入的对象是否相同,Object类的默认实现是比较地址。对于两个变量,指向同一个对象地址时,equals才会返回true,与==运算符结果相同。一般这个默认实现是不符合我们需要的比较两个对象相等,需要子类重写这个实现。以Long为例,其equals方法代码实现如下:

public boolean equals(Object obj){
    if(obj instanceof Long){
      return value==((Long)obj).longValue();
   }
   return false;
}

Java中的包装类(Wrapper Classes)是将原始数据类型(Primitive Data Types)封装成对象的类。Java为每个原始数据类型提供了对应的包装类,这些包装类具有以下共同点:

  1. 实现Serializable接口:所有的包装类都实现了java.io.Serializable接口,这意味着它们可以被序列化和反序列化。

  2. 实现Comparable接口:除了Character类之外,所有的包装类都实现了java.lang.Comparable接口,允许对象进行自然排序。

  3. 提供构造函数:每个包装类都提供了一个接受相应原始数据类型参数的构造函数,用于创建包装类实例。

  4. 提供静态方法valueOf():每个包装类都有一个静态方法valueOf(),它接受一个String类型的参数,并将其转换为相应的原始数据类型。

  5. 提供parse方法:大多数包装类提供了一个parseXxx()方法,用于将字符串解析为原始数据类型,其中Xxx代表原始数据类型的名称。

  6. 提供toXxxString()方法:每个包装类都有一个toXxxString()方法,将包装类对象转换为String表示形式。

  7. 提供静态字段MIN_VALUE和MAX_VALUE:除了BooleanCharacter之外,每个包装类都有一个静态字段MIN_VALUEMAX_VALUE,分别表示该类型的最小值和最大值。

  8. 提供类型转换方法:包装类提供了将对象转换回原始数据类型的静态方法,如byteValue()intValue()doubleValue()等。

  9. 单例模式:对于BooleanCharacter类,Java使用单例模式,即对于特定的值(如truefalse'\u0000''\uffff'),它们只创建一个实例。

  10. 自动装箱和拆箱:Java 5 引入了自动装箱(Autoboxing)和拆箱(Unboxing)机制,允许自动将原始数据类型转换为对应的包装类对象,反之亦然。

这些共同点使得Java的包装类在处理原始数据类型时更加灵活和方便。

标签:Java,共同点,包装,equals,对象,类型,原始数据
From: https://www.cnblogs.com/ZWJ7671277/p/18344135

相关文章

  • java8-常用类型(包装类,BigDecimal,Date等)
    1.包装类1.1包装类简介java语言是面向对象的语言,但是其中的八大基本数据类型不符合面向对象的特征。因此java为了弥补这样的缺点,为这八种基本数据类型专门设计了八种符合面向对象特征的的类型,这八种具有面向对象特征的类型,统称为包装类,英文单词:wrapperclass。包装类,就是......
  • 包装类
    包装类什么是包装类包装类就是将基本数据类型封装在类中自定义包装类将基本数据类型包装成一个类对象的本质就是使用Object进行接收处理。Java提供包装类对象型(Object的直接子类):Boolean(boolean)、Character(char)数值型(Number的直接子类):Byte、Double、Short、Long、Integ......
  • 包装类
    包装类一.什么是包装类包装类(WrapperClasses)在Java中是指将基本数据类型(如int、double、char等)封装成对象的类。这些类都是Java类库的一部分,它们为每种基本数据类型提供了一个对应的类,使得基本数据类型能够以对象的形式存在和操作。包装类不仅为基本数据类型提供了对象的封装,还......
  • 【Java】包装类型变量的形参传递,方法内修改后,方法外还是原值?
    背景前几天有个朋友写代码时,想把int变量作为形参传入方法中进行修改后,在方法外能够获取到修改后的变量进行下一步操作。类似这样:classTest{publicstaticvoidmain(String[]args){intx=1;add(x);System.out.println(x);}pub......
  • c++function bind包装器详解
    包装器function包装器function包装器也叫适配器,c++中的function本质是一个类模板,也是一个包装器,那么为什么需要包装器呢。template<classF,classT>TuseF(Ff,Tx){staticintcount=0;cout<<"count:"<<++count<<endl;cout<<"count:&q......
  • 【数据结构】包装类和泛型
     ......
  • 如何将输入暗淡从 fit 方法传递到 skorch 包装器?
    我正在尝试将PyTorch功能合并到scikit-learn环境中(特别是Pipelines和GridSearchCV),因此一直在研究skorch神经网络的标准文档示例看起来像importtorch.nn.functionalasFfromtorchimportnnfromskorchimportNeuralNetClassifierclassMyModule......
  • java包装类型缓存简单探究-Integer为例
    文章目录包装类型缓存自动装箱与valueOf感悟结语包装类型缓存包装类型缓存是什么本文以常用的Integer包装类为例做一个探索,感兴趣可以用类似方法查看其他包装类。我们都知道它会缓存-128到127之间的整数Integer对象。结论大伙都知道。那么我们今天就来探究一下底......
  • 如何判断一个函数是否被另一个特定函数包装?
    使用下面的代码:defwrap(x):defwrapped(y):returnx+yreturnwrappedf=wrap(1)是否可以看出f是一个被函数包裹的函数wrap?显示变量f,它是可见的:>>>f<functionwrap.<locals>.wrappedat0x10067cf40>但是有没有办法确定|||被......
  • 可包装对象
    std::function模板类是一个通用的可调用对象的包装器,用简单的、统一的方式处理可调用对象。#include<iostream>#include<functional>usingnamespacestd;voidshow(intage,conststring&message){ cout<<"age"<<age<<"message"<<......