Java中的常用类(重点学习)

Java中的常用类

包装类

在一个类中,会使用到基本数据类型。基本类型就是一个数,加点属性,加点构造器、方法,将这些进行一个封装,产生的一个类,就是包装类。
基本数据类型对应的包装类:

基本数据类型对应的包装类继承关系
byteByteNumber–>Object
shortShortNumber–>Object
intIntegerNumber–>Object
longLongNumber–>Object
floatFloatNumber–>Object
doubleDoubleNumber–>Object
charCharacterNumber–>Object
booleanBooleanNumber–>Object

上面的继承关系表示的是:上面的所有的包装类继承的是Number,又因为Object是所有类的父类,所以上面的类是间接的继承Object,直接继承是Number。
现在还会存在的疑问是已经存在基本数据类型,为什么还会出现包装类?

  • 因为Java是一门面向对象的语言,我们所用到的也是面向对象的思维,面向对象思维最擅长的就是操纵各种类,如果把基本数据类型编程包装类,就可以对类进行操纵。
  • 数组是我们所学习过的内容,它就是用来存放东西的,存放基本数据类型和引用数据类型。在之后我们还会学习到集合,一样的用来存放东西的,但是只能用来存放引用数据类型。
  • 现在学习了包装类,是否以后就不用基本数据类型呢?
    • 不是。在很多时候我们是用不到包装类的,因为我们使用基本数据类型更加简洁,还能节省空间。
      在上面的八个包装类中,它们的用法是相同的,只要会一个,其他的也就都一样。
      在API文档(Java使用手册)中我们可以知道Integer在lang包中,所以可以直接进行使用,不需要导包(java中java.lang包的内容是自动导入的,不需要手动导入,其它必须手动导入)。
      0
      上图我们可以看到Integer的层次关系。
      继承关系:Integer–>Number–>Object
      实现接口:直接实现Comparable:当中一定实现了一个方法:compareTo方法–>内部比较器
      在API中,我们查看Integer可以发现,在其中进行了这样的介绍:
      5

Integer类在对象中包装了一个基本类型int的值:表示的是给基本数据类型加入了其他的一些其他的构造器、其他的一些方法就形成了Integer这样的一个包装类。
Integer类型对象包含一个int类型的字段。
在API中对Integer进行了属性、方法、构造器等的介绍,如下所示,对API中的字段(属性)进行了应用:
1
在使用该包装类的时候,我们可以知道一个“物极必反”原则,也就是在输出最值的时候,进行加操作或减操作,就会获取到相反的值:
2
构造器的使用,就是给包装的int数据类型的赋值。
3
4
如果说传入的参数不对,就会报出下图中的异常,因为在该包装类中,已经抛出了这样的一个异常:
6
如果传入非数字信息,就会出现原本抛出的异常(运行时异常):
7
String类型的参数作构造器,谁调用了这个构造器,已经告知这个构造器中可能出现的异常,只要传入的不是全数字就会抛出异常。
在一个过程中,我们把包装类给到该类型,就属于拆箱。反之,如果把该类型给到包装类就属于装箱。如下图所示:
8
常用方法:

  • compareTo:
    9
    为什么结果会等于1,这时候就需要进入该方法看源码进行理解:
    10
    00
  • equals:
    在看到equals时不禁会想到==,它们之间的关系是非常的密切的,equals是判断两个的值是不是相等,equals判断的是两个值之间是不是相等关系。
    1
    2
    可以看到上面的方法重载,用一个Object来接收Integer,在下面的语句中就将obj转化成了Integer,调用了一个inValue的方法。
    equals重写了object中的equals方法,在方法中进行比较的是:具体封装的value值是否相等。
    3
    注意:
第一种情况,自动装箱的包装类进行比较
Integer I1 = 12;
Integer I2 = 12;
System.out,print(I1==I2);//true
System.out,print(I1.equals(I2));//true,这里需要关注的是在某个区间是true,超出区间则是false。
第二种情况,new关键字进行比较
Integer I1 = new Integer(66);
Integer I2 = new Integer(66);
System.out,print(I1.equals(I2));//true
System.out,print(I1==I2);//false,表示的是不同的两个地址,所以是不相等的

自动装箱的包装类进行比较:

4
2
3
1

Integer I1 = 116;
Integer I2 = 116;

上面的两个数进行比较,在-127-128之间,那么输出就会是true,如果不是则是false。
1
2
3
4
5
数在-128-127之间,比较的是数,返回的是true。
如果没在这个区间,那么就会在这个底层会自动的创建一个对象,比较的就是地址值,所以返回输出的就是false。
数组cache的区间:

0-128
1-127
255127
  • intvalue()
    以int类型返回该Integer的值。所以它的返回值是int。
    0
  • parseint
    传一个String的值,用int来接收:
    错误示范:
    1
    正确示范:
    2
  • toString
    3
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值