工具类
Object
Object: 所有类的父类
- Object类中的方法都可以被子类使用
Object类中的方法:
- 1 getClass: 返回对象的字节码文件对象
- 2 hashCode: 返回对象的哈希码值(对象的内存地址值)
- 3.equals: 比较两个对象是否相等
- 4.toString: getClass().getName() + “@” + Integer.toHexString(hashCode()); 类的全路径名 + @ + 对象的哈希码值的十六进制
如果我们想按照自己的想法输出对象的信息,我们就需要重写toString方法
全限定符名: 包名.类名
面试
equals 和 == 的区别:
- equals: 底层的代码就是==,
- equals: 只能比较引用数据类型
- == : 可以比较基本数据类型和引用数据类型,比较基本数据类型的时候比较的是值,比较引用数据类型的时候比较的是地址值
String
- 被final修饰的类,不能被继承
- 字符串存在于常量池中。 如果new String() 会在堆内存中开辟空间,如果是直接赋值的话,会在常量池中开辟空间
方法名 | 作用 | 返回值 |
---|---|---|
isEmpty() | 判断是否为空 | boolean |
length() | 取到该String的长度 | int |
equals(Object obj) | 判断两个字符串是否相等 | boolean |
equalsIgnoreCase(String as) | 不区分大小写比较 | Object |
charAt(int index) | 返回该下标的char | char |
substring(int start) | 截取字符串下标从start开始 | String |
substring(int start,int end) | 截取区间字符串从start开始到end结束(包头不包尾) | String |
replace(char old,char new) | 替换字符串 | String |
trim() | 去掉字母首尾空格 | String |
indexOf() | 寻找某个字符串在目标字符串的位置 | int |
StringBuffer
- String 可以通过+,做字符串的拼接,但是效率低
常见方法
string、stringbuilder、stringbuffer都是Java中的字符串类,但它们有以下区别:
- string是不可变的,一旦创建就不能修改,每次修改都会创建一个新的对象,因此在频繁修改字符串时,效率较低。
- stringbuilder和stringbuffer都是可变的,可以在原有对象上进行修改,因此在频繁修改字符串时,效率较高。
- stringbuilder是线程不安全的,而stringbuffer是线程安全的,因此在多线程环境下,应该使用stringbuffer。
- stringbuilder是JDK1.5之后新增的类,而stringbuffer是早期就存在的类
包装
基本数据类型: 是没有方法的,但是可以通过包装类来实现方法的调用
- 写法上只有
- int Integer
- char Character
剩下的都是首字母大写
- 装箱:穿装备(变强) 基本数据类型—>包装类
- 拆箱:脱装备(变弱) 包装类—>基本数据类型
Math
- 向上向下取整
//ceil 向上取整
double b = 3.56;
double ceil = Math.ceil(b);
System.out.println(ceil);
//floor 向下取整
double floor = Math.floor(b);
System.out.println(floor);
random()生成随机数
//nexInt 生产一个随机数 nextInt(int n) 生成一个0-n之间的随机数
Random random = new Random();
int i = random.nextInt(100);
System.out.println(i);
Data
date表示日期
- 1 秒= 1000 毫秒
SimpleDateFormat:
- format Date -> String
- parse String -> Date
// 获取当前时间的毫秒值
long time = date.getTime();
long l = System.currentTimeMillis();
// 日期格式化 yyyy-MM-dd HH:mm:ss:SSS year month day hour minute second millisecond
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String format = sdf.format(date);
System.out.println(format);
//这里需要注意的就是24时和12时的显示正则,H大写为24时计时法,h小写为12时计时法,两个h时,即hh,当为个位数时间时前面自动补0
Calender 日历类
日历类擅长的是堆日期进行加减操作
Calendar instance = Calendar.getInstance();
System.out.println(instance);
instance.add(Calendar.MONTH,2);
instance.add(Calendar.DAY_OF_MONTH,-2);
// calendar转换成date
Date time = instance.getTime();
System.out.println(time);
// date转换成calendar
// instance.setTime(new Date());