Java 常用类列举

一、Object类

Object类是Java语言中的根类,即所有类的父类。它中描述的所有方法子类都可以使用。所有类在创建对象的时候,最终找的父类就是Object。

1.1Object类中的方法

/**
 * native 方法,用于返回当前运行时对象的 Class 对象,使用了 final 关键字修饰,故不允许子类重写。
 */
public final native Class<?> getClass()
/**
 * native 方法,用于返回对象的哈希码,主要使用在哈希表中,比如 JDK 中的HashMap。
 */
public native int hashCode()
/**
 * 用于比较 2 个对象的内存地址是否相等,String 类对该方法进行了重写以用于比较字符串的值是否相等。
 */
public boolean equals(Object obj)
/**
 * naitive 方法,用于创建并返回当前对象的一份拷贝。
 */
protected native Object clone() throws CloneNotSupportedException
/**
 * 返回类的名字实例的哈希码的 16 进制的字符串。建议 Object 所有的子类都重写这个方法。
 */
public String toString()
/**
 * native 方法,并且不能重写。唤醒一个在此对象监视器上等待的线程(监视器相当于就是锁的概念)。如果有多个线程在等待只会任意唤醒一个。
 */
public final native void notify()
/**
 * native 方法,并且不能重写。跟 notify 一样,唯一的区别就是会唤醒在此对象监视器上等待的所有线程,而不是一个线程。
 */
public final native void notifyAll()
/**
 * native方法,并且不能重写。暂停线程的执行。注意:sleep 方法没有释放锁,而 wait 方法释放了锁 ,timeout 是等待时间。
 */
public final native void wait(long timeout) throws InterruptedException
/**
 * 多了 nanos 参数,这个参数表示额外时间(以毫微秒为单位,范围是 0-999999)。 所以超时的时间还需要加上 nanos 毫秒。。
 */
public final void wait(long timeout, int nanos) throws InterruptedException
/**
 * 跟之前的2个wait方法一样,只不过该方法一直等待,没有超时时间这个概念
 */
public final void wait() throws InterruptedException
/**
 * 实例被垃圾回收器回收的时候触发的操作
 */
protected void finalize() throws Throwable { }
1.2 equals()方法

定义:**

Modifier and Type Method and Description
boolean equals(Object obj) 指示一些其他对象是否等于此。

作用:比较两对象是否相等,对比两对象的内存地址。

1.3 toString()方法

定义:

Modifier and Type Method and Description
String toString() 返回对象的字符串表示形式。

作用:返回该对象的字符串表示,以字符串表示对象类型+@+内存地址值。

1.4 clone()方法

clone()就是拷贝对象,分为深拷贝和浅拷贝。需要Object类的clone()和java.lang.Cloneable接口配合实现拷贝。

  • 浅拷贝:浅拷贝会在堆上创建一个新的对象(区别于引用拷贝的一点),不过,如果原对象内部的属性是引用类型的话,浅拷贝会直接复制内部对象的引用地址,也就是说拷贝对象和原对象共用同一个内部对象。
  • 深拷贝 :深拷贝会完全复制整个对象,包括这个对象所包含的内部对象。

二、String类

2.1特性、构造方法、重写equals

构造方法:依据API查询得出以下构造。
重写equals()方法

String重写equals()方法案例:
如何比较两个宠物对象是不是同一个宠物对象?
分析:两宠物对象所有属性值相同判断为同一对象。

class Pet {
    private String name;//名称
    private Integer health;//健康档案 0-100表示健康程度

    public Pet(String name, Integer health) {
        this.name = name;
        this.health = health;
    }

    @Override
    public boolean equals(Object obj) {
        //判断当前调用equals方法的对象和传递进来的对象是否是同一个
        if(this == obj){
            return true;
        }
        //判断传递进来的对象是否是Pet类型
        if(!(obj instanceof Pet)){
            return false;
        }
        //将obj向下转型为Pet引用,访问其属性
        Pet p = (Pet)obj;
        return this.name.equalsIgnoreCase(p.name) && this.health ==p.health;
    }
}

