列举在开发中常用到的 API
Object 类是所有类的父类,若一个类没有指定继承的类则继承Object。任一类都直接或间接继承于Object。
源码:
public String toString() {
return getClass().getName() + '@' + Integer.toHexString(hashCode())
}
注意: 若不重写 toString 则返回 对象类型 + @ + 地址的哈希值
重写 toString 方法
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
源码:
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);
}
源码:
public static boolean equals(Object a, Object b) {
return (a == b) || (a != null && a.equals(b));
}
注意: Objects.equals(a, b) 容忍空指针
一个可以解析基本类型和字符串的文本扫描器。
// import 包名.类名;
import java.util.Scanner;
// 类名 对象名 = new 类名( 参数列表 );
// System.in系统输入指的是从键盘输入
Scanner sc = new Scanner(System.in);
它从遇到的第一个有效字符(非空格、非换行)开始扫描,以空格或者换行符为终点,返回字符串。
以换行符为终点,获取一整行数据。
以空格或者换行符为终点,返回整数(实际是获取的字符串,只是将其转为了整数)。
判断输入流中是否还有数据,有则返回 true。
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);
}
}
用于生成一个伪随机数。
import java.util.Random;
Random r = new Random();
nextInt() 生成一个随机数 nextInt(int b) 生成一个 [0, b) 的随机数
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 代表字符串,java中的字符串常量都可以看为 String 的实例,例如:“abc”
String 类在 java.lang 包中,所以不需要导包
// 形式一
String str = new String("string");
// 形式二
String str = new String(char[] chars);
// 形式三
String str = new String(byte[] bytes);
// 形式四
String str = "abc"
String 对象在创建后不能更改,所以可以被共享。例如:String s = “abc” 是 “abc” 不能更改,而不是变量 s 。
String s1 = "Hello World";
String s2 = new String("Hello World");
// 此时比较的是两个字符串的地址值是否一致,而不是内容。
System.out.print(s1 == s2);
// equals 才是两个字符串的内容是否一致。s1 == null 会报 空指针
s1.equals(s2);
// 获取索引值对应的字符
char charAt( index)
// 获取字符串的长度
int length()
// 获取第一次出现该字符串的索引值
int indexOf( String str )
// 截取字符串
String subString( beginIndex, endIndex)
// 转为字符数组
char[] toCharArray()
// 转为字节数组
byte[] getBytes()
// 按照给定规则分割字符串
String[] split(String regex)
// 将某一字符串替换为新的,只替换第一个
String replace(String oldStr, String newStr)
// 替换所有
String replaceAll(String oldStr, String newStr)
创建时间对象
格林威治:1970-01-01 00:00:00 北京:1970-01-01 08:00:00
public Date() 分配Date对象并初始化此对象,以表示分配它的时间(精确到毫秒)。 public Date(long date) 分配Date对象并初始化此对象,以表示自从原点以来经过的毫秒数。
getTime() 把日期对象转换成对应的时间毫秒值。
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 是一个抽象类,不能直接 new 对象,需要使用子类
// 用给定的模式和默认语言环境的日期格式符号创建SimpleDateFormat对象
// y ---> 年
// M ---> 月
// d ---> 日
// H ---> 时
// m ---> 分
// s ---> 秒
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
format() 格式化,按照指定的格式,从Date对象转换为String对象。 parse() 解析,按照指定的格式,从String对象转换为Date对象。
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 会自动维护数组的扩容。(默认16字符空间,超过自动扩充)
public StringBuilder() 构造一个空的 StringBuilder 容器。 public StringBuilder(String str) 构造一个 StringBuilder 容器,并将字符串添加进去。
append(String str) 添加任意类型数据的字符串形式,并返回当前对象自身。 toString() 将当前StringBuilder对象转换为String对象。
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不同他的长度是可以改变的。
// 泛型指定什么数据类型,集合中就存什么数据类型,需要使用引用类型。
// 第二个<>内可以不写,第一个是什么第二个就默认是什么。
import java.util.ArrayList<E>;
// 泛型指定什么数据类型,集合中就存什么数据类型,需要使用引用类型。
// 第二个<>内可以不写,第一个是什么第二个就默认是什么。
类名<泛型> 集合名 = new 类名<> ();
add( E e ) 添加新的数据到集合中 remove( index ) 删除索引为 index 的元素 get( index ) 获取索引为 index 的元素 size() 获取 list 集合的长度
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();
}
}
// 将一个字符数组升序排列
sort()
// 生成一个[0,1)的伪随机数
random()
// 向上取整
ceil()
// 向下取整
floor()
// 四舍五入
round()
// 取绝对值
abs()
基本数据类型方便、简单、高效,但泛型、集合等不支持使用基本数据类型且不符合面向对象的思想,所以在 Java 中引入了包装类
基本数据类型 | 包装类 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
【装箱】基本数值 —> 包装对象
//使用构造函数函数
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;
除了 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)