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

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

以黑马程序员全套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)+"天");
目录
相关文章
|
14天前
|
安全 Java API
告别繁琐编码,拥抱Java 8新特性:Stream API与Optional类助你高效编程,成就卓越开发者!
【8月更文挑战第29天】Java 8为开发者引入了多项新特性,其中Stream API和Optional类尤其值得关注。Stream API对集合操作进行了高级抽象,支持声明式的数据处理,避免了显式循环代码的编写;而Optional类则作为非空值的容器,有效减少了空指针异常的风险。通过几个实战示例,我们展示了如何利用Stream API进行过滤与转换操作,以及如何借助Optional类安全地处理可能为null的数据,从而使代码更加简洁和健壮。
44 0
|
9天前
|
监控 Java 调度
【Java学习】多线程&JUC万字超详解
本文详细介绍了多线程的概念和三种实现方式,还有一些常见的成员方法,CPU的调动方式,多线程的生命周期,还有线程安全问题,锁和死锁的概念,以及等待唤醒机制,阻塞队列,多线程的六种状态,线程池等
66 6
【Java学习】多线程&JUC万字超详解
|
5天前
|
安全 Java API
【性能与安全的双重飞跃】JDK 22外部函数与内存API:JNI的继任者,引领Java新潮流!
【9月更文挑战第7天】JDK 22外部函数与内存API的发布,标志着Java在性能与安全性方面实现了双重飞跃。作为JNI的继任者,这一新特性不仅简化了Java与本地代码的交互过程,还提升了程序的性能和安全性。我们有理由相信,在外部函数与内存API的引领下,Java将开启一个全新的编程时代,为开发者们带来更加高效、更加安全的编程体验。让我们共同期待Java在未来的辉煌成就!
28 11
|
27天前
|
前端开发 Java 编译器
【前端学java】如何从前端视角快速学习Maven
【8月更文挑战第12天】如何从前端视角快速学习Maven
39 2
【前端学java】如何从前端视角快速学习Maven
|
13天前
|
Java API
Java 8新特性:Lambda表达式与Stream API的深度解析
【7月更文挑战第61天】本文将深入探讨Java 8中的两个重要特性:Lambda表达式和Stream API。我们将首先介绍Lambda表达式的基本概念和语法,然后详细解析Stream API的使用和优势。最后,我们将通过实例代码演示如何结合使用Lambda表达式和Stream API,以提高Java编程的效率和可读性。
|
26天前
|
Java API 开发者
|
18天前
|
JSON Java API
【Azure API 管理】通过Java APIM SDK创建一个新的API,如何为Reqeust的Representation设置一个内容示例(Sample)?
【Azure API 管理】通过Java APIM SDK创建一个新的API,如何为Reqeust的Representation设置一个内容示例(Sample)?
|
22天前
|
Java API 开发者
针对Java开发者的RESTful API设计与实现指南
本文是一份针对Java开发者的RESTful API设计与实现指南。RESTful API采用表述性状态转移(REST)架构风格,提供无状态、统一接口的服务。在Java中,可通过Spring Boot框架快速构建RESTful API,利用Spring MVC处理HTTP请求,并支持数据绑定、验证及异常处理等功能。此外,还介绍了版本控制、安全性加强、文档编写与测试等最佳实践,帮助开发者打造高性能且可靠的API服务。
24 0
|
28天前
|
Java API
Java8 Lambda 设计和实现问题之在Java 8的Stream API中,parallel=false时collect方法是如何实现的
Java8 Lambda 设计和实现问题之在Java 8的Stream API中,parallel=false时collect方法是如何实现的
|
28天前
|
API 开发工具
langchain 入门指南(一)- 准备 API KEY
langchain 入门指南(一)- 准备 API KEY
44 0