java常用类
常用类
Object类
Object类的几个特性
- 超类,基类 ,所有类的间接或者直接的父类;
- Object 类中的所有方法,在所有的对象中都能够使用;
- Object 可以存储任何的对象
Object 中的常用方法
- public final Class<?> getClass():返回的是一个class类型
public static void main(String[] args){
Student s1 = new Student();
Student s2 = new Student();
if (s1.getClass() == s2.getClass()){
System.out.print("s1和s2属于同一类型");
}else{
System.out.print("s1和s2不属于同一类型");
}
}
-
public int hashCode():返回的是一个哈希码值
- 哈希值是根据 对象的地址 或者 字符串 或者 数字 使用哈希算法计算出来的int类型的数值;
- 一般,相同对象返回相同的哈希值;
- 哈希值 也可以理解为 对象的地址;
-
public String toString ():返回一个字符串,但是一般会在实体类中重写该方法
-
public boolean equals(Object obj)
public boolean equals(Object obj) {
//注意:这里比较的是两个对象的地址
return this == obj;
}
包装类
什么是包装类
- 基本数据类型对应的引用数据类型
- Object 可用于接收所有的数据, 包装类的默认值都是 null
注:基本数据类型创建后,存储在栈中;包装类创建后,存储在堆中。
基本数据类型和对应的包装类
基本数据类型 | 包装类 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
boolean | Boolean |
char | Character |
装箱和拆箱
-
装箱
//将基本数据类型转换成包装类(从栈转换成堆),就叫装箱 public static void main (String[] args){ int i = 100; integer integer01 = i; }
-
拆箱
//将包装类转换成基本数据类型(从堆转换成栈),就叫拆箱 public static void main (String[] args){ integer integer01 = 100; int int01 = integer; }
注:包装类 Byte,Short, Integer, Long, Float, Double 都继承了Number类;
基本数据类型和字符串之间的的转换
- int >>>> String
int age = 100;
String str = Integer.toString(age);
- String >>>> int
String str = "150"; //注意:str的字符串中只能是数字
int i = Integer.parseInt(str);
- String >>> boolean
// str 为" true"转换成true 非"true"转换成false
String str = "true";
Boolean flag = Boolean.parseBoolean(str);
包装类 String
- 创建String对象的字符串后,字符串是不能改变的,改变的指向的地址;
- 字符串字面值存储在字符串池中,可以实现共享
-
String 常用方法
public int length():返回字符串的长度 public char charAt(int index):返回字符的所在坐标 public boolean contains(String str):判断是否包含str public char[] toCharArray():将字符串转换成char数组 public String trim():去掉字符创收尾的空格 public String toUpperCase():将小写转换成大写 public boolean endWith(String str):判断是以str为结尾的 public String replace(char oldChar,char newChar):将旧的字符替换成新的字符,返回一个先的字符串
可变字符串 StringBuffer 和 StringBuilder
-
StringBuffer 速度比String快,但比StringBuilder慢,线程安全;
-
StringBuilder速度快,但是线程不安全,建议单线程时使用;
-
StringBuffer 和 StringBuilder的常用方法(两者相同)
StringBuffer sb = new StringBuffer; sb.append("java");//在字符串的后面追加"java" sb.insert(0,"java");//在下标为0的位置,添加“java” sb.delete(0,5);//删除0到4的字符 sb.replace(0,5,"java");//将下标0到4的字符替换成"java" 上面的三个都能用replace()来实现
BigDecimal
-
比较 double float 和 BigDecimal
- double,float由于存储方式的原因(存储的是一个近似值),所以在计算后的结果会出现误差
- BigDecimal 存储是直接存储的方式,所以计算的结果没有误差;精确计算浮点数;
-
BigDecimal 的创建及使用
BigDecimal bd1 = new BigDecimal("1.0"); BigDecimal bd2 = new BigDecimal("0.9"); //减法 bd1.subtract(bd2); //加法 bd1.add(db2); //乘法 bd1.multiply(bd2); //除法 参数的2是保留两位小数 最后一个参数是四舍五入 bd1.divide(bd2,2,BigDecimal.ROUND_HALF_UP);
Date类
概念
- Date表示特定的瞬间,精确到毫秒;
- Date中大部分的方法都被Calendar 所取代;
还没有 被弃用的方法
public static void main(String[] args) {
//此时此刻的时间
Date date01 = new Date();
//昨天的时间
//getTime()获取1970 01 01到现在的毫秒值
Date date02 = new Date(date01.getTime()-60*60*24*1000);
//after() before():判断时间在另一个时间的前面还是后面返回结果为boolean
boolean r1 = date01.after(date02);//r1的结果为true
boolean r2 = date01.before(date02);//r1的结果为false
//compareTo():比较两个时间 ,返回int值
int i1 = date01.compareTo(date02);//i1=1
int i2 = date01.compareTo(date01);//i2=0
int i3 = date02.compareTo(date01);//i3=-1
//打印时间
System.out.println(date01.toString());
System.out.println(date02.toLocaleString());
}
Calendar类
概念
- Calendar 提供了获取或设置各种日历字段的方法;
- 构造方法
- protected Calendar() :由于是protected修饰的,所有无法直接的创建对象;
常用方法
- static Calendar getInstance() 提供静态的方法创建Calendar对象;
- void set(int year,int month,int hourofday,int minute,int second) 设置日历的年,月,日,时,分,秒;
- int get (int field) 返回给定日历字段的值;
- void setTime(Date date) 用给定的Date设置日历的时间;
- Date getTime() 返回一分Date对象的日历时间;
- void add(int field,int amount) 按照日历的规则,给指定字段添加或减少时间量;
- long getTimeInMillise() 毫秒为单位返回该日历的时间值;
SimpleDateFormat类
概念
-
SimpleDateFormat 是个一语言环境有关的方式来格式化和解析日期的实现类;
-
格式化日期 :将日期转换成字符串;解析日期:将字符串转换成日期;
-
常用的时间模式字母
字母 日期或时间 y 年 M 月份 d 天数 H 一天中的小时数(0-23) m 分钟 s 秒 S 毫秒
实例
public static void main(String[] args) {
//将日期转换成字符串
//实例化SimpleDateFormat 的参数为转换后字符串的格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
Date date = new Date();
String str = sdf.format(date);
System.out.println(str); //输出为“2020年12月23日”
}
public static void main(String[] args) throws ParseException {
//将字符串转换成日期
//实例化SimpleDateFormat 的参数为转换后日期的格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
Date date = new Date();
String str = "1997年9月9日";
date = sdf.parse(str);
System.out.println(date); //输出为“Tue Sep 09 00:00:00 CST 1997”
}
System类
概念
-
System系统类,主要用于获取系统的属性数据和其他操作,构造方法为私有的,不能实例化;
-
常用方法
- static long currentTimeMillis(); 获取当前系统时间,返回的是一个毫秒值;