一、Object类
1、Object类的作用:Object类是Java中所有类的祖宗类,因此,Java中所有类的对象都可以直接使用类中提供的一些方法。
2、Object类的常见方法:
方法名 | 说明 |
public String toString() | 返回对象的字符串表示形式 |
public boolean equals(Object o)pan'duan'lian'ge'dui'xiang'shi'fou'xiang'den | 判断两个对象是否相等 |
Protected Object clone () | 对象克隆 |
toString存在的意义:toString方法存在的意义就是为了被子类重写,以便返回对象的具体内容。
equals存在的意义:直接比较两个对象的地址是否完全相同可以用“==”替代equals,equals存在的意义就是为了被子类重写,以便子类自己来定制比较规则(比如比较对象内容)。
3、Object类提供的对象克隆方法
当某个对象调用这个方法是,这个方法会复制一个一模一样的新对象返回。
代码展示:
public class Test2 {
public static void main(String[] args) throws CloneNotSupportedException {
Student2 s2 = new Student2("01","zhangsan","wo666",new double[]{60,70,80});
Student2 s3 = (Student2) s2.clone();
System.out.println(s3.getId());
System.out.println(s3.getName());
System.out.println(s3.getPassword());
System.out.println(s3.getScores());
System.out.println("---------------------------");
System.out.println(s2.getId());
System.out.println(s2.getName());
System.out.println(s2.getPassword());
System.out.println(s2.getScores());
String s1 = null;
String s4 = "王森";
// System.out.println(s1.equals(s4));
System.out.println(Objects.equals(s1, s4));
Integer a2 = Integer.valueOf(88);
System.out.println(a2);
String age = "23";
int age1 = Integer.valueOf(age);
System.out.println(age1+1);
Integer age2 = 23;
String age3 = Integer.toString(age2);
System.out.println(age3+1);
String scoreStr = "99.5";
double score = Double.valueOf(scoreStr);
System.out.println(score);
}
}
浅克隆:拷贝出新的对象,与原对象中的数据一模一样(引用类型拷贝的只是地址)
深克隆:对象中基本类型的数据直接拷贝。
对象中的字符串数据拷贝的还是地址。
对象中包含的其他对象,不会拷贝地址,会创建新对象。
4、Objects
Objects是一个工具类,提供了很多操作对象的静态方法给我们使用。
Objects类的常见方法
方法名 | 说明 |
public static boolean equals(Object a, Object b) | 先做非空判断,再比较两个对象 |
public static boolean isNull(Object obj) | 断对象是否为null,为null返回true ,反之 |
public static boolean nonNull(Object obj) | 判断对象是否不为null,不为null则返回true, 反之 |
5、包装类
包装类就是把基本类型的数据包装成对象。
基本数据类型 | 对应的包装类 |
byte | Byte |
short | Short |
int | Integer |
long | Long |
char | Character |
float | Float |
double | Double |
boolean | Boolean |
基本类型的数据包装成对象的方案 |
public Integer(int value): 已过时 |
public static Integer valueOf(int i) |
自动装箱:基本数据类型可以自动转换成包装类型。
自动拆箱:包装类型可以转换成基本数据类型。
6、包装类的其他常见操作
可以把基本类型的数据转换成字符串类型
public static String toString(double d) |
public String toString() |
可以把字符串类型的数值转换成数值本身对应的数据类型。
public static int parseInt(String s) |
public static Integer valueOf(String s) |
7、StringBuilder
StringBuilder代表可变字符转对象,相当于是一个容器,它里面装的字符串是可以改变的,就是用来操作字符串的。
好处:StringBuilder比String更适合做字符串的修改操作,效率会更高,代码也会更简洁。
构造器 | 说明 |
public StringBuilder() | 创建一个空白的字符串对象,不包含任何内容 |
public StringBuilder(String str) | 创建一个指定字符串内容的可变字符串对象 |
方法名称 | 说明 |
public StringBuilder append(任意类型) | 添加数据并返回StringBuilder对象本身 |
public StringBuilder reverse() | 将对象的内容反转 |
public int length() | 返回对象内容长度 |
public String toString() | 通过toString()就可以实现把StringBuilder转换为String |
SringBuilder与StringBuffer
注意:StringBuffer的用法与StringBuilder是一模一样的
但 StringBuilder是线程不安全的 StringBuffer是线程安全的
8、StringJoiner
JDK8开始才有的,跟StringBuilder一样,也是用来操作字符串的,也可以看成是一个容器,创建之后里面的内容是可变的。
好处:不仅能提高字符串的操作效率,并且在有些场景下使用他操作字符串,代码会更简洁。
构造器 | 说明 |
public StringJoiner (间隔符号) | 创建一个StringJoiner对象,指定拼接时的间隔符号 |
public StringJoiner (间隔符号,开始符号,结束符号) | 创建一个StringJoiner对象,指定拼接时的间隔符号、开始符号、结束符号 |
方法名称 | 说明 |
public StringJoiner add (添加的内容) | 添加数据,并返回对象本身 |
public int length() | 返回长度 ( 字符出现的个数) |
public String toString() | 返回一个字符串(该字符串就是拼接之后的结果) |
二、Math
代表数学,是一个工具类,里面提供的都是对数据进行操作的一些静态方法。
Math类提供的常见方法
方法名 | 说明 |
public static int abs(int a) | 获取参数绝对值 |
public static double ceil(double a) | 向上取整 |
public static double floor(double a) | 向下取整 |
public static int round(float a) | 四舍五入 |
public static int max(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类提供的常见方法
方法名 | 说明 |
public static void exit(int status) | 终止当前运行的Java虚拟机。 |
public static long currentTimeMillis() | 返回当前系统的时间毫秒值形式 |
时间毫秒值
指的是从1970年1月1日 00:00:00走到此刻的总的毫秒数,应该是很大的。1s=1000ms
四、Runtime
代表程序所在的运行环境
Runtime是一个单例类
Runtime类提供的常见方法
方法名 | 说明 |
public static Runtime getRuntime() | 返回与当前Java应用程序关联的运行时对象 |
public void exit(int status) | 终止当前运行的虚拟机 |
public int availableProcessors() | 返回Java虚拟机可用的处理器数。 |
public long totalMemory() | 返回Java虚拟机中的内存总量 |
public long freeMemory() | 返回Java虚拟机中的可用内存 |
public Process exec(String command) | 启动某个程序,并返回代表该程序的对象 |
五、BigDecimal
用于解决浮点型运算时,出现结果失真的问题。
BigDecimal的常见构造器、常用方法
构造器 | 说明 |
public BigDecimal(double val) 注意:不推荐使用这个 | 将 double转换为 BigDecimal |
public BigDecimal(String val) | 把String转成BigDecimal |
方法名 | 说明 |
public static BigDecimal valueOf(double val) | 转换一个 double成 BigDecimal |
public BigDecimal add(BigDecimal b) | 加法 |
public BigDecimal subtract(BigDecimal b) | 减法 |
public BigDecimal multiply(BigDecimal b) | 乘法 |
public BigDecimal divide(BigDecimal b) | 除法 |
public BigDecimal divide (另一个BigDecimal对象,精确几位,舍入模式) | 除法、可以控制精确到小数几位 |
public double doubleValue() | 将BigDecimal转换为double |
六、JDK8之前传统的日期、时间
1、Date
代表的是日期和时间
构造器 | 说明 |
public Date() | 创建一个Date对象,代表的是系统当前此刻日期时间。 |
public Date(long time) | 把时间毫秒值转换成Date日期对象。 |
常见方法 | 说明 |
public long getTime() | 返回从1970年1月1日 00:00:00走到此刻的总的毫秒数 |
public void setTime(long time) | 设置日期对象的时间为当前时间毫秒值对应的时间 |
2、SimpleDateFormat
代表简单日期格式化,可以用来八日起对象、时间毫秒值格式化成我们想要的形式。
常见构造器 | 说明 |
public SimpleDateFormat(String pattern) | 创建简单日期格式化对象,并封装时间的格式 |
格式化时间的方法 | 说明 |
public final String format(Date date) | 将日期格式化成日期/时间字符串 |
public final String format(Object time) | 将时间毫秒值式化成日期/时间字符串 |
SimoleDateFormat解析字符串时间成为日期对象
解析方法 | 说明 |
public Date parse(String source) | 把字符串时间解析成日期对象 |
3、Calendar
代表的是系统此刻时间对应的日历。
通过它可以单独获取、修改时间中的年、月、日、时、分、秒等。
Calendar日历类的常见方法
方法名 | 说明 |
public static Calendar getInstance() | 获取当前日历对象 |
public int get(int field) | 获取日历中的某个信息。 |
public final Date getTime() | 获取日期对象。 |
public long getTimeInMillis() | 获取时间毫秒值 |
public void set(int field,int value) | 修改日历的某个信息。 |
public void add(int field,int amount) | 为某个信息增加/减少指定的值 |
注意:Calendar是可变对象,一旦修改后对象本身表示的时间将产生变化。