Object类、Objects类、StringBuilder类、Math类、System类、BigDecimal类、Date类、SimpleDateFormat类、Calendar类的一些常用方法

Object类

  • 一个类要么默认继承了Object类,要么间接继承了Object类,Object类是Java中的祖宗类
  • Object类的方法是一切子类都可以直接调用的,所以我们要学习Object类的方法

Object类的常用方法

方法名说明
① public String toString()默认是返回当前对象在堆内存中的地址信息:类的全限名@内存地址
②public Boolean equals(Object o)默认是比较当前对象与另一个对象的地址是否相同,相同返回true,不同返回false

①Object的toString方法:

问题引出

  • 开发中直接输出对象,默认输出对象的地址其实是毫无意义的。
  • 开发中输出对象变量,更多的时候是希望看到对象的内容数据而不是对象的地址信息。

toString存在的意义

  • 父类toString()方法存在的意义就是为了被子类重写,以便返回对象的内容信息,而不是地址信息!!

Object的equals方法:

问题思考

  • 直接比较两个对象的地址是否相同完全可以用“==”替代equals。

equals存在的意义

  • 父类equals方法存在的意义就是为了被子类重写,以便子类自己来定制比较规则。

Objects类

  • Objects类与Object还是继承关系,Objects类是从JDK 1.7开始之后才有的

官方在进行字符串比较时,没有对象自己的equals方法,而是选择了Objects的equals方法来比较两个对象。

Objects的equals方法比较的结果是一样的,但是更安全。

Objects的常见方法:

方法名说明
①public static boolean equals(Object a, Object b)比较两个对象的,底层会先进行非空判断,从而可以避免空指针异常。再进行equals比较
②public static boolean isNull(Object obj)判断变量是否为null,为null返回true,反之为false

源码

public static boolean equals(Object a, Object b) {
        return (a == b) || (a != null && a.equals(b));
    }

其中的a.equals(b) ,其实还是Object中的equals方法,源码如下

public boolean equals(Object obj) {
        return (this == obj);
    }

public static boolean isNull(Object obj) {
        return obj == null;
    }

StringBuilder类

StringBuilder概述

  • StringBuilder是一个可变的字符串类,我们可以把它看成是一个对象容器

作用:提高字符串的操作效率,如拼接、修改等。

StringBuilder 构造器

名称说明
public StringBuilder()创建一个空白的可变的字符串对象,不包含任何内容
public StringBuilder(String str)创建一个指定字符串内容的可变字符串对象

StringBuilder常用方法

方法名称说明
public StringBuilder append(任意类型)添加数据并返回StringBuilder对象本身
public StringBuilder reverse()将对象的内容反转
public int length()返回对象内容长度
public String toString()通过toString()就可以实现把StringBuilder转换为String
public StringBuilder delete(int start, int end)删除指定范围的字符,左闭右开
public StringBuilder deleteCharAt(int index)删除指定位置的字符

为什么拼接、反转字符串建议使用StringBuilder?

  • String:内容是不可变的、拼接字符串性能差
  • StringBuilder:内容是可变的、拼接字符串性能好、代码优雅。

使用场景

  • 定义字符串使用String
  • 拼接、修改等操作字符串使用StringBuilder

Math类

  • 包含执行基本数字运算的方法,Math类没有提供公开的构造器。
  • 如何使用类中的成员呢?看类的成员是否都是静态的,如果是,通过类名就可以直接调用

Math类的常用方法

方法名称说明
public static int abs(int a)获取参数绝对值
public static double ceil(double a)向上取整
public static double floor(double a)向下取整
public static int round(float a)四舍五入
public static int max(int a,int b)获取两个int值中的较大值
public static int min(int a,int b)获取两个int值中的较小值
public static double pow(double a,double b)返回a的b次幂的值
public static double random()返回值为double的随机值,范围[0.0,1.0)

System类

System 类概述

  • System的功能是通用的,都是直接用类名调用即可,所以System不能被实例化。

System 类的常用方法

方法名称说明
①public static void exit(int status)终止当前运行的Java 虚拟机,非零表示异常终止
②public static long currentTimeMillis()返回当前系统的时间毫秒值形式
③public static void arraycopy(数据源数组,起始索引,目的地数组,起始索引,拷贝个数)数组拷贝

方法介绍

该方法不要轻易使用,用的话就要等着收拾东西走人了

(补充知识)
时间毫秒值

  • 计算机认为时间是有起点的,起始时间: 1970年1月1日 00:00:00。
  • 时间毫秒值:指的是从1970年1月1日 00:00:00走到此刻的总的毫秒数,应该是很大的。1s= 1000ms。

原因:

  • 1969年8月,贝尔实验室的程序员肯汤普逊利用妻儿离开一个月的机会,开始着手创造一个全新的革命性的操作系统,他使用B编译语言在老旧的PDP-7机器上开发出了Unix的一个版本。
    随后,汤普逊和同事丹尼斯里奇改进了B语言,开发出了C语言,重写了UNIX。

1970年1月1日 算C语言的生日

public static void arraycopy(数据源数组,起始索引,目的地数组,起始索引,拷贝个数)
代码展示

 int[] arr={10,20,30,40,50};
 int[] arr1=new int[5];
 System.arraycopy(arr,0,arr1,0,3);
 for (int i = 0; i < arr1.length; i++) {
     System.out.print(arr1[i]+"\t");
   }    //10  20  30  0  0

