Java入门之包装类

简介: 包装类用途Java中有些异类(8种基本数据类型)它们不能像对象一样进行属性和方法的调用以及进行相互之间的对象化处理,包装类的存在就是为了解决这些异类产生的问题,让它们能像对象一样进行交互。

包装类用途

Java中有些异类(8种基本数据类型)它们不能像对象一样进行属性和方法的调用以及进行相互之间的对象化处理,包装类的存在就是为了解决这些异类产生的问题,让它们能像对象一样进行交互。

包装类与基本数据类型之间的关系

img_330089a3ec47483ddafbb1821c8ac9ec.png
image.png

包装类的常用方法

Java中所有包装类都是存放在java.lang这个包中。
以Integer为例,介绍它常用的属性和方法

public final class Integer(){
}

所有的包装类都是用final修饰,不允许被继承,无子类。

img_2b9b4f6e7576cfc77e51831d076235b0.png
image.png

基本数据类型和包装类的转换

  • 装箱 : 基本数据类型转换为包装类
  • 拆箱:包装类转换为基本数据类型

自动装箱(拆箱):

int a = 1;
Integer b = a;

手动装箱(拆箱):

int a = 1;
Integer b = new Integer(a);

//拆箱
int c = b.intValue();

基本数据类型和字符串之间转换

通过包装类完成基本数据类型和字符串之间转换。

public class Demo {
    public static void main(String[] args){
        int a = 3;
        String name = Integer.toString(a);
        System.out.println(name);
        //1.
        int b = Integer.parseInt(name);
        //2.包装类的valueOf方法先将字符串转为包装类,再通过自动拆箱完成基本数据类型的转换
        int d = Integer.valueOf(name);
       
    }
}

补充知识

包装类对象的初始值

首先看下基本数据类型的初始值:


img_28787fb0777c89f1e421ae8445b3a3ec.png
image.png

(注:上图中\u是unicode编码)

跟这些基本数据类型对应的包装类,它们的初始值是多少?

包装类的初始值为null。

包装类对象间比较

看代码:

public class WrapperTest {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Integer one=new Integer(100);
        Integer two=new Integer(100);
        System.out.println("one==two的结果:"+(one==two));//1
        
        Integer three=100;//自动装箱
        //Integer three=Integer.valueOf(100);
        //等号两端比较的是值
        System.out.println("three==100的结果:"+(three==100));//2 自动拆箱

        //执行这个语句时 编译器实际上执行的是这个:Integer four=Integer.valueOf(100);
        Integer four=100;
        System.out.println("three==four的结果:"+(three==four));//3
        
        Integer five=200;
        System.out.println("five==200的结果:"+(five==200));//4
        
        Integer six=200;
        System.out.println("five==six的结果:"+(five==six));//5
        
        Double d1=Double.valueOf(100);
        System.out.println("d1==100的结果:"+(d1==100));
        
        Double d2=Double.valueOf(100);
        System.out.println("d1==d2的结果:"+(d1==d2));
    }

}

上边代码这个部分:Integer.valueOf(100),为了执行的效率,在这个方法执行的过程中,java内存提供了一个类似于常量数组的缓存区(对象池),如果传入这个方法的参数是大于-128小于127这个范围,会去缓存区查找是否存在,如果有,直接产生,如果没有,实例化新的产生。这也就解释了为什么three==four打印出的值是ture。而five==six的结果是false。

八种基本数据类型中,除了float和double,其他的都是应用对象常量池这个概念的。

后续持续更新ing...

目录
相关文章
|
4天前
|
Java 编译器 容器
Java——包装类和泛型
包装类是Java中一种特殊类,用于将基本数据类型(如 `int`、`double`、`char` 等)封装成对象。这样做可以利用对象的特性和方法。Java 提供了八种基本数据类型的包装类:`Integer` (`int`)、`Double` (`double`)、`Byte` (`byte`)、`Short` (`short`)、`Long` (`long`)、`Float` (`float`)、`Character` (`char`) 和 `Boolean` (`boolean`)。包装类可以通过 `valueOf()` 方法或自动装箱/拆箱机制创建。
21 9
Java——包装类和泛型
|
1月前
|
Java 程序员
【Java基础面试八】、为啥要有包装类?
这篇文章解释了Java中存在包装类的原因:为了让基本数据类型具备对象的特性,使得它们可以被用作对象,以符合Java"一切皆对象"的设计理念,并简化将基本数据类型作为Object类型参数传递的问题。
【Java基础面试八】、为啥要有包装类?
|
1月前
|
设计模式 前端开发 Java
【前端学java】SpringBootWeb极速入门-分层解耦(03)
【8月更文挑战第13天】SpringBootWeb极速入门-分层解耦(03)
15 2
【前端学java】SpringBootWeb极速入门-分层解耦(03)
|
1月前
|
开发框架 前端开发 Java
【前端学java】SpringBootWeb极速入门-实现一个简单的web页面01
【8月更文挑战第12天】SpringBootWeb极速入门-实现一个简单的web页面01
50 3
【前端学java】SpringBootWeb极速入门-实现一个简单的web页面01
|
1月前
|
JSON 前端开发 Java
【前端学java】SpringBootWeb极速入门-请求参数解析(02)
【8月更文挑战第12天】SpringBootWeb极速入门-请求参数解析(02)
15 1
【前端学java】SpringBootWeb极速入门-请求参数解析(02)
|
20天前
|
存储 Java 测试技术
Java零基础教学(10):包装类
【9月更文挑战第1天】Java零基础教学篇,手把手实践教学!
17 1
|
20天前
|
算法 Java 开发者
Java 编程入门:从零到一的旅程
本文将带领读者开启Java编程之旅,从最基础的语法入手,逐步深入到面向对象的核心概念。通过实例代码演示,我们将一起探索如何定义类和对象、实现继承与多态,并解决常见的编程挑战。无论你是编程新手还是希望巩固基础的开发者,这篇文章都将为你提供有价值的指导和灵感。
|
22天前
|
存储 Java 程序员
Java中的集合框架:从入门到精通
【8月更文挑战第30天】在Java的世界里,集合框架是一块基石,它不仅承载着数据的存储和操作,还体现了面向对象编程的精髓。本篇文章将带你遨游Java集合框架的海洋,从基础概念到高级应用,一步步揭示它的奥秘。你将学会如何选择合适的集合类型,掌握集合的遍历技巧,以及理解集合框架背后的设计哲学。让我们一起探索这个强大工具,解锁数据结构的新视角。
|
24天前
|
Java 程序员 UED
Java中的异常处理:从入门到精通
【8月更文挑战第28天】在Java编程的世界里,异常处理是一块基石,它确保了程序的健壮性和可靠性。本文将通过深入浅出的方式,带你了解Java异常处理的基本概念、分类、以及如何有效地捕获和处理异常。我们将一起探索try-catch-finally结构的奥秘,并学习如何使用throws关键字声明方法可能会抛出的异常。此外,我们还会讨论自定义异常类的创建和使用,以及最佳实践。无论你是Java新手还是有一定经验的开发者,这篇文章都将为你提供宝贵的知识,帮助你编写出更加稳定和可靠的代码。
|
24天前
|
编解码 网络协议 Oracle
java网络编程入门以及项目实战
这篇文章是Java网络编程的入门教程,涵盖了网络编程的基础知识、IP地址、端口、通讯协议(TCP和UDP)的概念与区别,并提供了基于TCP和UDP的网络编程实例,包括远程聊天和文件传输程序的代码实现。
java网络编程入门以及项目实战