class Demo{
    public static void main(String[] args) {
        Pet pet1 = new Pet("大黄",100);
        Pet pet2 = new Pet("大黄",100);
        System.out.println(pet1.equals(pet2));//输出true,调用的是子类的equals方法
    }
}

注意:在重写Object中的equals方法时,一定要注意public boolean equals(Object obj) 的参数是Object类型,在调用对象的属性时,一定要进行类型转换,在转换之前必须进行类型判断。

区别:
Object类equals方法:对比内存地址值
String类equals方法:对比属性值

特性:String类不可变特性。

字符串是常量,它们的值在创建之后不能更改,即一旦这个字符串确定了,那么就会在内存区域中就生成了这个字符串。字符串本身不能改变,但变量中记录的地址值是可以改变的。当重新为str变量赋值时,会在内存中生产一个新的字符串。

2.2字符缓冲区

StringBuffer类、StringBuilder类称为可变字符序列,是一个类似于 String 的字符串缓冲区,通过某些方法调用可以改变该序列的长度和内容。
使用StringBuffer类、StringBuilder类可以实现动态操作字符串。
区别:


三、正则表达式

定义:Regular Expression,在代码中常简写为regex,正则表达式是一个字符串,使用单个字符串来描述、用来定义匹配规则,匹配一系列符合某个句法规则的字符串。

3.1规则

String类中涉及正则表达式的方法

String类中提供了matches()方法用于验证正则表达式,另外split()方法和replaceAll()方法中也可以使用正则表达式。

  • boolean matches(String regex):判断字符串是否匹配给定的规则
  • String [] split(String regex):根据给定正则表达式的匹配规则,拆分此字符串
  • String replaceAll(String regex,String replacement):将符合规则的字符串内容,全部替换为新字符串

四、日期类之Date类、Calendar类

4.1Date类

Date 类表示特定的瞬间,精确到毫秒。
构造方法:



常用方法:


4.2Calendar类

Calendar是日历类,在Date后出现,替换掉了许多Date的方法。该类将所有可能用到的时间信息封装为静态成员变量,方便获取。
Calendar为抽象类,由于语言敏感性,Calendar类在创建对象时并非直接创建,而是通过静态方法创建,将语言敏感内容处理好,再返回子类对象,如下:



Calendar类常用方法


注意事项

  • 西方星期的开始为周日,中国为周一。
  • 在Calendar类中,月份的表示是以0-11代表1-12月。
  • 日期是有大小关系的,时间靠后,时间越大。

五、NumberFormat类与DecimalFormat类

5.1NumberFormat类

对数字的格式化,在程序处理中也是非常常用的,例如将数字显示为货币格式、百分百格式等。

java.text.NumberFormat是所有数值格式的抽象基类,该类提供了静态方法获取对象。NumberFormat类提供格式化和解析数值的接口。

常用方法

方法 说明
getInstance(Locale) 获取常规数值格式。可以指定Local参数。
getNumberInstance(Locale) 获取常规数值格式。可以指定Local参数。
getIntegerInstance(Locale) 获取整数数值格式。可以指定Local参数。
getCurrencyInstance (Locale) 获取货币数值格式。可以指定Local参数。格式化后的数据前面会有一个货币符号,比如:“¥”
getPercentInstance(Locale) 获取显示百分比的格式。可以指定Local参数。比如:小数 0.53 将显示为 53%。

5.2DecimalFormat类

关于更复杂的数字格式化,可以使用java.text.DecimalFormat进行处理,DecimalFormat类是NumberFormat类的子类,该类通过模式字符串对数字格式化,格式符如表

格式符 作用
# 代表一个位置数字,如果该位置数字不存在,则省略不显示
, 代表数字中的分隔符
0 代表一个数字位置,如果该位置不存在,用0来补充,小数中多余部分四舍五入
. 表示小数点
E 科学计数法
% 用百分数表示数字

六、Math类

Math类简介

Math 类是包含用于执行基本数学运算的方法的数学工具类,如初等指数、对数、平方根和三角函数。
类似这样的工具类,其所有方法均为静态方法,并且一般不会创建对象。如System类.

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容