Java 学习博客_12 入门——常用 API

这篇博客详细介绍了Java中Math、System和Object类的常用静态方法,包括绝对值、取整、随机数生成等。同时,讲解了Arrays工具类的使用,如数组排序和转换为字符串。还涉及到了Integer等基本类型包装类的转换方法,以及Date和SimpleDateFormat在日期处理上的应用。最后提到了Calendar类在日历操作中的功能。内容涵盖了Java基础和实用工具类的知识点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以黑马程序员全套Java教程网课为主。

Math

不用导包,成员变量、方法都带有static修饰,可以直接通过类名访问。

方法说明
public static int abs(int a)绝对值,支持 double float int long 类型
public static double ceil(double a)向上取整,返回一个 double 值
public static double floor(double a)向下取整,返回一个 double 值
public static int round(float a)四舍五入
public static int max(int a,int b)
public static int min(int a,int b)
public static double pow(double a,double b)a 的 b 次幂
public static double random()随机数,范围 [0.0,1.0)

随机数想要其他范围可以做算术运算。如 [0.0, 100.0)就用random()*100

System

不用导包,不能实例化,static

方法说明
public static void exit(int status)终止运行 JVM,非零表示非正常终止
public static long currentTimeMillis()返回当前时间到1970年1月1日的时间间隔,以毫秒为单位

currentTimeMillis() 可以整除求得当前年份;可以用两个 currentTimeMillis() 值做差求时间间隔等。

Object

Object 类是所有类的根类。

方法说明
public String toString()返回对象的字符串表示形式。建议子类全部重写该方法
public boolean equals(Object obj)比较对象是否相等(默认比较地址)。重写可以比较对象内容

toString() 方法

Object 中包含 toString 方法

public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
}

输出类名@+一串哈希值。

一般重写 toString() 方法,用于输出简明扼要的类信息。IDEA 中可以像构造方法和 getter / setter 一样自动生成。类似:

//手动实现
public String toString(){
return "{ Person:name=" + name +" age=" + age+"}";// name 和 age 都是本类中的成员变量
}

equals

s1.equals(s2)本质上是比较两个对象的地址,肯定是 false。

一般也会重写/自动生成可以比较两个对象内容是否一致的方法。

public boolean equals(Object o) {
    if (this==o) return true; //同一个对象
    if(o==null||getClass()!=o.getClass()) return false;//o是空对象,或这两个对象不属于一个类
    Student student=(Student) o;//因为调用 equals 传参的时候向上转型了,o 变成了 Object 类,要转回来
    if (age!=student.age)return false; 
    return name!=null?name.equals(student.name):student.name==null;//要么 name 都是空字符串,要么相同。equals() 方法只有非空字符串才能调用
}

Arrays 类

需要导包 java.util.Arrays,不能创建对象,成员是 static的。

方法说明
public static String toString(int[] a)返回形如 “[a, b, c]” 的字符串形式
public static void sort(int[] a)按数字顺序排列指定的数组

补充:工具类

以上工具类的特点都是:不能创建对象,但是成员方法都是 static 修饰,可以直接用类名访问。

不能创建对象的方法是:

public Math(){};
public Arrays(){};
public System(){};

自己写了无参构造方法,会把系统默认的无参构造方法覆盖。而该方法又是私有的,因此外界无法访问创建对象。

基本类型包装类

其中有一些方法能更好地处理基本数据类型。

包括:Byte, Short, Integer, Long, Float, Double, Character, Boolean

方法示例

方法说明
public static Integer valueOf(int i)把 int 转换为 Integer 类型
public static Integer valueOf(String s)把 String 转换为 Integer 类型

public String[] split(String regex) 把给定字符串用 regex 分隔开。

如给定字符串 s 是"1 2 3 4",s.split(" ")就会得到4个字符串:"1""2""3"“4”。

基本类型转换

int -> String:

① 空字符串""+int 类型

② String s=String.valueOf(i)

String -> int:

① Integer in=Integer.valueOf(s);

int i=intValue(in);

② int i=Integer.parseInt(s);

自动装箱和拆箱

装箱:基本类型->对应的包装类型

拆箱:包装类型->基本类型

Integer i=Integer.valueOf(100);//装箱
Integer ii=100;//自动装箱

ii=ii.intValue()+200;//拆箱
ii+=200;//自动拆箱

Integer i3=null;
i3+=300;//NullPointerException。因此对象使用之前最好先判断是否为 null

日期类

Date

Date 类,需要导包。**注意是 java.util 下的,而不是 java.sql 下的!**java.util 下的 Date 类非最终类,所以可以有子类, java.sql 下的 Date 类就是其子类。

方法说明
public Date()初始化一个 Date 对象,值为其被分配时的时间,精确到毫秒
public Date(long Date)分配一个 Date 对象,值为从标准时间起指定的毫秒数
public long getTime()获取日期对象从标准时间到现在的毫秒数
public void setTime(long time)设置时间,单位为毫秒
//输出 Date 对象,得到:星期 月份 日期 时 分 秒 CST 年份

long d=1000*60*60;
Date da=new Date(d);//标准时间往后1h,即1970.1.1 上午9点(不是1点,因为 CST 有时差)

long time=System.currentTimeMillis();//可以这样获取当前时间,然后传给 Date() 或 setTime()

SimpleDateFormat

可以自己设置日期格式。

方法说明
public SimpleDateFormat()构造方法,并使用系统默认的 Date 格式
public SimpleDateFormat(String pattern)构造方法,并使用自己规定的格式
public final String format(Date d)将日期对象转换为相应格式的字符串
public final Date parse(String s)将字符串转换为日期
public static void main(String[] args) throws Parse Exception{//结尾要加一些东西,在 IDEA 中可以自动补全
    Date d=new Date;//被分配时的时间
    SimpleDateFormat sdf=new SimpleDateFormat("yyyy年-MM月-dd日 HH:mm:ss");
    String s=sdf.format(d);
    System.out.println(s);//输出格式就形如 2022年-05月-05日 10:24:00
    
    String ss="2022-05-05 10:24:00";
    SimpleDateFormat sdf1=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    Date d1=sdf1.parse(ss);
}

y 年 M 月 d 日

H 时 m 分 s 秒

(实际运用的时候,也可以让用户自己指定格式。比如单独写一个日期工具类,有两个方法,把Date转换为String和把String转换为Date;这两个方法可以设置两个传入参数:

public static String dateToString(Date d, String format)

public static String StringTodate(String s, String format)

在方法内根据传入的字符串格式,利用SimpleDateFormat的方法进行转换。)

Calendar 类

需要导包java.util.Calendar,是一个抽象类。

为某一时刻和某些日历字段的转换,以及操作日历字段提供了一些方法。

Calendar 类有一个类方法可以获取 Calendar 对象。可是 Calendar 类不是抽象类吗?

Calendar rightnow=Calendar.getInstance();

其实这个方法和 Calendar 的直接子类有关,所以这个实例化相当于多态。

方法说明
public int get(int field)获取给定日历字段的值
public abstract void add(int field, int amount)添加/减去给定的日历字段
public final void set(int year, int month, int date)设置日历的年月日
y=c.get(Calendar.YEAR);
m=c.get(Calendar.MONTH)+1;//month 是从0开始的,所以要+1
d=c.get(Calendar.DATE);

//例:求2020年2月有多少天?
Calendar c=Calendar.getInstance();
c.set(2020,2,1);//设置为3月1日
c.add(Calendar.DATE,-1);//倒退1天,就是2月的最后一天
System.out.println("2020年2月有"+c.get(Calendar.DATE)+"天");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

灰海宽松

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值