Java基础 | 常用API

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: Java中的常用API讲解

常用API

(一)Math类

1.概述

Math包含执行基本数字运算的方法

没有构造方法,如何使用类中的成员

看类的成员是否都是静态,如果是,通过类名就可以直接调用


2.Math类的常用方法

image-20211229153728590


(二)Sytem类

1.概述

System包含有用的类字段和方法,它不能被实例化

2.System类的常用方法

public static void exit(int status) 终止当前运行的Java虚拟机,非零表示异常终止

public static long currentTimeMillis() 返回当前时间(以毫秒为单位)



(三)Object类

1.概述

Object是类层次结构的根,每个类都可以将Object作为超类。所有类都直接或者间接的继承自该类

构造方法:public Object()

回想面向对象中,为什么说子类的构造方法默认访问的是父类的无参构造方法?

因为他们的顶级父类只有无参构造方法

2.Object类的常用方法

(1) toString方法

public String toString() 返回对象的字符串表示形式

建议所有子类重写此方法

如何重写?自动生成即可 alt + insert

(2)equals方法

public boolean equals(Object obj) 比较对象是否相等

默认比较地址,重写可以比较内容,自动生成



(四)Arrays

1.冒泡排序

将一组数据按照固定的规则进行排序

冒泡排序:一种排序的方式,对要进行排序的数据中相邻的数据进行两两比较,将较大的数据放在后面,依次对所有的数据进行操作,直至所有数据按要求完成排序。

原理:

  • 如果有n个数据进行排序,总共需要比较n-1次
  • 每一次比较完毕,下一次的比较就会少一个数据参与

代码实现:

for (int x = 0; x < arr.length - 1; x++) {    //如果有n个元素需要排序,则一共需要排序n-1次
    for (int i = 0; i < arr.length - 1 - x; i++) {    //减1是防止索引越界,减x是每次排序完下次排序都会少排序一个元素
        if (arr[i] > arr[i + 1]) {
            int temp = arr[i];
            arr[i] = arr[i + 1];
            arr[i + 1] = temp;
        }
    }
}

2.Arrays类概述和常用方法

(1)概述

Arrays类包含用于操作数组的各种办法

(2)常用方法

public static String toString(int[ ] a) 返回指定数组的内容的字符串表示形式

public static void sort(int[ ] a) 按照数字顺序排列指定的数组

工具类的设计思想:

  • 构造方法用private修饰
  • 成员用public static 修饰


(五)基本类型包装类

1.概述

将基本数据类型封装成对象的好处在于可以在对象中定义更多的功能方法操作该数据

常用的操作之一:用于基本数据类型与字符串之间的转换

image-20211229213022857


2.Integer类的概述和使用

Integer:包装一个对象中的原始类型int的值

image-20211229213338378

代码演示:

public static void main(String[] args) {
    Integer i = new Integer("100");
    System.out.println(i);

    Integer i2 = new Integer(100);
    System.out.println(i2);

    Integer i3 = Integer.valueOf("abc");
    System.out.println(i3); //NumberFormatException

    Integer i4 = Integer.valueOf(100);
    System.out.println(i4);
}

3.int和String的相互转换

(1)int 转换为 String

public static String valueOf(int i):返回int参数的字符串表示形式。该方法是String类中的方法

(2)String转换为int

public static int parseInt(String s):将字符串解析为int类型。该方法是Integer类中的方法


4.案例(字符串中数据排序)

代码实现:

import java.util.Arrays;

//需求:有一个字符串:“91 27 46 38 50”,请写程序实现最终输出结果是:“27 38 46 50 91”
public class Demo {
    public static void main(String[] args) {
        //定义一个字符串
        String s = "91 27 46 38 50";
        //将字符串的数字数据存储到一个String类型的数组中
        String[] strArr = s.split(" ");
       /* for (int i = 0; i < strArr.length; i++){
            System.out.println(strArr[i]);
        }*/
        //定义一个int类型的数组,把String[]数组中的每一个元素存储到int数组中
        int[] arr = new int[strArr.length];
        for (int i = 0; i < strArr.length; i++) {
            arr[i] = Integer.parseInt(strArr[i]);
        }
        /*for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }*/

        //对数组进行排序
        Arrays.sort(arr);

        //把排序后的数组按要求进行拼接得到一个字符串,这里采用StringBuilder来实现
        StringBuilder sb = new StringBuilder();
        sb.append("“");
        for (int i = 0; i < arr.length; i++) {
            if(i == arr.length - 1){
                sb.append(arr[i]);
            } else {
                sb.append(arr[i]).append(" ");
            }
        }
        sb.append("“");
        //将StringBuilder类型转换为String类型
        String result = sb.toString();
        //输出结果
        System.out.println(result);
    }
}

5。自动装箱和拆箱

  • 装箱:把基本数据类型转换为对应的包装类类型
  • 拆箱:把包装类类型转换为对应的基本数据类型
