首页 > 编程语言 >Java常用类——包装类 小白版个人推荐

Java常用类——包装类 小白版个人推荐

时间:2024-08-19 23:05:40浏览次数:9  
标签:Java String 包装 System println Integer 白版 out

包装类及自动装箱/拆箱

包装类是将Java中的八种基本数据类型封装成的类,所有数据类型都能很方便地与对应的包装类相互转换,以解决应用中要求使用数据类型,而不能使用基本数据类型的情况。

int a = 10; //基本类型的数据
Integer b = new Integer(10); //包装类表示的数据

包装类的特点

  • 所有包装类都是final类型(不能派生子类);
  • 实例化包装类对象后,对象中保存的基本类型数据不能再改变;
  • 包装类封装大量有用的方法(如数据类型转换、判断大小写、最大值、最小值等);
  • 除Character类和Boolean类继承于Object类,其他的包装类都继承于Number类。

基本数据类型和包装类

基本数据类型 包装类
boolean Boolean类
byte Byte类
short Short类
int Integer类
long Long类
char Charactor类
float Float类
double Double类

包装类的共同点

  1. 包装类中包含的值不改变( 包装类实例化后不能修改保存的值 );
  2. 包装类有两个构造器
    • Integer(int value) ---指定int值的构造对象
    • Integer(String s) ---指定String值的构造对象
  3. 包装类中都有xxxValue()方法
    • int intValue() ---返回包装类对象的int值
    • float floatValue() ---返回包装类对象的float值
  4. 包装类中都有两个ValueOf()方法
    • static Integer valueOf(int i) ---指定int值的Integer实例
    • static Integer valueOf(String s) ---指定String值的Integer实例

自动装箱和拆箱

自动装箱和自动拆箱是基本数据类型与包装类之间的转换机制(通过编译器自动完成)
基本数据类型 ---自动装箱--->包装类;
包装类 ---自动拆箱 --->基本数据类型。
例:以int类型和Integer类型为例

public class Test01 {
    public static void main(String[] args) {
        // 自动装箱 int -> Integer
        int i = 10;
        Integer integer1 = i;
        System.out.println(integer1);

        //自动拆箱 Integer -> int
        int j = 20;
        Integer integer2=j;
        int k = integer2;
        System.out.println(j);
    }
}

包装类型和String类型的相互转换

例:以 Integer 和 String 为例

public class Test03 {
    public static void main(String[] args) {
        //包装类Integer -> String
        Integer i = 100; //自动装箱
        //方式1
        String str1 = i+"";
        //方式2 调用Integer的toString()方法
        String str2 = i.toString();
        //方式3 调用静态方法String.valueOf()
        String str3 =String.valueOf(i);

        System.out.println(str1);
        System.out.println(str2);
        System.out.println(str3);

        //String -> 包装类Integer
        String str4 = "123";
        //方式1 调用包装类的parseXXX()方法
        Integer i2 = Integer.parseInt(str4);//自动拆箱
        //方式2
        Integer i3 = new Integer(str4); //构造器

        System.out.println(i2);
        System.out.println(i3);

    }
}

例题1:
以下两个题目输出结果相同吗?为什么?

Object obj1 = true?new Integer(1):new Double(2.0); //三元运算符(是一个整体)
System.out.println(obj1);
//运行结果 
// 三元运算符是一个整体,精度最高的是double,所以结果是1.0
1.0
Object obj2;
if(true){
    obj2 = new Integer(1);
}else{
    obj2 = new Double(2.0);
}
System.out.println(obj2);
//运行结果
//if、else是分别独立的语句,是什么输出什么
1

例题2(Integer类):

public class Test04 {
    public static void main(String[] args) {
        Integer i1 = new Integer(10);
        Integer i2 = new Integer(10);
        System.out.println(i1 == i2); // false (判断i1和i2是否指向同一个对象)
        System.out.println(i1.equals(i2)); // true

        Integer j1 = 20; //底层 Integer.valueOf(20) {-128~127}直接返回对象引用,否则创建新的对象new Integer()
        Integer j2 = 20; //底层 Integer.valueOf(20)
        System.out.println(j1 == j2); // true

        Integer k1 = 128; //超出{-128~127}范围,创建新的对象new Integer()
        Integer k2 = 128;
        System.out.println(k1 == k2); // false (判断k1和k2是否指向同一个对象)
    }
}

例题3(Integer):

