回顾
1.多态
多态: 一个对象可以有不同的形态
比如:
Animal an = new Dog();
Animal an = new Cat();
前提:
a.继承关系或者实现关系
b.要有方法的重写
表现形式:
父类类型/接口类型 变量名 = new 子类()/new 实现类();
好处:
提高代码的扩展性(喂猫喂狗案例)
弊端:
多态的情况,只能调用子父类共有的方法,无法调用子类特有的方法
解决弊端的方案:
向上转型:
Animal an = new Dog();
向下转型:
Dog d = (Dog)an;
Cat c = Cat(an);
关键字:
boolean b = an instanceof Dog
2.内部类
重点介绍匿名内部类:
父类/接口 变量名 = new 父类/接口(){
重写父类或者接口中所有的抽象方法
//特有方法
public void show(){
....
}
};
问题:
如果匿名内部类中,有特有方法.我们怎么向下转型来调用它??
是无法向下转型(因为匿名内部类没有类名)
结论:
如果想使用匿名内部类,就不要在{}中写特有方法
3.权限修饰符
public protected 空的 private
public:修饰成员方法和构造方法
private:修饰成员变量
4.代码块
代码块: 就是使用大括号括起来的一句或者多句代码
构造代码块:
{
构造代码块
}
执行: 每次创建对象时,构造代码块都会执行,优先于构造方法执行
静态代码块:
static{
静态代码块
}
执行:第一加载该类时,静态代码块会执行一次,优先于构造方法执行的
今日内容
- Object类
- 时间日期类
- Math类
- System类
Object类(重要)
介绍
Object类 是所有类的父类, 所有对象(包括数组,包括自己写的类)都具有该类的11个方法.
toString方法
- 作用: 返回该对象的字符串
- 默认返回形式:对象的类型名+@+内存地址值。
- 实际开发中, 通常重写toString方法,为了将返回地址改为返回内容.
注意事项
重写了toString之后, 当调用对象的toString方法时,返回的是重写的方法即具体的属性值.
实际上不用手动调用toString方法
如:
Dog d = new Dog();
String s = d.toString()
sout(s)
上下两个代码结果一样
Dog d = new Dog();
sout(d)//此处编译器省略了d.toString
equals方法
-
作用: 调用成员方法equals并指定参数为另一个对象,则可以判断这两个对象是否是相同的。这里的“相同”有默认和自定义两种方式。
-
默认比较: equals方法在Object类中写的是默认比较的两个对象的地址值(即默认使用"=="运算符比较)
-
实际开发: 需要重写Object类的equals方法,用来比较两个对象的内容是否相同而不是地址值.
native本地方法
在Object类的源码中定义了 native 修饰的方法, native 修饰的方法称为本地方法。
- 本地方法的作用: 就是Java调用非Java代码的接口。方法的实现由非Java语言实现,比如C或C++。
- 当我们需要访问C或C++的代码时,或者访问操作系统的底层类库时,可以使用本地方法实现。也就意味着Java可以和其它的编程语言进行交互。
扩展(equals 和 == 的区别)
对于基本类型:
== 比较基本类型的数值
equals 没有该方法(基本类型又不是一个类)
对于引用类型:
== 比较引用类型的地址值
equals 默认比较地址值,如果子类重写了,按照重写规则比较(一般用来比较内容)
Objects类
Objects类, 我们称之为工具类(其内部所有的方法都是静态的)
在所有对象中 使用编译器 重写的父类Object类的equals方法中 使用了 Objects类中的equals静态方法.
此类中的equals方法, 多了一步判断空指针异常
Date类(重要)
介绍
- 位于包: java.util.Date(不是java.sql.Date中)
- 作用: 代表某个时间点,可以精确到毫秒
构造方法
- 无参构造:
public Date(); 创建一个Date对象,代表当前的时间
sout(new Date());返回的是当前的时间. 此处 编译器省略了 new Date().toString 在Date类中, 已经重写了 toString方法, - 有参构造
public Date(long millis); 代表距离标准时间 millis 毫秒后的时间
Date类的常用方法
- public long getTime() 把日期对象转换成对应的时间毫秒值(获取的是日期对象从1970年1月1日 00:00:00到现在的毫秒值)。
- public void setTime(long time) 把方法参数给定的毫秒值设置给日期对象
- toString() 此类中重写了toString()方法, 返回的是美国格式的日期
- toLocaleString(), 依赖运行程序的操作系统,是用的是中文操作系统,因此返回的是中文格式的日期
DateFormat类(抽象类)(重要)
其子类(SimpleDateFormat)作用
- 作用:可以是Date对象和String对象之间来回转换
- 格式化: Date对象 转成 时间字符串
- 解析: 时间字符串 转回 Date对象
构造方法
由于DateFormat为抽象类,不能直接使用..所以需要常用的子类 java.text.SimpleDateFormat
-
public SimpleDateFormat(String pattern) :用给定的模式和默认语言环境的日期格式符号构造SimpleDateFormat。参数pattern是一个字符串,代表日期时间的自定义格式。
成员方法
- public String format(Date date) :将Date对象格式化为字符串。
- public Date parse(String source) :将字符串解析为Date对象。
Calendar类(抽象类)(理解)
介绍和获取对象方式
- 作用:表示某个时间点,可以进行日期计算
- 获取对象方式:
1.创建其子类的对象(这个不方便,所以不使用)
2.使用其Calendar的静态方法
Calendar c = Calendar.getInstance();//此方法创建一个Calendar子类对象,返回
注意
在Calendar类中, 月份是(0-11)代表我们的(1-12)
常见方法
-
public int get(int field) 获取日历对象中某个成员变量的值, 其中参数代表该成员变量的编号(在Calender类中将这些编号 定义成了 静态常量如year,month等)
-
public void set(int field,int value)
修改在编号处(可用Calendar定义好的的静态常量表示编号),为值 value. 如果说更改的值超过了年月日应有的范围, 则会按照年月日进一 -
public void add(int field,int amount) 增加编号处(可用Calendar定义好的的静态常量表示编号), 在原有基础上增加 amount的值
注意事项
1.Calendar类中的month是(0-11如同索引)
2.时间日期,拥有大小之分, 时间越靠后,越大(明天比今天要大)
Math类
介绍
Math中主要包含了一些数学运算的方法
该类中的方法都是静态方法 可以直接通过类名.方法名来调用. 因此将其作为工具类
常用方法
向上取整, 只要有小数, 就进一
四舍五入只看小数第一位
System类
介绍
类中提供了大量的静态方法,可以获取与系统相关的信息或系统级操作.
不能被实例化 因为其构造方法为私有
常用方法
-
public static void exit(int status) 终止当前运行的 Java 虚拟机,参数值为非零表示异常终止,参数值为0 表示终止
-
public static long currentTimeMillis() 返回当前时间(以毫秒为单位)距离基准时间的毫秒值
此方法可以只用来计算一段代码运行时间长短
今日总结:
1.Object
所有类父类
toString: 默认返回对象的字符串表示,包名.类名@地址值
开发中我们会重写toString,返回对象的内容(alt+insert自动生成)
注意: 实际上我们不需要手动调用toString方法,
因为我们在使用对象时,编译器会自动调用toString()方法
equals: 默认比较两个对象的地址值
开发中我们也会重写equals,比较两个对象的内容(属性值)
2.Date和DateFormat
构造方法
public Date(); // 当前系统时间
public Date(long millis); //距离基准时间milllis毫秒后的那个时间
成员方法
public long getTime();//获取当前Date对象距离基准时间的毫秒值
public void getTime(long millis);//修改当前Date对象距离基准时间的毫秒值
SimpleDateFormat(子类) extends DateFormat(抽象类)
构造方法:
public SimpleDateFormat(String 模式/格式); //模式 "yyyy-MM-dd HH:mm:ss"
成员方法:
格式化: public String format(Date date);
解 析: public Date parse(String time);
3.Calendar
获取对象:
Calendar c = Calendar.getInstance();//返回Calendar的子类对象
成员方法:
public void get(int field);
public void set(int field,int value);
public void add(int field,int value);
4.Math
Math类中方法都是静态的
public static double abs(double d);
public static double ceil(double d);
public static double floor(double d);
public static long round(double d);
public static double pow(double d1,double d2)
6.System
System类中方法都是静态的
public static void exit(0);//退出JVM
public static long currentTimeMillis();//获取当前时间的毫秒值(用于计算某段代码的运行时间)
网友评论