//装箱
Integer i = Integer.valueOf(100);
//自动装箱
Integer i = 100;

i += 200;    //i = i + 200; i + 200 自动拆箱; i = i + 200; 是自动装箱

注意:在使用包装类类型的时候,如果做操作,最好先判断是否为null

推荐:只要是对象,在使用前就必须进行不为null的判断



(六)日期类

1.Date类的概述和构造方法

Date代表了一个特定的时间,精确到毫秒

构造方法

public Date() 分配一个Date对象,并初始化,以便它代表它被分配的时间,精确到毫秒

public Date(long date) 分配一个Date对象,并将其初始化为表示从标准基准时间起指定的毫秒数


2.Date类的常用方法

public long getTime() 获取的是日期对象从1970年1月1日00:00:00到现在的毫秒值

public void setTime(long time) 设置时间,给的是毫秒值


3.SimpleDateFormat类概述

SimpleDateFormat是一个具体的类,用于以区域设置敏感的方式格式化和解析日期。我们重点学习日期格式化解析

日期格式化由日期和时间模式字符串指定,在日期和时间模式字符串中。从“A”到“Z”以及从“a”到“z”引号的字母被解释为表示日期或时间字符串的组件的模式字母

常用的模式字母以及对应关系如下:

  • y 年
  • M 月
  • d 日
  • H 时
  • m 分
  • s 秒

4.SimpleDateFormat类构造方法

public SimpleDateFormat() 构造一个SimpleDateFormate,使用默认模式和日期格式

public SimpleDateFormate(String patten) 构造一个SimpleDateFormate使用给定的模式和默认的日期格式


5.SimpleDateFormat格式化和解析日期

(1)格式化(从Date到String)

public final String format(Date date): 将日期格式化成日期/时间字符串

(2)解析(从String到Date)

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

代码演示:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Demo {
    public static void main(String[] args) throws ParseException {
        //格式化:从Date到String
        Date d = new Date();
        //  SimpleDateFormat sdf = new SimpleDateFormat();//无参构造  为默认系统给的格式
        //自定义格式使用SimpleDateFormat的带参构造参数为自定义格式
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss");
        //使用SimpleDateFormat的格式化方法 public final String format(Date date)
        String s = sdf.format(d);
        System.out.println(s);  //2021年12月29日 11:50:47

        //解析:从String到Date
        String s2 = "2021-12-29 23:48:00";
        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        Date d2 = sdf2.parse(s2);
        System.out.println(d2); //Wed Dec 29 23:48:00 CST 2021
    }
}

(3)案例:(日期工具类)

代码实现:

DateUtils:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateUtils {
    //构造方法私有
    //成员方法静态
    private DateUtils() {
    }

    //用于把日期转换为指定格式的方法
    public static String dateToString(Date d, String format) {
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        String s = sdf.format(d);
        return s;
    }

    //用于字符串解析为指定格式的日期
    public static Date stringToDate(String s, String format) throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        Date d = sdf.parse(s);
        return d;
    }
}

测试类:

import java.text.ParseException;
import java.util.Date;

public class DateDemo {
    public static void main(String[] args) throws ParseException {
        //测试日期工具类的格式化方法
        Date d = new Date();
        String format = "yyyy年MM月dd日 hh:mm:ss";
        String result = DateUtils.dateToString(d,format);   //静态成员方法通过直接访问类名.方法 如果是非静态方法,需要通过实例化对象访问
        System.out.println(result);//2021年12月30日 12:12:37

        //测试日期工具类的解析方法
        String s = "2021年12月30日 12:12:37";
        String format2 = "yyyy年MM月dd日 hh:mm:ss";
        Date Dresult = DateUtils.stringToDate(s,format);
        System.out.println(Dresult);//Thu Dec 30 00:12:37 CST 2021

    }
}

6.Calendar类概述

Calendar为某一时刻和一组日历字段之间的转换提供了一些方法,并为操作日历字段提供了一些方法

Calendar提供了一个类方法getInstance用于获取Calendar对象,其日历字段已使用当前日期和时间初始化:

Calendar rightNow = Calendar.getInstance();


7.Calendar的常用方法

image-20211230104901433

代码演示:

//获取对象
Calendar c = Calendar.getInstance();//多态的形式创建对象
System.out.println(c);

//public int get(int field)
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH) + 1;
int date = c.get(Calendar.DATE);
System.out.println(year+"年"+month+"月"+date+"日");//2021年12月30日
//10年后的5天前
//public abstract void add(int field,int amount)
c.add(Calendar.YEAR,10);
c.add(Calendar.DATE,-5);
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH) + 1;
int date = c.get(Calendar.DATE);
System.out.println(year+"年"+month+"月"+date+"日");//2031年12月25日
//public final void set(int year,int month,int date)
c.set(2033,11,12);
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH) + 1;
int date = c.get(Calendar.DATE);
System.out.println(year+"年"+month+"月"+date+"日");//2033年12月12日

