1.1 getClass()获取一个对象的类型class Class.Object.Student
1.2 hashCode方法,返回该对象的散列码值
如果两个对象的哈希码值不同,那这两个对象一定不等;
如果两个对象的哈希码值相同,不能确保这两个对象一定相等。
1.3 toString方法,返回该对象的字符串表示,默认返回运行时类名+@+对象的hashCode的16进制,一般需要被重写
1.4 equals方法,判断两个对象是否相,一般也需要重写
1.5 finalize() 当垃圾回收器确定不存在对该对象的更多引用时,对象的圾回收器调用该方,一般需要被重写
//Student类
package Class.Object;
import java.util.Objects;
public class Student {
private String name;
private int age;
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + ''' +
", age=" + age +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Student student = (Student) o;
return age == student.age && Objects.equals(name, student.name);
}
@Override
protected void finalize() throws Throwable {
System.out.println(this.name+"对象被回收了");
}
}
Student s1 = new Student("ming",25);
Student s2 = new Student("uzi",23);
// 判断是s1和s2是不是一个类型
// 1.getClass方法
Class class1=s1.getClass();
Class class2=s2.getClass();
if(class1==class2){
System.out.println(class1);
System.out.println("同一类型");
}else {
System.out.println("不是同一类型");
}
System.out.println("======================");
// 2.hashCode方法
System.out.println(s1.hashCode());
System.out.println(s2.hashCode());
Student s3=s1;
System.out.println(s3.hashCode());
System.out.println("======================");
//3.toString方法,在Studeng中已经被重写
System.out.println(s1.toString());
System.out.println(s2.toString());
System.out.println(s3.toString());
System.out.println("======================");
// 4.equals方法,判断两个对象是否相等
System.out.println(s1.equals(s2));
System.out.println(s1.equals(s3));
Student s4 = new Student("uzi",23);
System.out.println(s2.equals(s4));
// s2和s4不同,所以要重写equals方法
Student s5 = new Student("ming",25);
Student s6 = new Student("uzi",23);
new Student("ming",25);
new Student("uzi",23);
System.gc();
System.out.println("回收垃圾");
2.包装类
一般来说,java中有8大数据类型,被定义后存放在栈里边,而包装后,会有一些方法且存放在堆空间中。
1.Int与Integer类型的转换引用类型转换为基本类型称之为拆箱,基本类型转换为引用类型称之为装箱。
// 自动装箱
int age=20;
Integer integer4=age;
// 自动拆箱
int age2=integer4;
2.基本类型与字符串的转换
int num = 18;
// 使用Integer类型
// 1.构造方法
Integer integer1 = new Integer(num);
// Integer integer2 = Integer.valueOf(num);
// 2.类型转换:拆箱
Integer integer3 = new Integer(100);
// int i = integer3.intValue();
// 自动装箱
int age = 20;
Integer integer4 = age;
// 自动拆箱
int age2 = integer4;
1.基本类型转换为字符串
1.基本类型转换为字符串
int n1 = 100;
// 1.1使用+号
String s1 = n1 + "";
// 1.2 使用INtegar中的toString方法
String s2 = Integer.toString(n1, 16);
2.字符串转换为基本类型
// 字符串转换为基本类型
String str = "150";
// 使用Integer中的parseXXX();
int n2 = Integer.parseInt(str);
//Integer缓冲区的范围是-128-12
3.boolean字符串形式转换为基本类型 “true”–>true 非"true"–>false
String str2 = "true";
String str = "ture";
boolean b1 = Boolean.parseBoolean(str2);//true
boolean b2 = Boolean.parseBoolean(str2);//false
3.String类
4.StringBuffer,StringBuilder 类length()返回字符串长度
charAt( int index )返回某个位置的字符 contains(Strin str)判断是否包含某个字符串,返回值为true或false
toCharArray() 将字符串转换成数组
Indexof(Strin str,int index)查找str首次出现的下标,存在则返回改下标,不存在则返回-1,index为开始寻找的下标
castIndexOf(String str)查找字符串在当前字符串中最后一次出现的下标索引 trim()去掉字符串前后的空格
toUpperCase()字符串转换为大写toLowerCase()
endWith(String str)判断是否以str结尾startWith判断是否以str开头 replace(char oldChar,chanewChar)将旧字符串替换为新字符串
spilt(String str)根据str做拆分
equals(Strinstr);比较字符串是否相等
equalsIgnoreCase()忽略大小写的比较
compareTo(Strinstr);比较两个字符串的大小
subString(int index1,inindex2)从低index1的位置截取字符串到index2的位置
StringBuffer可变长字符串,运行效率慢、线程安全
StringBuilder可变长字符串,运行效率快、线程不安全
StringBuffer和StringBuilder 效果一样可以替换
// 1.append();追加
sb.append("java世界第一");
System.out.println(sb.toString());
sb.append("java真香");
System.out.println(sb.toString());
// 2.insert();添加
sb.insert(0, "你好");
System.out.println(sb.toString());
// 3.replace();替换
sb.replace(0, 6, "php");
System.out.println(sb.toString());
// 4.delete();删除
sb.delete(7, 11);
System.out.println(sb.toString());
// 5.reverse()反转
System.out.println(sb.toString());
5.BigDecimal类
BigDecimal打的浮点数精确计算
double d1=1.0;
double d2=0.9;
System.out.println(d1-d2);
double res=(1.4-0.5)/0.9;
System.out.println(res);
// BigDecimal打的浮点数精确计算
// 减法
BigDecimal bd1=new BigDecimal("1.0");
BigDecimal bd2=new BigDecimal("0.9");
BigDecimal bd3=bd1.subtract(bd2);
System.out.println(bd3);
// 加法
BigDecimal bd4=bd1.add(bd2);
System.out.println(bd4);
// 乘法
BigDecimal bd5=bd1.multiply(bd2);
System.out.println(bd5);
// 除法,除不尽的时候,可以用divide的重载,后边一位是保留的小数,在后边是取舍的方式,一般用BigDecimal.ROUND_HALF_UP,即四舍五入
BigDecimal bd6 = new BigDecimal("1.4").subtract(new BigDecimal("0.5")).divide(new BigDecimal("0.9"));
System.out.println(bd6);
BigDecimal bd7=new BigDecimal("10").divide(new BigDecimal("3"),3,BigDecimal.ROUND_HALF_UP);
System.out.println(bd7);.
6.Date类
Date表示特定的瞬间,精确到毫秒,Date的大部分类已经被Calendar类中的方法取代。
1.创建date对象
// 今天的时刻
Date date1=new Date();
System.out.println(date1.toString());
System.out.println(date1.toLocaleString());
// 昨天的时刻
Date date2=new Date(date1.getTime()-60*60*24*1000);
System.out.println(date2.toLocaleString());
// 方法after() before()
boolean b1=date2.after(date1);
System.out.println(b1);
boolean b2=date2.before(date1);
System.out.println(b2);
// 比较compareTo();
int d=date1.compareTo(date2);
System.out.println(d);
int d2=date1.compareTo(date1);
System.out.println(d2);
// equals比较是否相等
System.out.println(date1.equals(date2));
7.Calendar类
Calendar提供了获取或者设置各种日历字段的方法。
构造方法:peotected Calendar():由于修饰符是protected,所以无法直接创建该对象
其他方法:
Calendar calendar=Calendar.getInstance();
System.out.println(calendar.getTime().toLocaleString());
System.out.println(calendar.getTimeInMillis());
// 获取时间信息
int year=calendar.get(Calendar.YEAR);
// int year=calendar.get(1);和上边相同
int month=calendar.get(Calendar.MONTH);
int day=calendar.get(Calendar.DAY_OF_MONTH);
int hour=calendar.get(Calendar.HOUR_OF_DAY);//HOUR是12小时制
int minute=calendar.get(Calendar.MINUTE);
int second=calendar.get(Calendar.SECOND);
System.out.println(year+"年"+(month+1)+"月"+day+"日"+hour+"时"+minute+"分"+second+"秒");
// 修改时间
Calendar calendar2=Calendar.getInstance();
calendar2.set(calendar.DAY_OF_MONTH,20);
System.out.println(calendar2.getTime().toLocaleString());
// add方法修改时间
calendar2.add(Calendar.HOUR,1);//calendar2.add(Calendar.HOUR,-1);
System.out.println(calendar2.getTime().toLocaleString());
// 补充方法
int max=calendar2.getActualMaximum(Calendar.DAY_OF_MONTH);
int min=calendar2.getActualMinimum(Calendar.DAY_OF_MONTH);
System.out.println(max+"......"+min);
8.SimpleDateFormat类
SimpleDateFormat是一个以语言环境有关的方式来格式化和解析日期的具体类、
进行格式化(日期->文本)、解析(文本->日期 )
public static void main(String[] args) throws Exception{
//1.创建SimpleDateFormat对象 Y 年 M 月
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年mm月dd日 hh:mm:ss");
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy/mm/dd");
// 2. 创建Date
Date date=new Date();
// 3.格式化date(把日期转换为字符串)
String str=sdf.format(date);
System.out.println(str);
// 解析:把字符串转换为日期
Date date1 = sdf2.parse("1998/07/28");//必须符合上边定义的格式,否则报错
System.out.println(date1);
}
9.System类
System系统类,主要用于获取系统的属性数据和其它操作,构造方法私有的
// 1. arraycopy数组的复制
// src源数组,srcPos从哪个位置开始复制,dest目标数组,destPos目标数组位置,length复制的长度
int[] arr1 = {1, 2, 3, 4, 5, 6};
int[] arr2 = new int[6];
System.arraycopy(arr1, 2, arr2, 2, 3);
for (int i : arr2) {
System.out.println(arr2[i]);
}
// Arrays.copyOf();也是复制,不过是来自System方法实现的
// 2.currentTimeMillis(),可以计时
System.out.println(System.currentTimeMillis());
long start = System.currentTimeMillis();
for (int i = 0; i < 999999; i++) {
for (int i1 = 0; i1 < 99999; i1++) {
int res = i + i1;
}
}
long end = System.currentTimeMillis();
System.out.println("用时:" + (end - start));
// 3.System.gc();告诉垃圾回收器回收垃圾
System.gc();
// 4.exit()推出jvm
System.exit(0);
System.out.println("程序已经结束了");//程序结束了,所以不会执行



