包装类及自动装箱/拆箱

包装类是将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常用类——包装类 小白版个人推荐的更多相关文章

  1. Java常用类:包装类,String,日期类,Math,File,枚举类

    Java常用类:包装类,String,日期类,Math,File,枚举类

  2. Java常用类-包装类

    包装类 ​ Java中的基本类型功能简单,不具备对象的特性,为了使基本类型具备对象的特性,所以出现了包装类,就可以像操作对象一样操作基本类型数据;包装类不是为了取代基本数据类型,而是在数据类型需要使用 ...

  3. java常用类——包装类

    八种基本数据类型对应八种包装类和它们的继承关系 基本数据类型 对应的包装类 boolean Boolean byte Byte short Short int Integer long Long ch ...

  4. Java常用类学习笔记总结

    Java常用类 java.lang.String类的使用 1.概述 String:字符串,使用一对""引起来表示. 1.String声明为final的,不可被继承 2.String ...

  5. Java 常用类总结(SE基础)

    本篇博客对java常用类相关知识进行了归纳总结,比较详细,适用于学习和复习. 1. 字符串相关的类 1.1 String String是一个final类,代表不可变的字符序列.不可被继承. Strin ...

  6. Java基础 —— Java常用类

    Java常用类: java.lang包: java.lang.Object类: hashcode()方法:返回一段整型的哈希码,代表地址. toString()方法:返回父类名+"@&quo ...

  7. Java常用类之要点总结

    Java常用类之要点总结

  8. Java工具类—包装类

    Java工具类--包装类 我们都知道,JDK 其实给我们提供了很多很多 Java 开发者已经写好的现成的类,他们其实都可以理解成工具类,比如我们常见的集合类,日期相关的类,数学相关的类等等,有了这些工 ...

  9. Java常用类的使用

    Java常用类 1. Optional 在我们的开发中,NullPointerException可谓是随时随处可见,为了避免空指针异常,我们常常需要进行 一 些防御式的检查,所以在代码中常常可见if( ...

  10. Java常用类,这一次帮你总结好!

    常用类 常用类概述: 内部类 Object类 包装类 数学类 时间类 字符串 String Builder和StringBuffer DecimalFormat 一.内部类 概念:在一个类内部再定义一 ...

随机推荐

  1. Godot中鼠标点击3D对象

    Godot中鼠标点击3D对象 方法一:调用RigidBody3D中的input_event事件 RigidBody3D中有信号input_event可以接受鼠标的输入,用这个信号可以处理点击事件. 具 ...

  2. ComfyUI基础篇:为什么要学 ComfyUI?

    前言: 在AI生成图像领域,有许多产品,例如 Midjourney 和 Stability AI 等.为什么要学习 ComfyUI 呢?我斗胆带大家一起分析一下. 目录 1.Midjourney VS ...

  3. 树莓派开机自启动python程序

    step1 添加程序到rc.local 添加到rc.local 里的py脚本文件将会在树莓派开机是自动运行,这种方式适合没有显示器,具体操作如下: sudo nano /etc/rc.local st ...

  4. mac idea 更换主题

    使用 主题一 xcode-dark-theme:点我直达 主题二 one-dark-theme:点我直达 主题三 dark-purple-theme:点我直达 主题四(推荐) vuesion-them ...

  5. CF2B

    非常恶心的dp题,测试数据也恶心,坑多,特别是0的坑 #include <iostream> #include <utility> #include <string> ...

  6. 使用libzip压缩文件和文件夹

    简单说说自己遇到的坑: 分清楚三个组件:zlib.minizip和libzip.zlib是底层和最基础的C库,用于使用Deflate算法压缩和解压缩文件流或者单个文件,但是如果要压缩文件夹就很麻烦,主 ...

  7. Memcache 与 Memcached 的区别

    Memcached 从0.2.0开始,要求PHP版本>=5.2.0,Memcache 要求PHP版本>=4.3. Memcached 最后发布时间为2018-12-24,Memcache ...

  8. oeasy教您玩转vim - 4 - # 深入帮助

    深入帮助 回忆上节课内容 上次制作了 oeasy.txt 用 vim oeasy.txt 打开了文件 :f[ile] 查询了当前文件 的信息 从 正常模式或命令模式(Normal mode) 切换到 ...

  9. Web开发中【密码加密】详解

    作为一名Web开发人员,我们经常需要与用户的帐号系统打交道,而这其中最大的挑战就是如何保护用户的密码.经常会看到用户账户数据库频繁被黑,所以我们必须采取一些措施来保护用户密码,以免导致不必要的数据泄露 ...

  10. windows中新建文件菜单消失的解决办法

    具体解决办法: https://jingyan.baidu.com/article/cbcede07577f4702f40b4dfd.html 右键中新建文本文件 菜单消失: 注册表编辑器: 路径: ...