Java八大常用类(二) 包装类

简介: 常用类 1 包装类引入包装类均位于java.lang 包基本数据类型 包装类byte Byteboolean Booleanshort Shortchar Characterint Integerlong Longfloat Floatdouble Double优点:(1)某些方法的参数必须是对象,为了让基本数据类型的数据作为参数,提供包装类(2)包装类还可以提供更多功能(3)其他的特别重要的功能:比如可以实现字符串和基本数据类型之间的转换package oop2.demo05; /* 包装类的作用 */public cla

常用类 1 包装类

引入

包装类均位于java.lang 包

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

优点:

(1)某些方法的参数必须是对象,为了让基本数据类型的数据作为参数,提供包装类

(2)包装类还可以提供更多功能

(3)其他的特别重要的功能:比如可以实现字符串和基本数据类型之间的转换

package oop2.demo05;
    /*
    包装类的作用
     */
public class TestA {
    public static void main(String[] args) {
        String a = "10";
        int aa = 10;   //基本数据的类型
        Integer bb = new Integer(10);   //包装类表示的数据
        int i = Integer.parseInt(a);    //把String类型的数据转成int类型,a被转成int类型并存入i中
        int c = i * aa;           //
        //   Integer.parseInt()    常用:转化为int型
        //    Double.parseDouble()    转为为double型,其他的以此类推
        System.out.println(i);
        System.out.println(c);
        System.out.println(Integer.SIZE);    //32
        System.out.println(Integer.MAX_VALUE);
        System.out.println(Integer.MIN_VALUE);
    }
}

自动装箱、自动拆箱

自动装箱 基本数据类型 ---> 包装类

自动拆箱 包装类---> 基本数据类型

package oop2.demo05;
//基本类型的数据和包装类之间的相互转化
public class TestB {
    public static void main(String[] args) {
        int aa = 10;
        Integer bb = new Integer(aa);    //把基本的数据类型转为包装类
        int cc = bb.intValue();    //把包装类转成基本类型
       /*
        自动装箱   基本数据类型 ---> 包装类
        自动拆箱   包装类---> 基本数据类型
         */
        int a = 10;
        Integer b = a;     // 这是JDK的自动装箱  底层使用的是Integer.valueOf() 完成自动装箱过程
        int c = b;   //自动拆箱
                    // 底层使用intValue()完成自动拆箱的过程
    }
}

自动装箱、自动拆箱的使用

注意:

  1. JDK1.5 以后,增加了自动装箱和自动拆箱的功能。
  2. 自动装箱调用valueOf() 方法,而不是new Integer()方法
  3. 自动拆箱调用xxxValue() 方法
  4. 包装类在自动装箱时,为了提高效率,对于-128~127之间的值会进行缓存处理。超过范围后,对象之间不能再使用==进行数值比较,而是使用equals方法
package oop2.demo05;
public class TestC {
    public static void main(String[] args) {
        int a = 10;
        Integer b = 10;   //自动装箱
        System.out.println(a==b);            //自动拆箱   ture     b拆箱
        System.out.println(b.equals(a));     //自动装箱   ture     a装箱,判断a的值是否与b的值相同
        //==================================================================================
        Integer aa = new Integer(10);
        Integer bb = new Integer(10);
        System.out.println(aa == bb);        //False  aa与bb同一类型,不发生拆箱装箱。new两次Integer 缓存的物理地址不一样
        System.out.println(aa.equals(bb));   //true
        //======================================================================================
        Integer aaa = 122;    //自动装箱         在-128~127之内
        Integer bbb = 122;    //自动装箱
        System.out.println(aaa == bbb);         //true     aaa和bbb在-128~127之内,,此种写法,他们是同一类型,同一对象
        System.out.println(aaa.equals(bbb));    //true
        //======================================================================================
        Integer aaaa = 233;        //在-127~128之外,同一类型,同一对象
        Integer bbbb = 233;
        System.out.println(aaaa==bbbb);   //false   aaa和bbb在-128~127之外,相当于new两次Integer,导致了他们的物理地址不一致
        System.out.println(aaaa.equals(bbbb));   //这种情况下,只比较值大小是否相等,只能用equals方法
    }
}
相关文章
|
1天前
|
安全 Java 调度
Java一分钟:多线程编程初步:Thread类与Runnable接口
【5月更文挑战第11天】本文介绍了Java中创建线程的两种方式:继承Thread类和实现Runnable接口,并讨论了多线程编程中的常见问题,如资源浪费、线程安全、死锁和优先级问题,提出了解决策略。示例展示了线程通信的生产者-消费者模型,强调理解和掌握线程操作对编写高效并发程序的重要性。
30 3
|
2天前
|
Java
【JAVA基础篇教学】第五篇:Java面向对象编程:类、对象、继承、多态
【JAVA基础篇教学】第五篇:Java面向对象编程:类、对象、继承、多态
|
2天前
|
Java
【JAVA基础篇教学】第二篇:Java包装类
【JAVA基础篇教学】第二篇:Java包装类
|
3天前
|
存储 安全 Java
Java容器类List、ArrayList、Vector及map、HashTable、HashMap
Java容器类List、ArrayList、Vector及map、HashTable、HashMap
|
3天前
|
Java 编译器 开发者
Java一分钟之-继承:复用与扩展类的特性
【5月更文挑战第9天】本文探讨了Java中的继承机制,通过实例展示了如何使用`extends`创建子类继承父类的属性和方法。文章列举了常见问题和易错点,如构造器调用、方法覆盖、访问权限和类型转换,并提供了解决方案。建议深入理解继承原理,谨慎设计类结构,利用抽象类和接口以提高代码复用和扩展性。正确应用继承能构建更清晰、灵活的代码结构,提升面向对象设计能力。
9 0
|
3天前
|
Java
【Java多线程】面试常考 —— JUC(java.util.concurrent) 的常见类
【Java多线程】面试常考 —— JUC(java.util.concurrent) 的常见类
13 0
|
3天前
|
Java API 调度
【Java多线程】Thread类的基本用法
【Java多线程】Thread类的基本用法
6 0
|
3天前
|
SQL Java 数据库连接
JDBC Java标准库提供的一些api(类+方法) 统一各种数据库提供的api
JDBC Java标准库提供的一些api(类+方法) 统一各种数据库提供的api
9 0
|
4天前
|
Java
Java一分钟之-类与对象:面向对象编程入门
【5月更文挑战第8天】本文为Java面向对象编程的入门指南,介绍了类与对象的基础概念、常见问题及规避策略。文章通过代码示例展示了如何定义类,包括访问修饰符的适当使用、构造器的设计以及方法的封装。同时,讨论了对象创建与使用时可能遇到的内存泄漏、空指针异常和数据不一致等问题,并提供了相应的解决建议。学习OOP需注重理论与实践相结合,不断编写和优化代码。
26 1
|
6天前
|
Java 开发者
在Java中,接口和超类在多态性中扮演着重要的角色
Java中的接口和超类支持多态性,接口作为规范,允许多继承和回调机制;超类提供基类,实现代码重用和方法重写,两者共同促进代码的灵活性和可维护性。
26 10