目录
1、思维导图
2、权限修饰符
3、代码块
4、常用API
4.1 Object类
4.1.1 equals()方法
4.1.2 toString()方法
4.2 Date类
4.2.1 getTime()方法
4.2.2 after,before方法
4.3 DateFormat类
4.3.1 创建对象
4.3.2 format()方法
4.3.3 parse()方法
4.4 Calendar类
4.4.1 get()方法
4.4.2 set()方法
4.4.3 add()方法
4.5 Arrays类
4.5.1 sort()方法
4.5.2 toString()方法
4.6 System类
4.6.1 exit()方法
4.6.2 currentTimeMillis()方法
1、思维导图
2、权限修饰符
权限修饰符:作用于成员变量和成员方法
修饰范围如下表:
其中private的访问权限是最小的,只能被本类中的成员访问,在之前的封装里面就已经用到了private,如果其他的类需要访问,则需要提供set个get方法
空的权限修饰符比private访问范围大一点,就是可以在本包下的不同类中进行访问,即直接在访问的类中创建被访问类的对象即可
protected可以在不同包的子类中进行访问,上面空权限修饰符是需要创建对象调用,而不同包的子类则需要继承,再直接调用
public所有的地方都能访问
3、代码块
代码块有三种,静态代码块,构造代码块,局部代码块,由于后面二者不常用,所以着重看第一种:静态代码块
静态代码块:执行优先级高于非静态的初始化块,它会在类初始化的时候执行一次,执行完成便销毁,它仅能初始化类变量,即static修饰的数据成员。
在类的运行内存图中,每个方法在执行前都会被加载进方法区,然后就不会动了,也就是说,静态代码块只能运行一次
写法:
类中:{代码;}
4、常用API
常用API其实就是Java中已经定义好的类,我们需要学习它们的方法,由于目前博主只学了6个类,以后学完整会补充。
4.1 Object类
Object类是所有类的父类,所有类都直接或间接的继承了Object
如图,我只是在一个测试类中写了一个空的字符串s,然后写下s. ,却出现了很多方法,这些方法在我的测试类中都不存在的,那么说明String继承了某个类,而这些方法就是那个类里面的,这个类就是Object类
4.1.1 equals()方法
Object类中的equals()方法可以说是没有意义的,打开Object类中的源码
可以发现源码中用的==号,==号在之前也提到过,当它用于基本数值类型的比较时,是比较数值的,但是当用于引用类型的比较时,比较的却是地址值,所以它是需要在子类中重写的,IDEA是一个很好用的软件,它不需要我们自己重写,直接按Alt + Insert,找到equals就会自动重写好,我也是第一次感受到了源码的魅力,只能说,任重而道远,源码让我见识到了什么叫优秀的代码
public boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;Student student = (Student) o;if (age != student.age) return false;return name != null ? name.equals(student.name) : student.name == null;}
4.1.2 toString()方法
toString()方法的作用是把对象转成一个字符串,但是打开源码会发现,Object类里面的方法是把对象转成一个 "包名.类名+@+地址值"
所以也需要重写,重写的快捷键和equals方法的一样,不做过度赘述
4.2 Date类
见名知意,是时间的类,但要注意,Date类的单位只有毫秒
创建对象的方法有两种:
1、无参
Date d = new Date();
此方式创建的时间是现在的时间,也就是电脑系统上的时间
2、有参
Date d = new Date(1000);
此方法创建的时间是指,在标准基准时间的前提下,加上1000毫秒,也就是1秒,计算机的标准基准时间是指历元,即1970年1月1日00:00:00 GMT。。。由于中国的地理位置处在经八维度,所以在中国地区的标准基准时间为:1970年1月1日08:00:00 GMT
4.2.1 getTime()方法
获得传入对象时间到标准基准时间的毫秒差,用long来接收变量
Date d = new Date();long time = d.getTime();
4.2.2 after,before方法
判断该时间是否在括号里的时间之前(后)
Date d1 = new Date();Date d2 = new Date(1000);boolean b1 = d1.before(d2);System.out.println(b1); //falseboolean b2 = d1.after(d3);System.out.println(b2); //true
4.3 DateFormat类
4.3.1 创建对象
DateFormat的作用是进行日期格式的转换,可以把美国人用的不习惯的日期格式转成我们习惯的格式,但是查阅源码发现,DateFormat是一个抽象类
所以创建对象需要用他的子类:SimpleDateFormat类
格式:
SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日 HH点mm分ss秒");
需要注意的是,括号里的日期格式必须与接下来要传入的日期数据格式相同,并且年月日小时分钟秒等符号,在Java中都有明确的规定用什么字母:
4.3.2 format()方法
将日期类转换为字符串,只需注意格式一样,用字符串接收变量即可
SimpleDateFormat f = new SimpleDateFormat("yyyy年MM月dd日 HH点mm分ss秒");Date d = new Date();String s = f.format(d);
4.3.3 parse()方法
将字符串转换为日期类
String str = "2000年09月07日 12点12分12秒";Date date = f.parse(str);
4.4 Calendar类
日历类与日期类不同的是:里面把每个时间单位分别进行定义
创建对象:
//方式一://创建Calendar的子类Calendar c = new GregorianCalendar();//方式二://内部会根据当前电脑系统决定创建哪个子类Calendar c2 = Calendar.getInstance();
4.4.1 get()方法
获取某个时间单位的值:
Calendar c = Calendar.getInstance();int year = c.get(Calendar.YEAR);System.out.println(year);int month = c.get(Calendar.MONTH);System.out.println(month + 1);int day = c.get(Calendar.DAY_OF_MONTH);System.out.println(day);int hour = c.get(Calendar.HOUR_OF_DAY);System.out.println(hour);int minute = c.get(Calendar.MINUTE);System.out.println(minute);int second = c.get(Calendar.SECOND);System.out.println(second);int week = c.get(Calendar.DAY_OF_WEEK);String[] arr = {"", "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};System.out.println(arr[week]);}
需要注意的是:月份和星期,由于文化差异,美国的月份是从0到11月,所以我们在获得month的时候要+1,美国的星期从星期日开始,在获取week的时候,创建一个字符串数组,0索引处空着,然后用剩下的索引代表星期日到星期六
4.4.2 set()方法
修改某个时间单位:
Calendar c = Calendar.getInstance();c.set(Calendar.DAY_OF_MONTH,11);c.set(Calendar.YEAR,);
4.4.3 add()方法
加减某个时间单位:
Calendar c = Calendar.getInstance();c.add(Calendar.DAY_OF_MONTH,2);c.add(Calendar.MONTH,-10);
4.5 Arrays类
Arrays是一个数组工具类,用来操纵数组,这里工具类指的是这个类中的方法全都是静态方法,这个类不需要创建对象,比如很早之前就学到过的:不遍历一个数组,就能输出该字符串:Arrays.toString(arr);
4.5.1 sort()方法
将一个数组进行排序
int[] arr = {123,2,534,65,65,7,68,7,98};Arrays.sort(arr);
4.5.2 toString()方法
把数组转换成字符串
int[] arr = {123,2,534,65,65,7,68,7,98};String s = Arrays.toString(arr);
4.6 System类
System叫系统工具类,和Arrays类一样,System类中的变量都是静态变量,类中的方法都是静态方法,类不需要创建对象
4.6.1 exit()方法
退出JVM(Java虚拟机)
System.exit(0);
4.6.2 currentTimeMillis()方法
获取系统当前时间毫秒值
long time = System.currentTimeMillis();