目录
相关文章
|
17天前
|
Java API C++
Java 8 Stream Api 中的 peek 操作
本文介绍了Java中`Stream`的`peek`操作,该操作通过`Consumer&lt;T&gt;`函数消费流中的每个元素,但不改变元素类型。文章详细解释了`Consumer&lt;T&gt;`接口及其使用场景,并通过示例代码展示了`peek`操作的应用。此外,还对比了`peek`与`map`的区别,帮助读者更好地理解这两种操作的不同用途。作者为码农小胖哥,原文发布于稀土掘金。
Java 8 Stream Api 中的 peek 操作
|
14天前
|
安全 Java API
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
String常量池、String、StringBuffer、Stringbuilder有什么区别、List与Set的区别、ArrayList和LinkedList的区别、HashMap底层原理、ConcurrentHashMap、HashMap和Hashtable的区别、泛型擦除、ABA问题、IO多路复用、BIO、NIO、O、异常处理机制、反射
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
|
3天前
|
Java 程序员 API
Java 8新特性之Lambda表达式与Stream API的探索
【9月更文挑战第24天】本文将深入浅出地介绍Java 8中的重要新特性——Lambda表达式和Stream API,通过实例解析其语法、用法及背后的设计哲学。我们将一探究竟,看看这些新特性如何让Java代码变得更加简洁、易读且富有表现力,同时提升程序的性能和开发效率。
|
2天前
|
SQL Java Linux
Java 8 API添加了一个新的抽象称为流Stream
Java 8 API添加了一个新的抽象称为流Stream
|
4天前
|
Java
flyway报错Caused by: java.lang.NoSuchMethodError: org.flywaydb.core.api.configuration.FluentConfigurat
flyway报错Caused by: java.lang.NoSuchMethodError: org.flywaydb.core.api.configuration.FluentConfigurat
12 2
|
21天前
|
安全 Java API
【性能与安全的双重飞跃】JDK 22外部函数与内存API:JNI的继任者,引领Java新潮流!
【9月更文挑战第7天】JDK 22外部函数与内存API的发布,标志着Java在性能与安全性方面实现了双重飞跃。作为JNI的继任者,这一新特性不仅简化了Java与本地代码的交互过程,还提升了程序的性能和安全性。我们有理由相信,在外部函数与内存API的引领下,Java将开启一个全新的编程时代,为开发者们带来更加高效、更加安全的编程体验。让我们共同期待Java在未来的辉煌成就!
46 11
|
19天前
|
监控 Java 大数据
【Java内存管理新突破】JDK 22:细粒度内存管理API,精准控制每一块内存!
【9月更文挑战第9天】虽然目前JDK 22的确切内容尚未公布,但我们可以根据Java语言的发展趋势和社区的需求,预测细粒度内存管理API可能成为未来Java内存管理领域的新突破。这套API将为开发者提供前所未有的内存控制能力,助力Java应用在更多领域发挥更大作用。我们期待JDK 22的发布,期待Java语言在内存管理领域的持续创新和发展。
|
21天前
|
Java API 数据处理
【Java的SIMD革命】JDK 22向量API:释放硬件潜能,让Java应用性能飙升!
【9月更文挑战第7天】 JDK 22向量API的发布标志着Java编程语言在SIMD技术领域的重大突破。这一新特性不仅释放了现代硬件的潜能,更让Java应用性能实现了飙升。我们有理由相信,在未来的发展中,Java将继续引领编程语言的潮流,为开发者们带来更加高效、更加强大的编程体验。让我们共同期待Java在SIMD技术的推动下开启一个全新的性能提升时代!
|
22天前
|
Java API 开发者
【Java字节码操控新篇章】JDK 22类文件API预览:解锁Java底层的无限可能!
【9月更文挑战第6天】JDK 22的类文件API为Java开发者们打开了一扇通往Java底层世界的大门。通过这个API,我们可以更加深入地理解Java程序的工作原理,实现更加灵活和强大的功能。虽然目前它还处于预览版阶段,但我们已经可以预见其在未来Java开发中的重要地位。让我们共同期待Java字节码操控新篇章的到来!
|
20天前
|
Java API 开发者
【Java字节码的掌控者】JDK 22类文件API:解锁Java深层次的奥秘,赋能开发者无限可能!
【9月更文挑战第8天】JDK 22类文件API的引入,为Java开发者们打开了一扇通往Java字节码操控新世界的大门。通过这个API,我们可以更加深入地理解Java程序的底层行为,实现更加高效、可靠和创新的Java应用。虽然目前它还处于预览版阶段,但我们已经可以预见其在未来Java开发中的重要地位。让我们共同期待Java字节码操控新篇章的到来,并积极探索类文件API带来的无限可能!