首页 > 编程语言 >JavaSE--基本数据类型的包装类

JavaSE--基本数据类型的包装类

时间:2023-08-15 21:44:37浏览次数:37  
标签:-- 数据类型 System int println Integer JavaSE out

一、八种包装类

1、为什么需要基本数据类型的包装类

  有以下需求:方法参数为Object obj,但是有需要传进去一个数字或者字符,

public class IntegerTest01 {
    public static void main(String[] args) {
        // 有没有这种需求:调用doSome()方法的时候需要传一个数字进去
        // 但是数字属于基本数据类型,而doSome()方法参数的类型是Object
        // 可见doSome()方法无法接收基本数据类型的数字可以传一个数字对应的包装类进去

        // 把100这个数字经过构造方法包装成对象
        MyInt myInt = new MyInt(100);
        // doSome()方法虽然不能直接传100,但是可以传一个100对应的包装类型。
        doSome(myInt);
    }

    public static void doSome(Object obj){
        System.out.println(obj);
    }
}

2、八种包装类型

byte                    java.lang.Byte
short                   java.lang.Short
int                     java.lang.Integer
long                    java.lang.Long
float                   java.lang.Float
double                  java.lang.Double
boolean                 java.lang.Boolean
char                    java.lang.Character

 

二、Integer(其他的包装类和Integer用法一样)

1、Integer类的构造方法

// Integer(int)
// Integer(String)
public class IntegerTest03 {
    public static void main(String[] args) {

        // 将数字100转换成Integer包装类型(int --> Integer)
        Integer x = new Integer(100);
        System.out.println(x);

        // 将String类型的数字,转换成Integer包装类型(String --> Integer)
        Integer y = new Integer("123");
        System.out.println(y);

        // double -->Double
        Double d = new Double(1.23);
        System.out.println(d);

        // String --> Double
        Double e = new Double("3.14");
        System.out.println(e);
        
        Integer a = new Integer("中文");// 报错 数字格式化异常
    }
}

2、访问包装类的常量获取最大值最小值

System.out.println("int的最大值:" + Integer.MAX_VALUE);
System.out.println("int的最小值:" + Integer.MIN_VALUE);
System.out.println("byte的最大值:" + Byte.MAX_VALUE);
System.out.println("byte的最小值:" + Byte.MIN_VALUE);

3、Integer类常用的方法

// 手动装箱
Integer x = new Integer(1000);

// 手动拆箱
int y = x.intValue();
System.out.println(y);
// static int parseInt(String s)
// 静态方法,传参String,返回int
int retValue = Integer.parseInt("123"); // String -转换-> int
//int retValue = Integer.parseInt("中文"); // NumberFormatException
System.out.println(retValue + 100);

// 其他包装类也有
double value2 = Double.parseDouble("3.14");
System.out.println(value2 + 1);
// static String toBinaryString(int i)
// 静态的:将十进制转换成二进制字符串
String binaryString = Integer.toBinaryString(3);
System.out.println(binaryString);

// static String toHexString(int i)
// 静态的:将十进制转换成十六进制字符串
String hexString = Integer.toHexString(16);
System.out.println(hexString);

//static String toOctalString(int i)
// 静态的:将十进制转换成八进制字符串
String octalString = Integer.toOctalString(8);
System.out.println(octalString); // "10"

//static Integer valueOf(int i)
// 静态的:int-->Integer
Integer i1 = Integer.valueOf(100);
System.out.println(i1);

// static Integer valueOf(String s)
// 静态的:String-->Integer
Integer i2 = Integer.valueOf("100");
System.out.println(i2);

 

三、装箱、拆箱

1、装箱、拆箱

  装箱:基本数据类型--转换为-->引用数据类型

  拆箱:引用数据类型--转换为-->基本数据类型

public class IntegerTest02 {
    public static void main(String[] args) {

        // 123这个基本数据类型,进行构造方法的包装达到了:基本数据类型向引用数据类型的转换
        // 基本数据类型 -(转换为)->引用数据类型(装箱)
        // 手动装箱
        Integer i = new Integer(123);

        // 将引用数据类型--(转换为)-> 基本数据类型
        // 手动拆箱
        float f = i.floatValue();
        System.out.println(f); //123.0

        // 将引用数据类型--(转换为)-> 基本数据类型(拆箱)
        // 手动拆箱
        int retValue = i.intValue();
        System.out.println(retValue); //123
    }
}
// Number是一个抽象类,无法实例化对象。
Number类中有这样的方法:
    byte byteValue() 以 byte 形式返回指定的数值
    abstract  double doubleValue()以 double 形式返回指定的数值
    abstract  float floatValue()以 float 形式返回指定的数值
    abstract  int intValue()以 int 形式返回指定的数值
    abstract  long longValue()以 long 形式返回指定的数值
    short shortValue()以 short 形式返回指定的数值
