Java(11)基本数据类型包装类的使用

一、基本数据类型包装类


    基本数据类型    默认值        引用数据类型    默认值
    byte                         0                            Byte        null (继承于java.lang.Number包)
    short                        0                           Short        null (继承于java.lang.Number包)
    int                             0                        Integer        null  (继承于java.lang.Number包)
    long                          0                           Long        null   (继承于java.lang.Number包)
    float                        0.0                          Float        null  (继承于java.lang.Number包)
    double                    0.0                      Double        null  (继承于java.lang.Number包)
    char                         ''                         Character    null
    boolean                   false                 Boolean        null

1、基本数据类型之间的关系 互相兼容
  2、  基本数据类型对应的包装类 不存在任何关系 
                   一点点关系 个别是兄弟 是继承于Number类的子类

二、Integer包装类

    重写Object类中的equals方法,比较的是值

1、基本数据类型转化为基本数据包装类(装箱)

若jdk>1.5    自动装箱(值类型   变成了引用类型)

       包装类型  对象 =  基本数据类型

       默认jvm自动调用 static Integer valueOf(int i)方法

若jdk<1.5   手动装箱

      包装类型 对象  = new  包装类型( 基本数据类型)

2、包装类转化为基本数据类型(拆箱)      

若jdk>1.5    自动拆箱 (引用类型   变成了值类型)

      基本数据类型 变量名 = 包装类的对象;

      默认jvm自动调用 public int intValue( )方法

若jdk<1.5   手动拆箱

      基本数据类型  变量名= 包装类的对象.intValue( );

反编译: javap   -c  类名

三、包装类中的部分方法

1、重写 toString ( )方法

2、重写 equals( )方法

3、重写 hashCode( )方法  //equals返回true ,hashCode值相等

>>>>>>>为什么重写equals()方法,需要重写hashCode()方法?

在API中这样描述:

  • 如果根据 equals(Object) 方法,两个对象是相等的,那么对这两个对象中的每个对象调用 hashCode 方法都必须生成相同的整数结果。
  • 如果根据 equals(java.lang.Object) 方法,两个对象不相等,那么对这两个对象中的任一对象上调用 hashCode 方法 要求一定生成不同的整数结果。但是,程序员应该意识到,为不相等的对象生成不同整数结果可以提高哈希表的性能。

******字符串和基本数据类型之间的转化*****

4、String ------->int

  • 1、Integer(String s)  通过Integer 的构造方法,先将String类型转化为Integer类
  • //NumberFormatException 在进行String类型转换的时候 要求String里面包含的内容必须是数字
  • 再用in.intValue( )方法将Integer手动拆箱为int
  • 2、第二种 static int parseInt(String s)           使用Integer类中的静态方法 完成String转成int

5、int--->String

  •     1、String s1 = e + "";              //+ 代表连接符号 当一个基本数据类型 + ""就变成了String
  •   2、Integer(int s)  通过Integer 的构造方法,先将int类型转化为Integer类
  •       再toString()方法,将Integer转化为String 类型      String s2 = in2.toString();
  • 3、第三种 使用Integer类中的静态方法完成 int -->String       String s3 = Integer.toString(e);
  • 4、第四种 String 类 static String valueOf(int i) 
  •         String s4 = String.valueOf(e);

四、注意事项

    1、虽然基本数据类型包装类 是引用数据类型,但是在方法传参的时候,它传的是值本身 

   2、==Java中比较对象时,永远比较的是地址值

   3、Integer在自动装箱的时候 调用了 valueOf()方法
            如果int 类型的值 落在
            -128 to 127 范围之间 就不创建新的对象了
            如果不在这个范围内 就会创建新的对象

猜你喜欢

转载自blog.csdn.net/weixin_42496678/article/details/81275081