一定要注意拷贝个数<=目的地数组的剩余空间长度


BigDecimal类

作用: 用于精度运算,解决浮点型运算精度失真问题。

使用步骤

  • 创建对象BigDecimal封装浮点型数据(最好的方式是调用方法)
方法名称说明
public static BigDecimal value0f(double val)包装浮点数成为BigDecimal对象

BigDecimal常用API

方法名称说明
public BigDecimal add(BigDecimal b)加法
public BigDecimal subtract(BigDecimal b)减法
public BigDecimal multiply(BigDecimal b)乘法
public BigDecimal divide(BigDecimal b)除法
public BigDecimal divide (另一个BigDecimal对象,精确几位,舍入模式)除法
   BigDecimal a=BigDecimal.valueOf(10.0);
   BigDecimal b=BigDecimal.valueOf(3.0);
   System.out.println(a.add(b));      //13.0
   System.out.println(a.subtract(b)); //7.0
   System.out.println(a.multiply(b)); //30.0
   // 注意事项: BigDecimal是一定要精度运算的,除不尽会出现问题 
   //System.out.println(a.divide(b));    
   //我们便要对其进行除法操作
   //参数一:除数 参数二:保小数位数 参数三:舍入模式
   System.out.println(a.divide(b,1, RoundingMode.CEILING)); //3.4

进行以上操作时一定要是两个BigDecimal对象。
但是a和b都不是double类型,我们要获得double类型,就要用到以下方法

方法名称说明
public double doubleValue()把BigDecimal类型数据转成double类型的数据

使用代码如下

       BigDecimal a=BigDecimal.valueOf(10.0);
       double rs = a.doubleValue();

Date类

Date 类概述

  • Date类的对象在Java中代表的是当前所在系统的此刻日期时间。

Date的构造器

构造器说明
public Date()创建一个Date对象,代表的是系统当前此刻日期时间。
public Date(long date)把时间毫秒值转换成Date日期对象。

Date的常用方法

方法名称说明
public long getTime()获取时间对象的毫秒值
public void setTime(long time)设置日期对象的时间为当前时间毫秒值对应的时间

Date 类记录时间的2种形式
形式1:日期对象

     // 1、创建一个日期对象代表了: 当前系统的此刻日期时间对象
     Date d=new Date();
     System.out.println(d);  //得到格式:Sat Dec 17 11:47:27 CST 2022

形式2:时间毫秒值

  • 指的是从1970年1月1日 00:00:00走到此刻的总的毫秒数,应该是很大的
      // 2、获取当前时间毫秒值
      Date d=new Date();
      long b=d.getTime();
      System.out.println(b);  //格式:1671248847284

SimpleDateFormat类

  • 可以对Date对象或时间毫秒值格式化成我们喜欢的时间形式。
  • 也可以把字符串的时间形式解析成日期对象。

SimpleDateFormat的构造器

构造器说明
public SimpleDateFormat()构造一个SimpleDateFormat,使用默认格式
public SimpleDateFormat(String pattern)构造一个SimpleDateFormat,使用指定的格式

SimpleDateFormat的格式化方法

格式化方法说明
public final String format(Date date)将日期格式化成日期/时间字符串
public final String format(Object time)将时间毫秒值式化成日期/时间字符串

格式化的时间形式的常用的模式对应关系如下:

  • y 年
  • M 月
  • d 日
  • H 时
  • m 分
  • s 秒
  • EEE 周几
  • a 上午或下午

默认格式
2020-11-11 13:27:06————————yyyy-MM-dd HH:mm:ss

我们可以定义的格式
2020年11月11日 13:27:06————————yyyy年MM月dd日 HH:mm:ss

代码展示

 SimpleDateFormat slf=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
 Date d=new Date();
 System.out.println(d);    //Sat Dec 17 12:16:42 CST 2022
 long l=System.currentTimeMillis();
 System.out.println(l);  //1671250602975
 System.out.println(slf.format(l));  //2022年12月17日 12时12分42秒
 System.out.println(slf.format(d));  //2022年12月17日 12时12分42秒

SimpleDateFormat解析字符串时间成为日期对象

解析方法说明
public Date parse(String source)从给定字符串的开始解析文本以生成日期

代码展示

SimpleDateFormat slf=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒"); 
Date d= slf.parse("2022年12月17日 12时12分42秒");
System.out.println(d);

注意: public Date parse(String source) 该方法中字符串参数的形式要与我们格式化的时间形式一致,否则会出现异常)


Calendar类

概述

  • Calendar代表了系统此刻日期对应的日历对象。
  • Calendar是一个抽象类,不能直接创建对象。

Calendar日历类创建日历对象的方法:

方法名说明
public static Calendar getInstance()获取当前日历对象

代码如下

Calendar c=Calendar.getInstance();

Calendar常用方法

方法名称说明
public void set(int field,int value)修改日历的某个字段信息
public int get(int field)取日期中的某个字段信息
public void add(int field,int amount)为某个字段增加/减少指定的值
public final Date getTime()拿到此刻日期对象
public long getTimeInMillis()拿到此刻时间毫秒值

注意: calendar是可变日期对象,-旦修改后其对象本身表示的时间将产生变化。

这些方法的详情使用请看 柠檬不甜会酸 博主的这篇博客
链接: Java学习笔记——Calendar类

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值