Java常用类

前言:在Java SE中提供了众多丰富类和接口,其中很多类前面已经使用过了,如String、StringBuiler和StringBuffer等。由于数量众多,本章不再一一介绍。本章归纳了Java中一些在日常开发过程中常用的类介绍一下,至于其他的不常用类读者可以自己查询Java SE API文档。

因为我个人原因,后续将减少发有关java的文章,将转接到C#语言

1 Java根类——Object

第一个应该介绍的常用类就是java.lang.Object类,它是Java所有类的根类,Java所有类都直接或间接继承自Object类,它是所有类的“祖先”。Object类属于java.lang包中的类型,不需要显示使用import语句引入,它是由解释器自动引入。

Object类有很多方法,常用的几个方法:

String toString():返回该对象的字符串表示。

boolean equals(Object obj):指示其他某个对象是否与此对象“相等”。

这些方法都是需要在子类中用来覆盖的,下面就详细解释一下它们的用法。

 1.1 toString()方法

为了日志输出等处理方便,所有的对象都可以以文本方式表示,需要在该对象所在类中覆盖toString()方法。如果没有覆盖toString()方法,默认的字符串是“类名@对象的十六进制哈希码 ”。

 哈希码(hashCode),每个Java对象都有哈希码(hashCode)属性,哈希码可以用来标识对象,提高对象在集合操作中的执行效率。

下面看一个示例,在前面章节介绍过Person类,它的代码如下: 

 

上述代码第①行覆盖toString()方法,返回什么样的字符串完全是自定义的,只要是能够表示当前类和当前对象即可,本例是将Person成员变量拼接成为一个字符串。

调用代码如下:输出结果如下:

 

使用System.out.println等输出语句可以自动调用对象的toString()方法将对象转换为字符串输出。读者可以测试一下,如果Person中没有覆盖toString()方法会是什么样子?它会输出类似如下的字符串:

com.a51work6.Person@15db9742

1.2 对象比较方法

在前面学习字符串比较的时,曾经介绍过有两种比较方法:==运算符和equals()方法,==运算符是比较 两个引用变量是否指向同一个实例,equals()方法是比较两个对象的内容是否相等,通常字符串的比较,只是关心的内容是否相等。

事实上equals()方法是继承自Object的,所有对象都可以通过equals()方法比较,问题是比较的规则是什么,例如两个人(Person对象)相等是指什么?是名字?是年龄?问题的关键是需要指定相等的规则,就是要指定比较的是哪些属性相等,所以为了比较两个Person对象相等,则需要覆盖equals()方法,在该方法中指定比较规则。

修改Person代码如下:上述代码第①行覆盖了equals(),为了防止传入的参数对象不是Person类型,则需要使用instance of运算符判断一下,见代码第②行。如果是Person类型,通过代码第③行强制类型转换为Person。代码第④行进行比较,把年龄作为比较是否相等的规则,不管其他属性只要是年龄相等,则认为两个Person对象相等。

调用代码如下:从上述代码中创建了两个Person对象,它们具有相关的年龄,这两个Person对象使用==比较结果是false,因为它们是两个不同的对象。使用equals()方法比较结果是true

 

2 包装类

Java8种基本数据类型不属于类,不具备对象的特征,没有成员变量和方法,不方便进行面向对象的操作。为此,Java提供包装类(Wrapper Class)来将基本数据类型包装成类,每个Java基本数据类型在java. Lang包中都有一个相应的包装类,每个包装类对象封装一个基本数据类型数值。对应关系如下表所示,除intchar类型外,其他的类型对应规则就是第一个字母大写。

基本数据类型与包装类对应关系表:包装类都是final的,不能被继承。包装类都是不可变类,类似于String类,一旦创建了对象,其内容就不可以修改。包装类还可以分成三种不同类别:数值包装类(ByteShortIntegerLongFloatDouble)、CharacterBoolean。下面分别详细介绍一下。

 

 2.1 数值包装类

