首页 > 编程语言 >java中的包装类

java中的包装类

时间:2024-04-14 12:55:49浏览次数:29  
标签:基本 java 包装 类型 127 128 Integer

java中的包装类

为什么要有包装类

  • 在面向对象中“一切皆对象”,但是基本类型的数据不太符合这一理念,为了统一概念,因此,把基本类型包装成了引用类型的数据
  • 基本类型对象的包装类型,除了可以满足基本的类型的基本需求,还附加了其他的方法,例如:类型转化,数据类型之间的操作等等

基本类型与包装类型

基本类型 包装类型
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean
  • 在类型转化过程中,由基本类型转化成包装类型叫做装箱

  • 由包装类型转化成基本类型的过程叫做拆箱

  • 例:

    将基本类型转化成包装类型

    int a = 10;
    Integer a1 = new Integer(a);
    

    将包装类型转化成基本类型

    Integer a = new Integer(10);
    int b = a.intValue();
    

    包装类型的相互转化

    Integer a = new Integer(10);
    String s = a.toString()
    
  • 在java5以后,开始提供自动装箱,自动拆箱

阐述128陷阱以及原因

public static void main(String[] args) {
   Integer num1 = 127;
   Integer num2 = 127;
   System.out.println(num1 == num2);

   Integer num3 = 128;
   Integer num4 = 128;
   System.out.println(num3 == num4);
}

出现的原因,在Integer的自动装箱中使用了Integer的valueOf方法,在这个方法中进行了优化,他缓存了经常使用的一些Integer数,范围是[-128,127],因此,当自动装箱的数字超过127或者小于-128时,就会是重新new一个对象,这样就会使得他们的地址不一样,也就是导致了128陷阱的出现。

标签:基本,java,包装,类型,127,128,Integer
From: https://www.cnblogs.com/ning23/p/18134014

相关文章

  • [javascript]知识点
    【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权)https://www.cnblogs.com/cnb-yuchen/p/18031963出自【进步*于辰的博客】目录1、其他知识点链接2、严格模式3、类、对象3.1介绍3.2自定义对象3.2.1创建对象方法3.2.2建立继承关系4、变量5、this10、关于var与......
  • Java集合
    Java集合本文中引入的源码为JDK11什么是Java集合Java集合(Java集合类)是java数据结构的实现。Java集合类是java.util包中重要内容,它允许以各种方式将元素分组,并定义了各种使这些元素更容易操作的方法。Java集合类是Java将一些基本的和使用频率极高的基础类进行封装和增强后再......
  • ES7.17.20连接时报错:java.lang.NoSuchMethodError: org.elasticsearch.client.Request
    1.报错详情:java.lang.NoSuchMethodError:org.elasticsearch.client.RequestOptions$Builder.removeHeader(Ljava/lang/String;)Lorg/elasticsearch/client/RequestOptions$Builder; atco.elastic.clients.transport.rest_client.RestClientOptions.addBuiltinHeaders(RestCli......
  • java: 无法访问org.mybatis.spring.annotation.MapperScan、类文件具有错误的版本 61.
    使用的Mybatis-spring依赖的版本3.0.1太高,将版本改为2.2.2<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.2.2</version></dependency><depende......
  • 使用java client连接ES7.17.20时报错:Caused by: java.lang.NoClassDefFoundError: Cou
    1.报错详情Causedby:java.lang.NoClassDefFoundError:Couldnotinitializeclasscom.fasterxml.jackson.databind.cfg.DatatypeFeatures$DefaultHolder atcom.fasterxml.jackson.databind.cfg.DatatypeFeatures.defaultFeatures(DatatypeFeatures.java:33)~[jackson-data......
  • JavaScript基础
    JavaScript一、js编写位置位置1:script标签中<scripttype="text/javascript"> vara=1;...</script>位置2:标签中绑定事件<buttononlick="alert(123);">Click</button>位置3:超链接的href属性中<ahref="javascript:alert('......
  • Java中的matches()方法与find()方法区别
    正则表达式用于在字符串中进行模式匹配。在处理字符串时,经常需要使用matches()方法和find()方法来查找与正则表达式匹配的部分。虽然它们都用于匹配字符串,但有一些重要的区别。matches()方法matches()方法是String类中的一个方法,用于判断整个字符串是否与给定的正则表达......
  • 大公司的Java面试题集
    找工作要面试,有面试就有对付面试的办法。以下一些题目来自我和我朋友痛苦的面试经历,提这些问题的公司包括IBM,E*Trade,Siebel,Motorola,SUN, 以及其它大小公司。面试是没什么道理可讲的,它的题目有的不合情理、脱离实际。有在纸上写的,有当面考你的,也有在电话里问的,给你IDE的......
  • 今天我们来聊一聊Java中的Semaphore
    写在开头在上几天写《基于AQS手写一个同步器》时,很多同学留言说里面提到的Semaphore,讲得太笼统了,今天趁着周末有空,咱们就一起详细的学习和梳理一把Semaphore。什么是Semaphore?在前面我们讲过的synchronized和ReentrantLock都是一次只允许一个线程访问某个资源,而Semaphore(......
  • java 抽象工厂模式
    抽象工厂模式(AbstractFactoryPattern):是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工......