// 这些方法其实所有的数字包装类的子类都有,这些方法是负责拆箱的

2、自动装箱、自动拆箱

jdk1.5之后有了自动装箱和自动拆箱

  自动装箱:基本数据类型自动转换成包装类

  自动拆箱:包装类自动转换成基本数据类型

// 900是基本数据类型,i是包装类型
// 基本数据类型转换为包装类型:自动装箱
Integer i = 900;

// x是基本数据类型,i是包装类型
// 包装类型转换为基本数据类型:自动拆箱
int x = i;

// y还是引用,还是保存的内存地址
Integer y = 100; // 等同于new Integer(100);
// 这里y会自动拆箱,自动转换成基本数据类型
System.out.println(y + 1);

 3、注意

Integer a = 128;
Integer b = 128;
System.out.println(a == b);// false

Integer x = 127;
Integer y = 127;
System.out.println(x == y);// true

// 注意:
    java中为了提高程序的执行效率,将[-128到127]之间所有的包装对象提前创建好,
放到了一个方法区的“整数型常量池”当中了,目的是只要用这个区间的数据不需要
再new了,直接从整数型常量池当中取出来

 

标签:--,数据类型,System,int,println,Integer,JavaSE,out
From: https://www.cnblogs.com/hyy-0/p/17619044.html

相关文章

  • 配置无线网络
     目标:配置图示拓扑,使得笔记本电脑能根据DHCP服务器获得IP,笔记本vlan为192.168.101.x基本概念:AP:accesspoint 使得笔记本电脑得以连接wifiAC:控制AP的设备 1.AP配置原理及思路AP自动获得IP思路:1.配置DHCP客户端2.配置DHCP服务......
  • IO流
    IO(输入/输出)流是指用于在程序和外部数据源(例如文件、网络连接、内存缓冲区等)之间进行数据传输的机制。它是计算机编程中处理输入和输出的基本方式之一。IO流可以分为两种类型:输入流和输出流。输入流用于从外部数据源中读取数据到程序中,而输出流用于将程序中的数据写入到外部数据......
  • python 全国省名列表
    ['吉林','天津','台湾','云南','海南','山西','四川','山东','江西','浙江','辽宁','福建','湖北','江苏','内蒙古','宁夏'......
  • ansible剧本
    ansible剧本简单剧本----name:这是一个安装nginx的剧本hosts:webtasks:-name:01安装nginxyum:name:nginxstate:installed-name:02启动nginxsystemd:name:nginxstate:started剧本的高级特性高级特性是为了简化剧本比如,创建10个系统的用户不用循环......
  • 【线性代数】线性方程组 如何求方程组的解/基础解系/通解
    1.如何求齐次方程组的基础解系前面已经学过:基础解系的定义为:一个向量组中所有的向量都是原方程的解,并且线性无关,又能由这个向量组线性表出这个方程组的所有解。先讲齐次方程组是因为它右侧常数都为0,解起来更为简单。步骤:先对齐次方程组的系数矩阵作初等行变换,直到化为行阶梯矩......
  • Python教程(9)——Python变量类型列表list的用法介绍
    在Python中,列表(list)是一种有序、可变的数据结构,用于存储多个元素。列表可以包含不同类型的元素,包括整数、浮点数、字符串等。实际上列表有点类似C++语言中的数组,但仅仅只是类似,和数组还是有点不一样的。列表非常适合利用顺序和位置定位某一元素,尤其是当元素的顺序或内容经常发生改......
  • C语言数据的存储
    目录类型的基本归类整形在内存中的存储原码、反码、补码大小端介绍练习浮点型在内存中的存储浮点数存储的例子浮点数存储规则类型的基本归类整形家族:charunsignedcharsignedcharshortunsignedshort[int]signedshort[int]intunsignedint......
  • ThreadLocal的学习心得
    ThreadLocal是Java提供的线程本地存储机制,可以实现多线程环境下数据的隔离。主要特点是:每个线程都有自己的实例副本,实现了线程的数据隔离。ThreadLocal中存储的值对其他线程都不可见。通过get()和set()来读写当前线程的实例副本,避免了线程安全问题。本地线程副本通过弱......
  • 力扣---833. 字符串中的查找与替换
    你会得到一个字符串 s (索引从0开始),你必须对它执行 k 个替换操作。替换操作以三个长度均为 k 的并行数组给出:indices, sources,  targets。要完成第 i 个替换操作:检查 子字符串  sources[i] 是否出现在 原字符串 s 的索引 indices[i] 处。如果没有出......
  • 第8章 函 数
    8.1定义函数1.函数分为函数入口和函数代码块2.函数代码块也需要严格缩进,代表函数的内容3.使用文档字符串备注是三对双引号......