这些数值包装类(ByteShortIntegerLongFloatDouble)都有一些相同特点。

  1. 构造方法类似

每一个数值包装类都有两个构造方法,以Integer为例,Integer构造方法如下:

Integer(int value):通过指定一个数值构造Integer对象。

Integer(String s):通过指定一个字符串s构造对象,s是十进制字符串表示的数值。

  1. 共同的父

类这6个数值包装类有一个共同的父类——NumberNumber是一个抽象类,除了这6个子类还有AtomicIntegerAtomicLongBigDecimalBigInteger,其中BigDecimalBigInteger后面还会详细介绍。Number是抽象类,要求它的子类必须实现如下6个方法:

byte byteValue():将当前包装的对象转换为byte类型的数值。

double doubleValue():将当前包装的对象转换为double类型的数值。

float floatValue():将当前包装的对象转换为float类型的数值。

int intValue():将当前包装的对象转换为int类型的数值。

long longValue():将当前包装的对象转换为long类型的数值。

short shortValue():将当前包装的对象转换为short类型的数值。

通过这6个方法数值包装类可以互相转换这6种数值,但是需要注意的是大范围数值转换为小范围的数值,如果数值本身很大,可以会导致精度的丢失。

  1. compareTo()方法

每一个数值包装类都有int compareTo(数值包装类对象)方法,可以进行包装对象的比较。方法返 回值是int,如果返回值是0,则相等;如果返回值小于0,则此对象小于参数对象;如果返回值 大于0,则此对象大于参数对象。

04. 字符串转换为基本数据类型

每一个数值包装类都提供一些静态parseXXX()方法将字符串转换为对应的基本数据类型,以Integer为例,方法定义如下:

static int parseInt(String s):将字符串s转换有符号的十进制整数。

static int parseInt(String s, int radix):将字符串s转换有符号的整数,radix是指定基数,基数用来指定进制。注意这种指定基数的方法在浮点数包装类(DoubleFloat)中没有的。

05. 基本数据类型转换为字符串

每一个数值包装类都提供一些静态toString()方法实现将基本数据类型数值转换为字符串,以 Integer为例,方法定义如下:

static String toString(int i):将该整数i转换为有符号的十进制表示的字符串。

static String toString(int i, int radix):将该整数i转换为有符号的特定进制表示的字符串,radix是基数可以指定进制。注意这种指定基数的方法在浮点数包装类(DoubleFloat)中没有的。

示例代码如下 

 

2.2 Character

Character类是char类型的包装类。Character类常用方法如下:

Character(char value):构造方法,通过char值创建一个新的Character对象。

char charValue():返回此Character对象的值。

int compareTo(Character anotherCharacter):方法返回值是int,如果返回值是0,则相等;如果返回值小于0,则此对象小于参数对象;如果返回值大于0,则此对象大于参数对象。

示例代码如下:

 

 2.3 Boolean

Boolean类是boolean类型的包装类。

01. 构造方法

  Boolean类有两个构造方法,构造方法定义如下:

   Boolean(boolean value):通过一个boolean值创建Boolean对象。

   Boolean(String s):通过字符串创建Boolean对象。s不能为nulls如果是忽略大小

"true"则转换为true对象,其他字符串都转换为false对象。

02. compareTo()方法

  Boolean类有int compareTo(Boolean包装类对象)方法,可以进行包装对象的比较。方法返回值是int,如果返回值是0,则相等;如果返回值小于0,则此对象小于参数对象;如果返回值大于0,则此对象大于参数对象。

03. 字符串转换为boolean类型

   Boolean包装类都提供静态parseBoolean  ()方法实现将字符串转换为对应的boolean类型,方法定义如下:

  static boolean parseBoolean(String s):将字符串转换为对应的boolean类。s不能为nulls如果是忽略大小写"true"则转换为true,其他字符串都转换为false

 示例代码如下:

  

本文献到此结束,下章节将继续讲Math类,大数值, 日期时间相关类和Java 8新日期时间相关类。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值