Java常用类
Object类
1.Object是所有java类的父类
2.如果在类的声明的时候没有显示的通过extends去继承谁,默认会继承Object
3.Object类的作用就是提供一些公用的属性和方法
4.Object只是提供一个无参的构造方法
常用的方法
(1)equals(Object obj) :比较两个对象的地址值是否相等
(2)getClass() :返回此 Object的运行时类。
(3)hashCode() :返回该对象的哈希值
(4)toString() :打印的是对象在堆里地址值
当我们创建完一个对象以后,我们要输出这个对象的引用,实际上就是调用了当前对象的toString 方法,打印就是地址值
object类中是这么定义的:
public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()); }
像String /Date 、File、包装类都重写了toString 方法,重写后的返回是当前对象的“实体内容”
如果自己定义的类需要返回"实体内容"的话,我也需要重写toString 方法。
String str=new String("str"),这种方式在内存中创建了几个对象?
两个,一个堆里面的,一个字符串常量池里面的
==和equals区别 面试重点
==:比较运算符
(1)可以使用在基本数据类型和引用数据类型
(2)如果比较基本数据类型的话,比较的是两个变量的值是否相等。
(3)如果比较引用数据类型的话,比较的是两个对象的地址值是否相等。
equals()的使用
(1)equals是一个方法
(2)它只能对象引用数据类型进行比较
(3)object类里面是这么定义的
public boolean equals(Object obj) { return (this == obj); }
发现它还是通过==进行对象的两个对象,object定义的equals方法和==的作用一样,实际比较的是两个对象的地址值是否相等
(4)像String 、Date 、File、包装类等等都重写了equals方法,重写以后的,比较的不是地址了,而是比较两个对象的“实体内容”是否相等。
(5)通常情况下,我们自己定义的类是没有重写equals方法的,如果你比较两个对象的“实体内容”,是否相等,我们需要重写equals方法,一般情况下都会进行重写。
重写原则:比较两个对象的实体内容是否相等
String、StringBuffer、StringBuilder三者的区别?
String:不可变序字符序列,如果要修改字符串的值,不是在原有字符串值的基础上去改,而是重新分配一块内存区域
StringBuffer:可变字符序列,在原有字符串的基础上进行更改,线程安全的,效率低
StringBuilder:可变字符序列,在原有字符串的基础上进行更改,线程不安全的,效率高
String、StringBuffer、StringBuilder三者的效率:StringBuilder>StringBuffer>String
包装类
1.java提供了8种基本数据类型,每个基本数据类型对应一个包装类,使基本数据类型的变量就可以有类的特征
2.作用:就是做基本数据类型、包装类、String进行类型转换
3.装箱和拆箱(自动) 面试
装箱:基本数据类型转成对应的包装类
拆箱:包装类转成对应的基本数据类型
LocalDateTime常用方法
getDayOfMonth()/getDayOfYear() |
获得月份天数(1-31) /获得年份天数(1-366) |
getDayOfWeek() |
获得星期几(返回一个 DayOfWeek 枚举值) |
getMonth() |
获得月份, 返回一个 Month 枚举值 |
getMonthValue() / getYear() |
获得月份(1-12) /获得年份 |
getHour()/getMinute()/getSecond() |
获得当前对象对应的小时、分钟、秒 |
withDayOfMonth()/withDayOfYear()/ withMonth()/withYear() |
将月份天数、年份天数、月份、年份修改为指定的值并返回新的对象 |
plusDays(), plusWeeks(), plusMonths(), plusYears(),plusHours() |
向当前对象添加几天、几周、几个月、几年、几小时 |
minusMonths() / minusWeeks()/ minusDays()/minusYears()/minusHours() |
从当前对象减去几月、几周、几天、几年、几小时 |