首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【JavaSE专栏6】Java 基本类型转换、包装类、自动装箱、自动拆箱

Java 中基本数据类型的转换主要分为两类 自动转换类型(隐式转换) 强制转换类型(显示转换) 接下来逐个讲解。...自动装箱,就是将一个基本类型直接赋值给包装类型的过程。 如果没有自动装箱,以上代码无法通过 JVM 编译。 ---- 2.4 自动拆箱 自动拆箱是什么?包装类型自动转换为基本类型就是自动拆箱。...如果不进行自动拆箱,两个不同类型的变量无法进行比较。 就好比拿 苹果 和 电视 比较性能,这是不可行的。 Java 只能将包装类 Integer 拆箱为 int 才能和 int 值进行比较。...所以在实战开发中,建议使用基本数据类型。 如果一定要使用包装类的场景下,再去使用包装类。 在 2.1 小节 也提到过,基本类型无论是在时间还是空间上都是优于引用类型(如包装类)的。...---- 三、课时小结 在本节课时中,讲解了低转高、高转低的 Java 基本类型转换,接着学习了包装类的概念,再引申出自动装箱、自动拆箱的概念,最后分别进行了性能测试。

19820

Java 中文官方教程 2022 版(六)

例如,将int转换为Integer,将double转换为Double等。如果转换反向进行,则称为拆箱。 这是自动装箱的最简单示例: Character ch = 'a'; 本节中的其余示例使用泛型。...因为li是Integer对象的列表,而不是int值的列表,您可能会想知道为什么 Java 编译器没有发出编译时错误。编译器不会生成错误,因为它从i创建一个Integer对象并将该对象添加到li中。...实例的列表;它无法打印ListInteger>、List、List等,因为它们不是List的子类型。...当foo方法调用List.set(int, E)时,编译器无法确认要插入列表的对象类型,从而产生错误。当出现这种类型的错误时,通常意味着编译器认为你正在将错误的类型赋给变量。...3 errors 没有辅助方法可以解决这个问题,因为代码本质上是错误的:从Integer值列表中取一个项目并尝试将其放入Double值列表中显然是不正确的。

