本文章是本人根据视频和网上资料整理所写笔记,可能有不通顺或遗漏的地方,请尽量参考学习来源处的链接去进行学习。
学习来源
【狂神说Java】Java零基础学习视频通俗易懂:https://www.bilibili.com/video/BV12J41137hu
菜鸟教程: https://www.runoob.com/
Java常用类(一)之Object类详解 https://www.cnblogs.com/zhangyinhua/p/7715486.html#_lab2_0_3
Random类的使用 https://www.cnblogs.com/libinhong/p/10988902.html
Object类
-
hashcode()
该方法用于哈希查找,可以减少在查找中使用equals的次数,重写了equals方法一般都要重写hashCode方法。这个方法在一些具有哈希功能的Collection中用到。 一般必须满足obj1.equals(obj2)==true。可以推出obj1.hash- Code()==obj2.hashCode(),但是hashCode相等不一定就满足equals。不过为了提高效率,应该尽量使上面两个条件接近等价。 如果不重写hashcode(),在HashSet中添加两个equals的对象,会将两个对象都加入进去。
-
toString()
Object 类的 toString 方法返回一个字符串,该字符串由类名(对象是该类的一个实例)、at 标记符“@”和此对象哈希码的无符号十六进制表示组成。 该方法用得比较多,一般子类都有覆盖。
-
clone()
Clone()方法的使用比较简单,注意如下几点即可: 什么时候使用shallow Clone,什么时候使用deep Clone,这个主要看具体对象的域是什么性质的,基本型别还是reference variable 调用Clone()方法的对象所属的类(Class)必须implements Clonable接口,否则在调用Clone方法的时候会抛出CloneNotSupportedException
-
getClass()
返回次Object的运行时类类型。 不可重写,要调用的话,一般和getName()联合使用,如getClass().getName();
-
notify()
该方法唤醒在该对象上等待的所有线程。
-
wait()
wait方法就是使当前线程等待该对象的锁,当前线程必须是该对象的拥有者,也就是具有该对象的锁。wait()方法一直等待,直到获得锁或者被中断。wait(long timeout)设定一个超时间隔, 如果在规定时间内没有获得锁就返回。
-
equals()
Object中的equals方法是直接判断this和obj本身的值是否相等,即用来判断调用equals的对象和形参obj所引用的对象是否是同一对象, 所谓同一对象就是指内存中同一块存储单元,如果this和obj指向的hi同一块内存对象,则返回true,如果this和obj指向的不是同一块内存,则返回false。 注意:即便是内容完全相等的两块不同的内存对象,也返回false。 如果是同一块内存,则object中的equals方法返回true,如果是不同的内存,则返回false 如果希望不同内存但相同内容的两个对象equals时返回true,则我们需要重写父类的equal方法 String类已经重写了object中的equals方法(这样就是比较内容是否相等了)
Random类
-
生成随机数
- Random类的nextDouble()方法返回的是0.0至1.0之间的double类型值,nextFloat()方法返回的是0.0至1.0之间的float类型值,nextInt(int n)返回的是0(包括)至n(不包括)之间的int值
示例
import java.util.Random;
public class Main{
public static void main(String[] args)throws Exception{
Random r=new Random();
System.out.println("产生Float类型随机数:"+r.nextFloat());
System.out.println("产生1~100之间int类型随机数:"+r.nextInt(100));
System.out.println("产生double类型随机数:"+r.nextDouble());
}
}
File类
-
创建文件
File parentFile= new File(path);
-
查看文件
-
查找文件
-
修改文件
-
删除文件
包装类
- 自动装箱和拆箱
Date类
- Date
- SimpleDateFormat
- yyyy-MM-dd HH:mm:ss
- Calendar(推荐使用)
Math
- 常见的数学运算
String类
- 非线程安全
- final
- 操作量少用String
StringBuffer
- 可变长
- append()
- 多线程、大数据
- 效率低,线程安全:StringBuffer中很多方法带有synchronize关键词
StringBuilder
- 可变长
- 单线程、大数据
- 效率高,不安全
String值计算
String str = "a" + 1 + 2; => a12
String str = 'a' + 1 + 2; => a被认为是char字符转为了数字后进行了运算
String str = 1 + 2 + "a"; => 3a