一 、Object类
1、toString() 方法:
重写前:输出对象时自动调用toString(),打印的是对象的全类名@十六进制地址。
重写后:输出的是对象的属性或内容,编辑器可以生成toString()方法,也可以自己重写,输出内容自定义。
2、equals() 方法:
重写前: 调用的是超类Object中的equals(),比较的是对象的地址值
重写后: 比较属性值
3、Objects类中的equals()方法:
好处:增加了一些健壮性和非空性的判断
public class EqualsTest
{
public static void main(String[] args)
{
String s1 = "abc";
String s2 = null;
System.out.println(s1.equals(s2)); //false
// System.out.println(s2.equals(s1)); NullPointerException
System.out.println(Objects.equals(s1,s2)); //false
System.out.println(Objects.equals(s1,s1)); //true
}
}
二、日期类
1、Date类:
该类中大部分方法都已过时,其中常用的两个构造方法:
Date() 无参数,根据当前的系统时间创建一个日期对象
Date(long time) 有一个long 类型的时间参数,传入的是距离元年的毫秒数。
输出格式:Fri Jul 20 08:30:04 CST 2018
成员方法:getTime() 获取距离元年的毫秒数。(相当于System.currentTimeMillis())
实例:
public class DateTest
{
public static void main(String[] args)
{
Date date = new Date();
System.out.println(date); //Fri Jul 20 08:30:04 CST 2018
Date date1 = new Date(56743287194268L);
System.out.println(date1); //Mon Feb 15 08:13:14 CST 3768
long time = date.getTime();
System.out.println(time); //1532046879896 距离元年的毫秒数
}
}
2、SimpleDateFormat
构造方法:
SimpleDateFormat(String format) 根据一个指定的格式来创建一个格式化日期对象
成员方法:
String format(Date date) 将一个日期对象转换成指定的格式
Date parse(String date) 将一个字符串类型的日期格式转换成日期对象
实例:
public class SimpleDateTest
{
public static void main(String[] args)throws Exception
{
SimpleDateFormat sim = new SimpleDateFormat("yyyy-MM-dd");
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个日期:yyyy-MM-dd");
String str = sc.nextLine();
Date date = sim.parse(str);
System.out.println(date); //Fri Jul 20 00:00:00 CST 2018
SimpleDateFormat simd = new SimpleDateFormat("yyyy年MM月dd日");
String strDate = simd.format(date);
System.out.println(strDate); //2018年07月20日
}
}
计算出生了多少天:(获取当前时间和生日时间的毫秒数 getTime()方法)
public class Birthday
{
public static void main(String[] args)throws Exception
{
Scanner sc = new Scanner(System.in);
System.out.println("请输入生日:yyyy-MM-dd");
String str = sc.nextLine();
SimpleDateFormat sim = new SimpleDateFormat("yyyy-MM-dd");
Date date = sim.parse(str);
long start = date.getTime();
long end = (new Date().getTime());
long time = end-start;
System.out.println(time/1000/60/60/24+"天");
}
}
3、Calendar
抽象类,获取方式:Calendar c = Calendar.getInstance();
成员方法:
public int get(int field):返回给定日历字段的值。
public void set(int field, int value):将给定的日历字段设置为给定值。
public abstract void add(int field, int amount):根据日历的规则,为给定的日历字段添加或减去指定的时间量。
public Date getTime():返回一个表示此Calendar时间值(从历元到现在的毫秒偏移量)的Date对象。
实例:输入一个日期,获取当天是星期几
public class CalendarTest
{
public static void main(String[] args)throws Exception
{
System.out.println("请输入日期:yyyy-MM-dd");
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
SimpleDateFormat sim = new SimpleDateFormat("yyyy-MM-dd");
Date date = sim.parse(str);
Calendar c = Calendar.getInstance();
c.setTime(date);
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH)+1;
int day = c.get(Calendar.DATE);
int week = c.get(Calendar.DAY_OF_WEEK);
System.out.println(year+"年"+month+"月"+day+"日是"+getWeek(week));
}
public static String getWeek(int index)
{
String[] str ={"","星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
return str[index];
}
}
三、System类
成员方法:
long currentTimeMillis();
void arrayCopy(int[] src,int index,int[] desc,int index,int length) ;
(原数组 原数组开始索引 目的数组 目的数组开始索引 拷贝的长度)
void exit(int i);
实例:
1、测试for循环打印1-9999数字所需的时间,用currentTimeMillis()方法
public class TimeTest
{
public static void main(String[] args)
{
long star = System.currentTimeMillis();
for (int i = 1; i <= 9999; i++)
{
System.out.println(i);
}
long end = System.currentTimeMillis();
System.out.println("所用时间"+(end-star)+"毫秒"); //所用时间160毫秒
}
}
2、将src数组中前3个元素,复制到dest数组的前3个位置上
public class ArrayCopy
{
public static void main(String[] args)
{
int[] arr1 = {1,2,3,4,5};
int[] arr2 = {6,7,8,9,0};
System.arraycopy(arr1,0,arr2,0,3);
for (int i : arr2)
{
System.out.print(i+" "); //1 2 3 9 0
}
}
}
四、StringBuilder类(字符串缓冲区)
1、StringBuilder和String的区别
String是不可变的字符序列、操作字符串效率较低、JDK1.0版本出现
StringBuilder是可变的字符序列、操作字符串效率较高、JDK1.5版本出现
2、String和StringBuilder相互转换
String转成StringBuilder:
A:通过StringBuilder有参构造
B:创建一个空的StringBuilder对象,调用append()方法将字符串添加进去
StringBuilder转成String:
调用toString()方法即可
3、构造方法:
StringBuilder() 创建一个字符串缓冲区
StringBuilder(String str) 根据传入的字符串创建一个字符串缓冲区对象
成员方法:
StringBuilder append(Object obj); 往缓冲区中追加内容,可连续追加
StringBuilder reverse(); 将缓冲区中的内容反转(逆置)
String toString(); 将缓冲区的内容转换成字符串