20000
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Java进阶-集合(3)与泛型

    属性声明:如private data_type1 property_name1; 一般用于类中的属性类型不确定的情况下 在实例化泛型类时,需要指明泛型类中的类型参数,并赋予泛型类属性相应类型的值...Integer age=s.getAge(); Character sex=s.getSex(); //以上获取时不用类型转换,程序隐式地将Object类型的数据转换为相应的数据类型...如果使用泛型方法可以取代类泛型化,那么就应该只使用泛型方法。 一个 static 方法无法访问泛型类的类型参数。因此,如果 static 方法需要使用泛型能力,就必须使其成为泛型方法。...格式:[访问权限修饰符] [static] [final] 列表> 返回值类型 方法名([形式参数列表]),如 如:public static List find(Class...cs,int userId){} 一般来说编写 Java 泛型方法,其返回值类型至少有一个参数类型是泛型,且类型应该是一致的,如果只有返回值类型或参数类型之一使用了泛型,那么这个泛型方法的使用就被限制了

    28821

    看了这篇泛型,下次设计链表别傻傻的用int 表示node节点的值了

    在java中这种多态思想也非常多,比如类似以下: ListInteger>list1=new ArrayListInteger>(); ListInteger>list2=new LinkedList...就是在第二次显示的向下转向的时候,如果人为转换错误编译器无法识别,而必须等到代码执行时候才报错,这样的机制让java代码变得不太安全。 ?...Java泛型 在Object显示转换存在不安全行为的情况下,Java在jdk1.5以后提出了泛型机制,通过泛型就能有效避免转型时候出现的问题,泛型简单的理解就是在类、接口、方法中定义未知类型变量,只有初始化的时候才知道真正的类型...而如果你依然想在子类中使用泛型,那就需要在子类中声明一个泛型,而接口中的泛型使用子类的泛型类型。例如下面的dog类。...不过泛型更多的应用于框架的编写方面,在java中其实也是随处可见。尤其是集合类: ? 看了这篇泛型,下次设计链表二叉树别傻傻的用int 表示node节点的值了!我想你该知道正确的写法了!

    51520

    Java容器大全

    retainAll(Collection c) //从集合中删除集合c中不包含的元素 二、Iterator Collection是个接口,你的类继承这个接口必须实现这个接口里面的所有函数,其中就包括...迭代器是一种设计模式,是一个标准化遍历各类容器里面的所有对象的方法类,可以遍历并选择序列中的对象而不用关心底层结构。Java中的Iterator功能较为简单,只能单项移动。...C++中的Reference与Pointer int i = 1; int *pi = &i;//i是一个指针类型的对象,并且也是一个“指向int整型的指针”,它的初始化值为对象i的地址 int &...Java中的Reference Java中的引用可以随意赋值,并且可以为null,可以理解成一个披着C++中reference的pointer。...需要注意的是asList()函数的参数必须是对象,如果是int[],必须先转换成Integer[]。如果强行转换的话,需要用到jdk 1.8中的stream。

    76920

    腾讯给机会了?有点简单啊!

    另一个非常重要的原因就是在Java中绝大部分方法或类都是用来处理类类型对象的,如ArrayList集合类就只能以类作为他的存储对象,而这时如果想把一个int型的数据存入list是不可能的,必须把它包装成类...例如,假设我们有一个列表,我们想要将其元素排序,并将排序结果存储在一个新的列表中。如果我们使用基本数据类型int,无法直接使用Collections.sort()方法。...因此,如果要将int类型的数据存储在集合中,必须使用Integer包装类。例如,假设我们有一个列表,我们想要计算列表中所有元素的和。...这使得Java程序员更加方便地进行数据类型转换。例如,当我们需要将int类型的值赋给Integer变量时,Java可以自动地将int类型转换为Integer类型。...同样地,当我们需要将Integer类型的值赋给int变量时,Java可以自动地将Integer类型转换为int类型。

    12410

    Java 之数据类型

    基本类型与引用类型的区别: 1.基本类型与引用类型的组成 基本类型是一个单纯的数据类型,它表示的是一个具体的数字、字符或一个布尔值,例如100、'M'和true。...3引用类型间的类型转换 1.基本数据类型之间的类型转换 在Java语言中,当多个不同基本数据类型的数据进行混合运算时,如整型、浮点型和字符串型进行混合运算,需要先将它们转换为统一的类型,然后再进行计算...但在个别情况下,自动转换就会导致数据溢出的现象,例如: int num1=2147483647;                    //定义int型变量num1, 并赋值为int类型的最大值 char...将基本数据类型转换为其包装类还可以通过包装类的构造方法进行转换,例如将int型整数129转换为Integer类型: Integer num=new Integer(129) 各包装类所具有的xxxValue..., 不能将C类型强制转换为B类型 如果声明了一个父类型的变量,但使其引用子类对象,在编译时,Java编译器是根据变量被显示声明的类型去编译,因此该变量的类型被看作父类类型,所以将其进行强制类型转换并赋给引用了另一个子类对象的变量时

    98330

    滚雪球学Java(07):自动装箱、自动拆箱,Java开发者必备技能

    下面是一个自动装箱的例子:Integer i = 100; // 自动装箱System.out.println(i);  在上面的代码中,将 int 类型的 100 赋值给包装类 Integer...对象 i 的值赋值给 int 类型的 j,编译器自动将 Integer 对象 i 拆箱为基本类型的 int。...首先,在第6行,将byte类型变量b的值赋给int类型变量i,这是一种自动类型转换,因为byte可以自动转换为int。...在这个例子中,我们创建了一个 Integer 对象 i,并使用它的 intValue() 方法获取它包装的 int 值(即 100),并将其打印到控制台上。这是一个简单的示例,展示了包装类的基本用法。...包装类  定义一个Integer类型的变量x,赋值为100,并使用intValue()方法将其转换为int类型,然后输出其值,结果为100。

    12521

    Java中net.sf.json包关于JSON与对象互转的坑

    我认为这是不合理的转换规则。如果我在Java对象中定义了一个方法,仅仅因为这个方法是“get”开头,且有返回值就将其作为转换后JSON对象的“key-value”,那岂不是暴露出来了?...其实PropertyDescriptor封装得已经很详细了,什么读写方法都已经赋值了。 ?   例如这个getSql方法已经被解析成了上图的PropertyDescriptor。...,过滤规则全在这个方法里了,就是选择public修饰符带有get前缀和返回值的方法 …   对net.sf.json的源码简要分析了一下,发现确实如猜想的那样,具体的源码比较多篇幅有限需自行查看跟踪...我在打断点debug不断深入的时候发现了net.sf.json对于整型数据的处理时,发现了这个方法NumberUtils#createNumber,这个类是从字符串中取出数据时判断它的数据类型,本意是想如果数字后面带有...return input; 17 } 18 }   上面的这段代码很清晰的显示了元凶所在,不论是Long型(Integer范围内的Long型),包括Byte、Short都会转换为Integer。

    3.3K50

    Java基础:Java数据类型

    = 左边数据类型级别 <右边数据类型级别,需要强制转换右边数据类型; 整型常量赋值给 byte、 short、 char、int、long 时,超过类型最大值,超过需要强转。...而尖括号中的类型参数不允许是基本类型,也就是说,不允许写成 ArrayListint>。这里就用到了 Integer 对象包装器类。我们可以声明一个 Integer 对象的数组列表。...这个调用 list.add(3); 将自动变换成 List.add(Integer.valueOf(3));。相反地,当将一个 Integer 对象赋给一个 int 值时,将会自动地拆箱。...然而,Java 实现却有可能(may)让它成立。如果将经常出现的值包装到同一个对象中,这种比较就有可能成立。这种不确定的结果并不是我们所希望的。...遗憾的是,不能使用人们熟悉的算术运算符(如:+和*)处理大数值。而需要使用大数值类中的 add 和 multiply 方法。 三、字符串 从概念上讲,Java 字符串就是 Unicode 字符序列。

    1.3K50

    深入理解 Java 基本数据类型

    引用类型:它以特殊的方式(类似 C 指针)向对象实体(具体的值),这类变量声明时不会分配内存,只是存储了一个内存地址。 从使用方面来说 基本类型:使用时需要赋具体值,判断时使用 == 号。...基本数据类型与包装类的转换被称为装箱和拆箱。 装箱(boxing)是将值类型转换为引用类型。例如:int 转 Integer 装箱过程是通过调用包装类的 valueOf 方法实现的。...拆箱(unboxing)是将引用类型转换为值类型。例如:Integer 转 int 拆箱过程是通过调用包装类的 xxxValue 方法实现的。(xxx 代表对应的基本数据类型)。...当你需要将一个值类型(如 int)传入时,需要使用 Integer 装箱。 另一种用法是:一个非泛型的容器,同样是为了保证通用,而将元素类型定义为 Object。...例如:int 转 Integer 装箱过程是通过调用包装类的 valueOf 方法实现的。 拆箱(unboxing)是将引用类型转换为值类型。

    1.1K20

    Java集合、数组与泛型中的几个陷阱,你掉进了几个?

    下面我总结了集合、泛型、数组转集合等一些常见的陷进,认真看完,相信你绝对有所收获。 1、List ,List 与 List 有区别吗?...> 是一个泛型,在没有赋值之前,是可以接受任何集合的赋值的,我想这点大家都知道,但是请注意,赋值之后就不能往里面添加元素了,提示如下错误: ? 所以 List a ,可以把 a 及其 a 的子类赋给 a,从 a 里取的元素都会被强制转换为 T 类型,不过需要注意的是,不能向 a 添加任何除 null 外是元素。 2、List a ,可以把 a 及其 a 的父类赋给 a,从 a 里取的元素都会被强制转换为 Object 类型,不过需要注意的是,可以向 a 添加元素,但添加的只能是 T 及其子类元素。...两个方法的参数不同,为什么会重载不通过呢? 实际上在 Java 的泛型中,泛型只存在于源码中,在编译后的字节码中,泛型已经被替换为原生类型了,并且在相应的地方插入了强制转换的代码。

    82120

    探究Java方法的神奇魔法和参数传递奥秘,有两下子!

    它可以是基本数据类型(如int、double等)或对象类型(如String、自定义类名等)。如果方法不返回任何值,可以使用void作为返回类型。...赋值操作符 (=):这是将方法的返回值赋给返回值变量的操作符。方法调用 (add(3, 4)):这是实际调用方法的语法。在这个例子中,add是方法名,3和4是传递给方法的参数。...然而,在Java中,基本数据类型(如int)是通过值传递的,这意味着方法接收的是原始值的一个副本。变量初始化:int num = 5;:在方法外部,定义了一个int类型的变量num并初始化为5。...例如,以下代码会将list中的第一个元素的值从3改为5:public void changeList(ListInteger> list) { list.set(0, 5);}ListInteger...列表创建与初始化:ListInteger> list = new ArrayList();:创建了一个Integer类型的列表,并使用ArrayList的实例来初始化它。

    18422

    ArrayList,LinkedList和String

    in thread "main" java.util.ConcurrentModificationException 如果换为 for(Integer integer : arrayList){ System.out.println...这样的话把 arrayList.remove( ) 中的数字改为 0, 1, 2, 的话,显示台会出现 1, 2, 3, 的. import java.util.ArrayList; public class...ArrayList中的内存地址是连续的,它存放的是连续的,如1,2,3,4,5等,可以通过索引找到自己想要,因为是连续的,所以马上就可以找到自己想要的了....数组:数组是连续存储的,所以它的索引非常的快,在内存中赋值和修改也很容易. int[] arr = new int[3]; int[] arr = new int[3] {1,2,3}; int[] arr...= {1,2,3,4}; 在数组中一定存在着它不好的缺点,因为如果在我们不知道数组的长度情况下会很麻烦,声明数组一定要指定它的长度,如果这个长度太长,就会导致浪费内存,如果过短的情况下又会导致数据溢出的结果

    22530

    第56节:ArrayList,LinkedList和String

    in thread "main" java.util.ConcurrentModificationException 如果换为 for(Integer integer : arrayList){ System.out.println...ArrayList中的内存地址是连续的,它存放的是连续的,如1,2,3,4,5等,可以通过索引找到自己想要,因为是连续的,所以马上就可以找到自己想要的了....数组:数组是连续存储的,所以它的索引非常的快,在内存中赋值和修改也很容易....int[] arr = new int[3]; int[] arr = new int[3] {1,2,3}; int[] arr = {1,2,3,4}; 在数组中一定存在着它不好的缺点,因为如果在我们不知道数组的长度情况下会很麻烦...,声明数组一定要指定它的长度,如果这个长度太长,就会导致浪费内存,如果过短的情况下又会导致数据溢出的结果.

    41930

    最新Java面试题 每一题都是经典

    jre和java开发工具, 如:java.exe 运行工具;javac.exe编译工具 写出所有的基本数据类型和对应的字节数     1.整型:byte(1个字节)、short(2个字节)、int(4个字节...Integer与int的区别 1.int是Java的基本数据类型之一,Integer是Java为int提供的包装类; 2.int的初始化值为0,而Integer的初始化值为null。...什么是自动类型强转,什么是强制类型转换 自动类型强转  范围小的数据类型自动转为为范围大的数据类型 强制类型转换,范围大的数据类型需要强制转换为范围小的数据类型 一维数组的三种创建方式 数据类型[] 数组名...List、 Set和Map的区别 1、List中的元素,有序、可重复、可为空; 2、Set中的元素,无序、不重复、只有一个空元素; 3、Map中的元素,无序、键不重,值可重、可一个空键、多个空值;  break...重载是在同一个类,重写是在父子类中 重载的参数列表不同,重写参数列表相同 重载和返回值无关, 重写的返回值相同或者是父类方法返回值的子类 重载可以使用任意访问修饰符,重写访问修饰符大于等于父类方法修饰符

    89010

    python元组下标_python获取数组下标

    ,直接 arr = ; 现在arr数组已经被赋值了三个元素,其实这一步把数组定义和赋值都完成了,在开发中通常也是定义和赋值一步到位的。...2、获取数组元素当给一个数组赋值了之后,我们通常需要获取数组中某个指定元素,比如获取arr数组中第一个元素 arr,通过元素下标可获取对应… 再比如说,如果需要频繁对序列做先出先进的操作,collection.deque...中的列表(list)类似于c#中的可变数组(arraylist),用于顺序存储结构。...i, ) 返回数组中1的最小下标:1 在下标1(负值表示倒数)之前插入值0…array(i, ) 将数组arr转换为一个具有相同元素的列表: 所有数值类型的字符代码表: ?...因此,我们可以使用 list 来获取下标对应的值。 如果我们深入下列表的底层原理,会发现列表是基于 pylistobject 实现的。

    3.2K20

    Java 中的变量与数据类型

    种) 下面的表就是 Java 中 8 大数据类型所占的内存空间,对应封装类,数据表示范围以及默认值的以下相关情况。...中已经存在指向 “xxx” 的对象,所以直接在堆中创建一个字符串对象; 数据类型转换 对于基本数据类型,不同类型之间是可以相互转换的,但是需要满足一定的条件; 从小到大自动转,从大到小强制转。...即就是,对于低精度的数据类型,如果要转换为高精度的数据类型,直接将低精度的值赋给高精度的值即可; 但对于高精度的数据类型,如果想要转换为低精度的数据类型,则需要采用 强制转换 的手段,但此时需要承担精度丢失的风险...类型的值赋值给 int,则需要强制转换 num = (int)ans; 注意:强制转换可能会导致精度丢失,所以一般情况下尽量能不用就不用。...常量又叫做字面常量,是通过数据直接来表示的,在程序运行过程中不能发生改变。通常我们把 Java 中用 final 关键字所修饰的成员变量叫做常量,它的值一旦给定就无法再进行改变!

    53730
    领券