Java笔记_023_常用API
常用API
Math
Math的概述
Math包含执行基本数字运算的方法
类的成员都是静态的,所以可以直接调用
Math类中的常用方法
方法名 | 说明 |
---|---|
public static int abs(int a) | 返回参数的绝对值 |
public static double ceil(double a) | 返回大于或等于参数的最小double值,等于一个整数 |
public static double floor(double a) | 返回小于或等于参数的最大double值,等于一个整数 |
public static int round(int a) | 按照四舍五入返回最接近参数的int |
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类的常用方法
方法名 | 说明 |
---|---|
public static void exit(int status) | 终止当前运行的Java虚拟机,非零表示异常终止 |
public static long currentTimeMillis() | 返回当前时间(以毫秒为单位) |
Object
Object类的概述
Object是类层次结构的根,每个类都可以将Object作为超类。所有类都直接或者间接继承自该类
构造方法:public Object()
-
回想面向对象中,为什么说子类的构造方法默认访问的是父类的无参构造方法?
因为他们的顶级父类只有无参构造方法
Object类的常用方法
方法名 | 说明 |
---|---|
public String toString() | 返回对象的字符串表示形式。建议所有子类重写该方法,自动生成 |
public boolean equals(Object obj) | 比较对象是否相等。默认比较地址,重写可以比较内容,自动生成 |
Arrays
冒泡排序
- 每一次比较完毕,下一次比较的时候就会少一个数据参加
Arrays类的概述和常用方法
软件包:java.util
(也就是需要导包)
Arrays类中包含了操作数组的各种方法
方法名 | 说明 |
---|---|
public static String toString(int[] a) | 返回指定数组的内容的字符串表示形式 |
public static void sort(int[] a) | 按照数字顺序排列指定的数组 |
工具类的设计思想
- 构造方法用
private
修饰 - 成员用
public static
修饰
基本类型包装类
基本类型包装类概述
-
将基本数据类型封装成对象的好处在于可以在对象中定义更多的功能方法操作该数据
-
常用的操作之一:用于基本数据类型的与字符串之间的转换
基本数据类型 | 包装类 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
Integer类的概述和使用
Integer:包装一个对象中的原始类型int的值
方法名 | 说明 |
---|---|
public Integer(int value) | 根据int值创建Integer对象 过时 |
public Integer(String s) | 根据String值来创建Integer对象 过时 |
public static Integer valueOf(int i) | 返回表示指定int值的Integer实例 |
public static Integer valueOf(String s) | 返回一个保存指定值的Integer对象String |
int和String的相互转换
基本类型包装类的最常用操作就是:用于基本类型和字符串之间的相互转换
-
int转换为String
public static String valueOf(int i)
:返回int参数的字符串表示形式。该方法是String类中的方法 -
String转换为int
public static int parseInt(String s)
:将字符串解析为int类型。该方法是Integer类中的方法
案例
字符串中的数据排序
-
需求:有一个字符串:“91 27 46 38 50”,请写程序实现最终输出结果是:“27 38 46 50 91”
-
思路:
-
定义一个字符串
-
把字符串中的数字根据数字数据存储到一个int类型的数组中
-
得到字符串中每一个数字数据?
public String[] split(String regex)
根据regex将字符串分割成字符数组
-
定义一个int类型的数组,把String[]数组中的每一个元素存储到int数组中
public static int parseInt(String s)
-
-
-
对int数组进行排序
-
把排序后的int数组中的元素进行拼接得到一个字符串,这里采用的是StringBuilder来实现
-
输出结果
import java.util.Arrays; public class Demo { public static void main(String[] args) { String s = "91 27 46 38 50"; String[] strArr = s.split(" "); int[] arr = new int[strArr.length]; for (int i = 0; i < strArr.length; i++) { arr[i] = Integer.parseInt(strArr[i]); } Arrays.sort(arr); StringBuilder sb = new StringBuilder(); for (int i = 0; i < arr.length; i++) { if (i == arr.length - 1) { sb.append(arr[i]); } else { sb.append(arr[i]).append(" "); } } System.out.println(sb.toString()); } }
自动装箱和拆箱
- 装箱:把基本数据类型转换为对应的包装类类型
- 拆箱:把包装类类型转换为对应的基本数据类型
Integer i = Integer.valueOf(100); // 调用方法实现,这叫装箱
Integer ii = 100; // 自动调用Integer.valurOf(),这叫自动装箱
ii = ii.intValue() + 200; // 调用方法实现,这叫拆箱
ii += 200; // 自动调用了ii.intValue(),这叫自动拆箱
**注意:**在使用包装类型的时候,如果做操作,最好判断一下是否为null
我们推荐的是,只要是对象,在使用前就必须进行不为null的判断
日期类
Date类的概述和构造方法
-
软件包:
java.util.Date
-
Data代表雷一个特定的时间,精确到毫秒
方法名 | 说明 |
---|---|
public Date() | 分配一个Date对象,并初始化,以便它代表它被分配的时间,精确到毫秒 |
public Data(long date) | 分配一个Date对象,并初始化为表示从标准基准时间起指定的毫秒数 |
Date类的常用方法
方法名 | 说明 |
---|---|
public long getTime() | 获取的是日期对象从1970年1月1日00:00:00到现在的毫秒数 |
public void setTime(long time) | 设置时间,给的是毫秒值 |
SimpleDateFormat类概述
- 软件包:
java.text
- SimpleDateFormat是一个具体的类,用于以区域设置敏感的方式格式化和解析日期。我们重点学习日期格式化和解析
- 日期和时间格式由日期和时间模式字符串指定,在日期和时间模式字符串中,从’A’到’Z’,以及从’a’到’z’引号的字母被解释为表示日期或者时间字符串的组件的模式字母
- 常用的模式字母及对应关系如下:
- y 年
- M 月
- d 日
- H 时
- m 分
- s 秒
SimpleDateFormat的构造方法
方法名 | 说明 |
---|---|
public SimpleDateFormat() | 构造一个SimpleDateFormat,使用默认模式和日期格式 |
SimpleDateFormat(String pattern) | 构造一个SimpleDateFormat使用给定的模式和默认的日期格式 |
SimpleDateFormat格式化和解析日期
-
格式化(从Date到String)
public final String format(Date date); // 将日期格式化成日期/日期字符串
Date d = new Date(); SimpleDateFormat sdf = new SimpleDateFormat(); String s = sdf.format(d); System.out.println(s); // 默认格式:out-> 2022/3/28 下午7:53 SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); String s1 = sdf1.format(d); System.out.println(s1); // 自定义格式:out-> 2022年03月28日 19:56:28
-
解析(从String到Date)
public Date parse(String source); // 从给定字符串的开始解析文本以生成日期
String s = "2048-8-9 11:11:11"; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date d = null; try { d = sdf.parse(s); } catch (ParseException e) { e.printStackTrace(); } System.out.println(d); // out-> Sun Aug 09 11:11:11 CST 2048
Calender类概述
-
软件包:
java.util
-
Calendar为某一时刻和一组日历字段之间的转换提供了一些方法,并为操作日历字段提供了一些方法
-
Calendar提供了一个类方法
getInstance
用于获取Calendar对象,其日历字段已经使用当前日期和时间初始化:Calendar rightNow = Calendar.getInstace();
import java.util.Calendar;
public class Demo {
public static void main(String[] args) {
Calendar c = Calendar.getInstance(); // 多态的形式
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH) + 1; // 月份是从0开始计算的
int date = c.get(Calendar.DATE);
System.out.println(year + "年" + month + "月" + date + "日");
}
}
Calendar常用方法
方法名 | 说明 |
---|---|
public int get(int field) | 返回给定日历字段的值 |
public abstract void add(int field, int amount) | 根据日历的规则,将指定的时间量添加或减去给定的日历字段 |
public final void set(int year, int month, int date) | 设置当前日历的年月日 |
Calendar c = Calendar.getInstance(); // 多态的形式
c.add(Calendar.YEAR, -5); // 五年前的今天
c.add(Calendar.MONTH, +5); // 五月后的今天
c.add(Calendar.DATE, +5); // 五天后