public class Test05 {
    public static void main(String[] args) {
        Integer i1 = new Integer(127);
        Integer i2 = new Integer(127);
        System.out.println(i1 == i2); // false i1和i2是两个不同的对象

        Integer i3 = new Integer(128);
        Integer i4 = new Integer(128);
        System.out.println(i3 == i4); // false  i3和i4是两个不同的对象

        Integer i5 = 127;  //底层Integer.valueOf(127)
        Integer i6 = 127;
        System.out.println(i5 == i6); // true

        Integer i7 = 128;  //底层new Integer(128)
        Integer i8 = 128;
        System.out.println(i7 == i8); // false 同i3和i4

        Integer i9 = 127;
        Integer i10 = new Integer(127);
        System.out.println(i9 == i10); // false

        int a1 = 127;
        Integer b1 = 127;
        System.out.println(a1 == b1); // true  只要有基本数据类型,判断的是值是否相等,不管是int还是Integer

        int a2 = 128;
        Integer b2 = 128;
        System.out.println(a2 == b2); // true 同上

    }
}

如有错误,请大家批评指正,共同进步。

标签:Java,String,包装,System,println,Integer,白版,out
From: https://www.cnblogs.com/wmshun/p/18368279

相关文章

  • Java常见数据结构
    Java常见的数据结构:1.栈2.队列3.数组4.链表5.二叉树6.二叉查找树7.平衡二叉树8.红黑树9.哈希表1.栈特点:“先进后出,后进先出”基本操作:push(入栈):将元素推入栈中。pop(出栈):从栈中移除并返回顶部的元素。peek(或top):查看栈顶的元素,......
  • Java数组02:数组内存分析、三种初始化方式及特点
    本节内容视频链接:Java数组03:三种初始化及内存分析_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV12J41137hu?p=53&vd_source=b5775c3a4ea16a5306db9c7c1c1486b51.数组内存分析堆:存放new的对象和数组;可以被所有线程共享,不会存放别的对象引用;栈:存放基本变量类型,会包含......
  • Java数组03:数组边界、数组的使用
    本节内容视频链接:https://www.bilibili.com/video/BV12J41137hu?p=55&vd_source=b5775c3a4ea16a5306db9c7c1c1486b5https://www.bilibili.com/video/BV12J41137hu?p=55&vd_source=b5775c3a4ea16a5306db9c7c1c1486b51.数组边界数组下标的合法区间[0,Length-1],如果越界就会报......
  • Java中的集合
    Java中的集合一、Iterable1.1、Iterable简介1.2、Iterable功能1.3、使用场景1.4、实现Iterable接口二、Collection2.1、Collection接口的功能2.2、使用场景2.3、实现方法2.4、优点2.5、可能的限制三、ArrayList3.1、底层数据结构3.2、......
  • JAVA基础:File类
    目录前言file对象的创建file的常用方法前言file类表示的是系统中的一个文件或者文件夹file类和系统中的文件或者文件夹不需要是一一对应的,我们可以在file类中写你系统中不存在的文件或文件夹file类中存储的实际上是文件或文件夹的抽象路径,这些路径可以是绝对路径也可......
  • javase—day07
    aObjectStream_ObjectInPutStreamDemo02packagecom.se.aObjectStream;importjava.io.BufferedInputStream;importjava.io.FileInputStream;importjava.io.IOException;importjava.io.ObjectInputStream;/***反序列化的类型:*ObjectInputStream(InputStreami......
  • 【实战指南】使用 Redis 实现 Java 项目中的防重复提交功能:从原理到实战(实战篇)
    文章目录使用Redis实现Java项目中的防重复提交功能1.引言1.1为何需要防重复提交功能1.2重复提交导致的问题1.3引入Redis作为解决方案的一部分2.基础知识2.1Redis简介2.2Java环境搭建2.3环境配置3.理论基础3.1HTTP请求的特点3.2前端表单提交3.3后......
  • Java基础——HttpStatus.class 源码中状态码总结
    HttpStatus.class源码中状态码总结HttpStatus.class源码////Sourcecoderecreatedfroma.classfilebyIntelliJIDEA//(poweredbyFernFlowerdecompiler)//packageorg.springframework.http;importorg.springframework.lang.Nullable;publicenumH......
  • JAVA基础之-参数传递
    准备整理一个系列,这是系列的第一篇。这是一个经典的问题,也是JAVA程序员所必须掌握的。一、小结论和例子1.1结论内容没有多少,可以先说结论:变量的表示和参数传递变量是如何表示,尤其是参数是如何表示的 存储则具体看变量是什么类型:类静态、实例变量、方法变量表示-基本类......
  • Docker部署Java项目
    本文使用Dockerfile的形式进行Java项目的部署第一步:创建Dockerfile文件Dockerfile是用于创建Docker对象的脚本,先创建Dockerfile文件,以下为我的文件模版: FROM:java对应的jdk版本RUN: 在构建过程中执行命令,用于安装软件、配置环境等ENV:设置环境变量WORKDIR:指向构建镜像时使......