【Java】07 常见 API
列举在开发中常用到的 API
一、Object 类
Object 类是所有类的父类,若一个类没有指定继承的类则继承Object。任一类都直接或间接继承于Object。
1.1 常用方法
1.1.1 toString 方法
源码:
public String toString() {
return getClass().getName() + '@' + Integer.toHexString(hashCode())
}
注意: 若不重写 toString 则返回 对象类型 + @ + 地址的哈希值
重写 toString 方法
@Override
public String toString() {
return "Student{" +
"name='" + name + ''' +
", age=" + age +
'}';
}
1.1.2 equals 方法
源码:
public boolean equals(Object obj) {
return (this == obj);
}
注意: 若不重写 equals 则比较两个对象的地址值
重写 equals 方法
@Override
public boolean equals(Object o) {
//判断是否为同一个对象
if (this == o)
return true;
//判断是否为空,是否为同一引用类型
if (o == null || getClass() != o.getClass())
return false;
//向下转型
Student_equals that = (Student_equals) o;
//返回内容的比较结果
return age == that.age && Objects.equals(name, that.name);
}
1.2 Objects 工具类
1.2.1 equals 方法
源码:
public static boolean equals(Object a, Object b) {
return (a == b) || (a != null && a.equals(b));
}
注意: Objects.equals(a, b) 容忍空指针
二、Scanner 类
一个可以解析基本类型和字符串的文本扫描器。
2.1 Scanner 对象的创建
2.2.1 导包
// import 包名.类名;
import java.util.Scanner;
2.2.2 创建对象
// 类名 对象名 = new 类名( 参数列表 );
// System.in系统输入指的是从键盘输入
Scanner sc = new Scanner(System.in);
2.2 常用方法
2.2.1 next()
它从遇到的第一个有效字符(非空格、非换行)开始扫描,以空格或者换行符为终点,返回字符串。
2.2.2 nextLine()
以换行符为终点,获取一整行数据。
2.2.3 nextInt()
以空格或者换行符为终点,返回整数(实际是获取的字符串,只是将其转为了整数)。
2.2.4 hasNext()
判断输入流中是否还有数据,有则返回 true。
2.3 示例
import java.util.Scanner;
public class Demo_Scanner {
public static void main(String[] args) {
// 创建 Screen 对象
Scanner sc = new Scanner(System.in);
// 使用 nextInt() 方法
int i = sc.nextInt();
System.out.println(i);
}
}
三、Random 类
用于生成一个伪随机数。
3.1 Random 对象的创建
3.1.1 导包
import java.util.Random;
3.1.2 创建对象
Random r = new Random();
3.2 常用方法
nextInt() 生成一个随机数 nextInt(int b) 生成一个 [0, b) 的随机数
3.3 示例
import java.util.Random;
public class Demo_Random {
public static void main(String[] args) {
Random r = new Random();
// 生成一个 [0, 10) 的随机数
int i = r.nextInt(10);
System.out.println(i);
}
}
四、String 类
String 代表字符串,java中的字符串常量都可以看为 String 的实例,例如:“abc”
4.1 String 对象的创建
4.1.1 导包
String 类在 java.lang 包中,所以不需要导包
4.1.2 创建对象
// 形式一
String str = new String("string");
// 形式二
String str = new String(char[] chars);
// 形式三
String str = new String(byte[] bytes);
// 形式四
String str = "abc"
4.1.3 注意
String 对象在创建后不能更改,所以可以被共享。例如:String s = “abc” 是 “abc” 不能更改,而不是变量 s 。
4.2 常用方法
4.2.1 比较( equals )
String s1 = "Hello World";
String s2 = new String("Hello World");
// 此时比较的是两个字符串的地址值是否一致,而不是内容。
System.out.print(s1 == s2);
// equals 才是两个字符串的内容是否一致。s1 == null 会报 空指针
s1.equals(s2);
4.2.2 获取
// 获取索引值对应的字符
char charAt( index)
// 获取字符串的长度
int length()
// 获取第一次出现该字符串的索引值
int indexOf( String str )
// 截取字符串
String subString( beginIndex, endIndex)
4.2.3 转换
// 转为字符数组
char[] toCharArray()
// 转为字节数组
byte[] getBytes()
4.2.4 分割
// 按照给定规则分割字符串
String[] split(String regex)
4.2.5 替换
// 将某一字符串替换为新的,只替换第一个
String replace(String oldStr, String newStr)
// 替换所有
String replaceAll(String oldStr, String newStr)
五、Date 类
创建时间对象
5.1 时间原点
格林威治:1970-01-01 00:00:00 北京:1970-01-01 08:00:00
5.2 构造方法
public Date() 分配Date对象并初始化此对象,以表示分配它的时间(精确到毫秒)。 public Date(long date) 分配Date对象并初始化此对象,以表示自从原点以来经过的毫秒数。
5.3 常用方法
getTime() 把日期对象转换成对应的时间毫秒值。
5.4 示例
import java.util.Date;
public class DemoDate {
public static void main(String[] args) {
Date date1 = new Date(1000 * 60 * 2);
Date date2 = new Date();
//无参构造。表示当前时间L
Date date3 = new Date();
//将日期对象转为毫秒值
long m = date3.getTime();
System.out.println(date1);
System.out.println(date2);
System.out.println(date3);
}
}
六、DateFormat 类
DateFormat 是一个抽象类,不能直接 new 对象,需要使用子类
6.1 语法
// 用给定的模式和默认语言环境的日期格式符号创建SimpleDateFormat对象
// y ---> 年
// M ---> 月
// d ---> 日
// H ---> 时
// m ---> 分
// s ---> 秒
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
6.3 常用方法
format() 格式化,按照指定的格式,从Date对象转换为String对象。 parse() 解析,按照指定的格式,从String对象转换为Date对象。
6.4 示例
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class DemoDateFormat {
public static void main(String[] args) throws ParseException {
Scanner sc = new Scanner(System.in);
System.out.println("请输入出生日期(格式:xxxx-xx-xx xx:xx:xx)");
String s = sc.nextLine();
//日期对象
Date date = new Date();
//格式化对象
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//格式化当前日期
String format = sdf.format(date);
System.out.println(format);
//解析传入日期
Date parse = sdf.parse(s);
//计算出生毫秒数
long l = date.getTime() - parse.getTime();
//输出毫秒
System.out.println(l);
//输出年龄
System.out.println(l / 1000 / 60 / 60 / 24 / 30 / 12);
}
}
七、StringBuilder 类
它的内部拥有一个数组用来存放字符串内容,进行字符串拼接时,直接在数组中加入新内容。 StringBuilder 会自动维护数组的扩容。(默认16字符空间,超过自动扩充)
7.1 构造方法
public StringBuilder() 构造一个空的 StringBuilder 容器。 public StringBuilder(String str) 构造一个 StringBuilder 容器,并将字符串添加进去。
7.2 常用方法
append(String str) 添加任意类型数据的字符串形式,并返回当前对象自身。 toString() 将当前StringBuilder对象转换为String对象。
7.3 示例
public class DemoStringBuilder {
public static void main(String[] args) {
//使用有参构造创建 StringBuilder 对象
StringBuilder sb = new StringBuilder("中国");
//将字符追加到sb后
sb.append("©");
sb.append(2019);
//将StringBuilder转为字符串
String s = sb.toString();
System.out.println(s);
}
}
八、ArrayList 集合
ArrayList 是一个集合,数组是定长的,当我们要改变数组长度是需要创建新的数组,ArrayList不同他的长度是可以改变的。
8.1 使用方法
8.1.1 导包
// 泛型指定什么数据类型,集合中就存什么数据类型,需要使用引用类型。
// 第二个<>内可以不写,第一个是什么第二个就默认是什么。
import java.util.ArrayList<E>;
8.1.2 创建对象
// 泛型指定什么数据类型,集合中就存什么数据类型,需要使用引用类型。
// 第二个<>内可以不写,第一个是什么第二个就默认是什么。
类名<泛型> 集合名 = new 类名<> ();
8.2 常用方法
add( E e ) 添加新的数据到集合中 remove( index ) 删除索引为 index 的元素 get( index ) 获取索引为 index 的元素 size() 获取 list 集合的长度
8.3 示例
import java.util.ArrayList;
public class Demo_ArrayList {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
list.add(20);
list.add(8);
list.add(16);
list.add(1818);
Integer remove = list.remove(1);
Integer integer = list.get(1);
int size = list.size();
}
}
九、 工具类
9.1 Arrays 类
// 将一个字符数组升序排列
sort()
9.2 Math 类
// 生成一个[0,1)的伪随机数
random()
// 向上取整
ceil()
// 向下取整
floor()
// 四舍五入
round()
// 取绝对值
abs()
十、包装类
基本数据类型方便、简单、高效,但泛型、集合等不支持使用基本数据类型且不符合面向对象的思想,所以在 Java 中引入了包装类
10.1 对应关系
基本数据类型 |
包装类 |
---|---|
byte |
Byte |
short |
Short |
int |
Integer |
long |
Long |
float |
Float |
double |
Double |
char |
Character |
boolean |
Boolean |
10.2 装箱与拆箱
【装箱】基本数值 —> 包装对象
//使用构造函数函数
Integer i1 = new Integer(int i);
//使用包装类中的valueOf方法
Integer i2 = Integer.valueOf(int i);
【拆箱】包装对象 —> 基本数值
int num = i.intValue();
注意
// 从 JDK 1.5 开始,基本类型与包装类的装箱、拆箱动作可以自动完成。
Integer i = 1; // 自动装箱 相当于 Integer i = Integer.valueOf(1);
int a = i + 2; // 自动拆箱 相当于 i.intValue() + 2;
10.3 转换方法
除了 Character 类之外,其他所有包装类都具有 parseXxx 静态方法可以将字符串参数转换为对应的基本类型
// 将字符串参数转换为对应的 byte 基本类型。
Byte parseByte(String s)
// 将字符串参数转换为对应的 short 基本类型。
Short parseShort(String s)
// 将字符串参数转换为对应的 int 基本类型。
Integer parseInt(String s)
// 将字符串参数转换为对应的 long 基本类型。
Long parseLong(String s)
// 将字符串参数转换为对应的 float 基本类型。
Float parseFloat(String s)
// 将字符串参数转换为对应的 double 基本类型。
Double parseDouble(String s)
// 将字符串参数转换为对应的 boolean 基本类型。
Boolean parseBoolean(String s)
- zephir-(1)开篇介绍
- phalcon-入门篇6(控制器)
- phalcon-入门篇5(请求与返回)
- phalcon-入门篇2(HelloWord与PhalconTools)
- 数据库中间件 Sharding-JDBC 源码分析 —— SQL 解析(一)之语法解析
- phalcon-入门篇4(log日志和session缓存)
- zephir-(5)类型
- zephir-(10)内置函数
- zephir-(9)类和对象2
- 深度学习中的动手实践:在CIFAR-10上进行图像分类
- 数据库中间件 MyCAT源码分析 —— XA分布式事务
- [喵咪Golang(1)]Go语言开篇
- phalcon-进阶篇2(拦截器)
- 【死磕Java并发】—–深入分析synchronized的实现原理
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 手把手从0开始教你搭建Jumpserver,为服务器安全保驾护航!
- 企业面试题|最常问的MySQL面试题集合(二)
- 值得一看的35个Redis面试题总结
- 容器技术|Docker三剑客之docker-machine
- 企业面试题|最常问的MySQL面试题集合(三)
- 「微服务架构」API版本控制最佳实践介绍
- 2020年最新字节、阿里、腾讯、爱奇艺等BAT Android社招高频面试题,押题99.98%!
- 使用镜像部署 Hexo 静态页面
- 基于zmq RPC简单C++实现
- App为什么会crash?一篇文章带你探究根本原因 ,事情没有你想得那么简单!
- MySQL 8.0新特性 — 用户管理
- Java15的新特性
- ZooKeeper到底为Kafka的做了什么牺牲?
- Flutter原理:三棵重要的树(渲染过程、布局约束、应用视图的构建等)
- FlutterDojo设计之道—状态管理之路(六)