「java拆箱装箱」java自动拆装箱

博主:adminadmin 2022-11-26 16:43:09 61

本篇文章给大家谈谈java拆箱装箱,以及java自动拆装箱对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

什么是Java自动拆装箱?

自动装箱是Java编译器在基本数据类型和对应的对象包装类型之间做的一个转化。比如:把int转化成Integer,double转化成double,等等。反之就是自动拆箱。

什么是java中的自动装箱和自动拆箱

java自动装箱和拆箱

基本数据类型,如int,float,double,boolean,char,byte,不具备对象的特征,不能调用方法。

装箱:将基本类型转换成包装类对象

int i=10;

Integer x=new Integer(i);手动装箱

Integer y=10;自动装箱

拆箱:将包装类对象转换成基本类型的值

Integer j=new Integer(8);

int m=j.intValue();//手动拆箱

int n=j;//自动拆箱

java为什么要引入自动装箱和拆箱的功能?又是怎么实现的呢?

主要是用于java集合中,ListInteter list=new ArrayListInteger();

list集合如果要放整数的话,只能放对象,不能放基本类型,因此需要将整数自动装箱成对象。

实现原理:javac编译器的语法糖

public class Main {

public static void main(String[] args) {

Integer i1 = 100;

Integer i2 = 100;

Integer i3 = 200;

Integer i4 = 200;

System.out.println(i1==i2);

System.out.println(i3==i4);

}

}

//结果为:true false

在通过Integer.valueOf()方法创建Integer对象的时候,如果数值在[-128,127]之间,便返回指向IntegerCache.cache中已经存在的对象的引用(位于堆对象池中);否则创建一个新的Integer对象(创建在java堆中)。上面的代码中i1和i2的数值为100,因此会直接从cache中取已经存在的对象,所以i1和i2指向的是同一个对象,而i3和i4则是分别指向不同的对象。

public class Main {

public static void main(String[] args) {

Double i1 = 100.0;

Double i2 = 100.0;

Double i3 = 200.0;

Double i4 = 200.0;

System.out.println(i1==i2);

System.out.println(i3==i4);

}

}

//结果为:false false

为什么Double类的valueOf方法会采用与Integer类的valueOf方法不同的实现呢?很简单:在某个范围内的整型数值的个数是有限的,而浮点数却不是。

public class Main {

public static void main(String[] args) {

Boolean i1 = false;

Boolean i2 = false;

Boolean i3 = true;

Boolean i4 = true;

System.out.println(i1==i2);

System.out.println(i3==i4);

}

}

//结果为:true true

至于为什么是这个结果,同样地,看了Boolean类的源码也会一目了然。下面是Boolean的valueOf方法的具体实现:

public static Boolean valueOf(boolean b) {

return (b ? TRUE : FALSE);

}

public class H {

public static void main(String[] args) {

Integer m=10;

int n=10;

System.out.println(m==n);

}

}

//结果为:true

北大青鸟java培训:Java知识点整理归纳?

经过这么多年的开发,以及结合平时面试开发者的一些经验,我觉得对于J2SE方面主要就是要掌握以下的一些内容。

1.JVM相关(包括了各个版本的特性)对于刚刚接触的人来说,JVM相关的知识不一定需要理解很深,对此里面的概念有一些简单的了解即可。

不过对于一个有着3年以上经验的资深开发者来说,不会JVM几乎是不可接受的。

JVM作为运行的基础,很难相信对于JVM一点都不了解的人可以把语言吃得很透。

我在面试有超过3年经验的开发者的时候,JVM几乎就是一个必问的问题了。

当然JVM不是唯一决定技术能力好坏的面试问题,但是可以佐证开发能力的高低。

在JVM这个大类中,我认为需要掌握的知识有:JVM内存模型和结构GC原理,性能调优调优:ThreadDump,分析内存结构class二进制字节码结构,classloader体系,class加载过程,实例创建过程方法执行过程各个大版本更新提供的新特性(需要简单了解)2.的运行(基础必备)这条可能出看很简单,程序的运行谁不会呢?不过很多时候,我们只是单纯通过IDE去执行程序,底层IDE又是如何执行程序呢?很多人并不了解。

这个知识点是最最基本的开发者需要掌握的,初学,第一个肯定是教你如何在命令行中执行程序,但是很多人一旦把学完了,IDE用上了,就把这个都忘了。

为什么强调要知道这个呢,知道了最纯粹的启动方式之后,你才能在启动出问题的时候,去分析当时启动的目录多少,执行命名如何,参数如何,是否有缺失等。

这样有利于你真正开发中去解决那些奇奇怪怪的可能和环境相关的问题。

在这里需要掌握的知识有:c编译文件为class文件 命令的使用,带package的类如何在命令行中启动程序涉及到的各个路径(clasth,。

library。

path,运行的主目录等)3.数据类型这条没有什么好多说的,无非就是中的基本类型和对象类型的掌握。

天津IT培训建议可以再了解一些JDK如何自动转换方面的知识,包括装箱拆箱等,还要注意避免装箱之后的类型相等的判断主要知识点:基本类型:int,long,float,double,boolean,。

对应的对象类型:Integer等类型到基本类型的转换,装箱和拆箱Object类型:equals,hashcodeString类型的特点

java 为什么要有装箱和拆箱?

把一个基本类型包装成一个类,一个是可以使这个类型具有很多可以调用的方法。二个是Java向面像对象语言的靠近。其实Java还不算是很纯的面向对象的语言。真正的面向对象,是没有基本数据类型的。它只有一种类型,就是对象。三个是在泛型中,基本类型是不可以做泛型参数的。如:List int list = new ArrayListint ();这是不合法的。你只能这个样写ListInteger list = new ArrayListInteger ();也就是要用int型的包装类类型来解决基本类型不可以做泛型参数的问题 。

一名话,包装类有更多的方法和用途, 而这是基本类型没有的!!!

java c#中参数传递有装箱拆箱的操作吗?

有,值类型和引用类型的相互转换就是装箱和拆箱。如果你的参数定义为object,传入int/char之类的值类型,就会发生装箱。

java中的自动拆箱,装箱是指什么

装箱就是把基础类型封装成一个类。比如把int封装成Integer,这时你就不能把他当成一个数了,而是一个类了,对他的操作就需要用它的方法了。拆箱就是把类转换成基础类型。比如你算个加法什么的是不能用类的,就得把它转换成基本类型,jdk5以后已经可以自动转换了貌似。基本类型你应该懂的吧,就那八种

关于java拆箱装箱和java自动拆装箱的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-11-26,除非注明,否则均为首码项目网原创文章,转载请注明出处。