1.多态:
某一种事物存在的多种体现形态。
多态的体现: 父类引用指向子类对象 也可以:把父类引用强制转成子类类型
多态的前提: 必须是类与类之间有继承关系或者是实现关系 通常还有一个前提:存在覆盖。
多态的好处: 大大的提高了程序的扩展性。
多态的弊端: 只能使用父类的引用访问父类中的成员。
Animal a = new Cat(); 类型提升(向上转型) 也可以:把父类引用强制转成子类类型(向下转型)。
2. 在多态中成员函数的特点:
在编译时期: 参阅引用型变量所属的类中是否有调用方法。如果有则编译通过,没有则编译失败。
在运行时期: 参阅对象所属的类中是否有调用的方法。
简单总结就是: 成员函数在多态调用时,编译看左边,运行看右边。
3. 在多态中,成员变量的特点:
无论编译还是运行时,都是参阅左边(引用型变量所属的类)。
4. 在多态中,静态成员函数(变量)的特点:
无论编译还是运行时,都是参阅左边。
5. 抽象类:
简单说抽象类就是看不懂的
特点:抽象类和抽象方法必须用 abstract 关键字修饰;抽象类不一定有抽象方法,有抽象方法的类一定是抽象类或者是接口;抽象类不能实力化,必须通过其子类继承然后实现继承的抽象方法,这也是多态的一种,抽象类多态。
抽象类的成员变量可以是常量也可以是变量,但是不能被 abstract 修饰为抽象;成员方法可以是抽象的也可以是非抽象的;抽象类具有构造函数,子类可以通过父类构造方法访问父类数据的初始化。
注意:如果一个类没有一个抽象方法也是可以定义成 abstract 抽象的,因为这样可以限制其他类对该类的创建调用,这样最后就只能让子类来完成。
抽象类和一般类没有太大的不同,该如何描述事物就如何描述事物,只不过,事物当中有些看不懂的东西。这些不确定的部分,也是该事物的功能,需要明确出现,但是无法定义主体。通过抽象来完成。 抽象类比一般类多了抽象方法,并且抽象类不可以实例化。
6. 接口:
从狭义的角度来看就是 Java的 Interface 关键字表示的类;从广义的角度来看对外提供规则都可以看做接口;
同时也可以简单理解为一个特殊的抽象类,当抽象类中的方法都是抽象时,那么该类可以通过接口的形式来表示;class 定义类,interface 定义接口;接口可以被多类实现;接口与接口之间可以是继承关系;接口之间可以是多继承关系。
接口的子类可以是抽象类,但是这样意义不大;接口子类也可以是具体类,重写接口中所有的抽象方法;一般都是采用后者。
接口的成员变量只能是常量,并且是静态公共的;接口的成员函数都是抽象的;接口没有构造函数。
7. 类与类之间可以是继承关系,可以是单继承,也可以是多层继承。
类与接口之间是实现关系,一个类可以实现多个接口,同时也可以继承一个类并且实现一个或者多个接口。
接口与接口之间也是继承关系,跟类与类的关系相似,可以是单继承也可以是多层继承。
8. 抽象类与接口之间的区别:
成员区别:
抽象类:成员变量可以是常量也可以是变量,有构造函数,成员方法可以是抽象的也可以是非抽象的。
接口:成员变量只能是静态常量,没有构造函数,成员方法都是抽象的。
关系区别:
抽象类可以是单继承,多层继承。
接口可以是单继承,多层继承。
类与接口之间可以是单实现,多实现。
设计理念的区别:
抽象类:被继承的体现是 is a 的关系,突出的是该继承体系的共性功能。
接口:被实现的体现是 like a 的关系,突出的是该继承体系的扩展功能。
9. 关键字 package:
包其实就是文件夹,将字节码 .class 进行分类存储。
注意:package 语句必须是程序的第一句开头处;一个程序中只能拥有一个 package包 ; 如果没有 package ,则默认表示无名包;java 提供关键字 import 就是为了让包中的类可见,从而不用总是编写类全名。
10. 四种权限修饰符:private,protect,default,public
本类 同一个包下(子类和无关类) 不同包下(子类) 不同包下(无关类)
private Y
默认 Y Y
protected Y Y Y
public Y Y Y
11. 内部类:
当描述事物时,事物的内部还有事物,该事物用内部类来表示。因为内部事物使用外部事物的成员内容
内部类访问特点:内部类可以访问外部类的所有成员变量,包括私有成员变量;外部类要想访问内部类就必须创建一个新的内部类对象;
格式为 外部类名.内部类名 类名 = new 外部类名.内部类名
注意:局部内部类访问局部变量,局部变量必须是被 final 修饰的变量;因为如果局部变量不是被 final 修饰的话,局部变量就会跟着方法弹栈消亡而一起消失,如果这个时候内部类想要调用该变量则就会出现错误;所以只能同 final 修饰符来修饰局部变量,让其保存在常量池当中,不会随着方法的消失而消失。
12. 匿名内部类:
内部类的简写模式,类可以是具体的也可以是抽象的。
匿名内部类:
a.匿名内部类其实就是内部类的简写格式。
b.定义匿名内部类的前提:内部类必须继承类或者实现接口。
c.匿名内部类的格式: new Father()
{
void test()
{
System.out.println( "HelloWorld");
}
}.test();
d.匿名内部类其实就是一个匿名子类对象;匿名对象只能调用方法一次。
e.匿名内部类中定义的方法最好不要超过三个。
13. API概述:
应用程序编程接口,这些类将底层的实现封装起来;我们不需要关系到底是怎么实现的,只要知道如何使用就OK了。
14. Object 类:
类层次结构的根类;所有的类直接后者间接的继承自该类。
注意 == 号和 equals 的区别:
== 是一个比较运算符号,既可以比较基本数据类型,也可以比较引用数据类型,基本数据类型比较的是值,引用数据类型比较的是地址值
equals 方法是一个方法,只能比较引用数据类型,所有的对象都会继承Object类中的方法,如果没有重写Object类中的equals方法,equals方法和==号比较引用数据类型无区别,重写后的equals方法比较的是对象中的属性
15. String类型:
String类的概述
通过JDK提供的API,查看String类的说明
可以看到这样的两句话。
a:字符串字面值"abc"也可以看成是一个字符串对象。
b:字符串是常量,一旦被赋值,就不能被改变。
常见构造方法
public String():空构造
public String(byte[] bytes):把字节数组转成字符串
public String(byte[] bytes,int index,int length):把字节数组的一部分转成字符串
public String(char[] value):把字符数组转成字符串
public String(char[] value,int index,int count):把字符数组的一部分转成字符串
public String(String original):把字符串常量值转成字符串
String类的判断功能
boolean equals(Object obj):比较字符串的内容是否相同,区分大小写
boolean equalsIgnoreCase(String str):比较字符串的内容是否相同,忽略大小写
boolean contains(String str):判断大字符串中是否包含小字符串
boolean startsWith(String str):判断字符串是否以某个指定的字符串开头
boolean endsWith(String str):判断字符串是否以某个指定的字符串结尾
boolean isEmpty():判断字符串是否为空。
String类的获取功能
int length():获取字符串的长度。
char charAt(int index):获取指定索引位置的字符
int indexOf(int ch):返回指定字符在此字符串中第一次出现处的索引。
int indexOf(String str):返回指定字符串在此字符串中第一次出现处的索引。
int indexOf(int ch,int fromIndex):返回指定字符在此字符串中从指定位置后第一次出现处的索引。
int indexOf(String str,int fromIndex):返回指定字符串在此字符串中从指定位置后第一次出现处的索引。
lastIndexOf
String substring(int start):从指定位置开始截取字符串,默认到末尾。
String substring(int start,int end):从指定位置开始到指定位置结束截取字符串。
String的转换功能:
byte[] getBytes():把字符串转换为字节数组。
char[] toCharArray():把字符串转换为字符数组。
static String valueOf(char[] chs):把字符数组转成字符串。
static String valueOf(int i):把int类型的数据转成字符串。注意:String类的valueOf方法可以把任意类型的数据转成字符串。
String toLowerCase():把字符串转成小写。(了解)
String toUpperCase():把字符串转成大写。
String concat(String str):把字符串拼接。
16. StringBuffer:
线程安全的可变字符序列
注意 StringBuffer 和 String 的区别:前者大小长度可变的字符序列,后者大小长度不变字符序列。
通过 JDK 文档查看 StringBuffer 类各种方法的应用。
StringBuffer 和 StringBuilder 的区别:StringBuffer 是 JDK1.0版本的,线程安全,速度慢,效率低;StringBuilder 是 JDK1.5版本的,线程不安全,速度快,效率高。
17. Arrays类
针对数组进行操作的工具类,提供了排序,查找的等功能。
成员方法:
public static String toString(int[] a)
public static void sort(int[] a)
public static int binarySearch(int[] a,int key)
18. 基本类型包装类
将基本类型封装成对象的好处是可以在对象中定义更多功能方法来操作该数据。
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean
19. JDK1.5 新特性:
自动装箱:系统自动将基本数据类型转换成包装类类型。
自动拆箱:系统自动将包装类类型转换成基本数据类型。
20. Math类概述和方法使用
Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。
成员方法
public static int abs(int a)
public static double ceil(double a)
public static double floor(double a)
public static double pow(double a,double b)
public static double random()
public static int round(float a)
public static double sqrt(double a)
21. Random类的概述和方法使用
此类用于产生随机数如果用相同的种子创建两个 Random 实例,
则对每个实例进行相同的方法调用序列,它们将生成并返回相同的数字序列。
构造方法
public Random()
public Random(long seed)
成员方法
public int nextInt()
public int nextInt(int n)
22. System类的概述和方法使用
System 类包含一些有用的类字段和方法。它不能被实例化。
成员方法
public static void gc()
public static void exit(int status)
public static long currentTimeMillis()
pubiic static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
23. BigInteger类的概述和方法使用
可以让超过Integer范围内的数据进行运算
构造方法
public BigInteger(String val)
成员方法
public BigInteger add(BigInteger val)
public BigInteger subtract(BigInteger val)
public BigInteger multiply(BigInteger val)
public BigInteger divide(BigInteger val)
public BigInteger[] divideAndRemainder(BigInteger val)
某一种事物存在的多种体现形态。
多态的体现: 父类引用指向子类对象 也可以:把父类引用强制转成子类类型
多态的前提: 必须是类与类之间有继承关系或者是实现关系 通常还有一个前提:存在覆盖。
多态的好处: 大大的提高了程序的扩展性。
多态的弊端: 只能使用父类的引用访问父类中的成员。
Animal a = new Cat(); 类型提升(向上转型) 也可以:把父类引用强制转成子类类型(向下转型)。
2. 在多态中成员函数的特点:
在编译时期: 参阅引用型变量所属的类中是否有调用方法。如果有则编译通过,没有则编译失败。
在运行时期: 参阅对象所属的类中是否有调用的方法。
简单总结就是: 成员函数在多态调用时,编译看左边,运行看右边。
3. 在多态中,成员变量的特点:
无论编译还是运行时,都是参阅左边(引用型变量所属的类)。
4. 在多态中,静态成员函数(变量)的特点:
无论编译还是运行时,都是参阅左边。
5. 抽象类:
简单说抽象类就是看不懂的
特点:抽象类和抽象方法必须用 abstract 关键字修饰;抽象类不一定有抽象方法,有抽象方法的类一定是抽象类或者是接口;抽象类不能实力化,必须通过其子类继承然后实现继承的抽象方法,这也是多态的一种,抽象类多态。
抽象类的成员变量可以是常量也可以是变量,但是不能被 abstract 修饰为抽象;成员方法可以是抽象的也可以是非抽象的;抽象类具有构造函数,子类可以通过父类构造方法访问父类数据的初始化。
注意:如果一个类没有一个抽象方法也是可以定义成 abstract 抽象的,因为这样可以限制其他类对该类的创建调用,这样最后就只能让子类来完成。
抽象类和一般类没有太大的不同,该如何描述事物就如何描述事物,只不过,事物当中有些看不懂的东西。这些不确定的部分,也是该事物的功能,需要明确出现,但是无法定义主体。通过抽象来完成。 抽象类比一般类多了抽象方法,并且抽象类不可以实例化。
6. 接口:
从狭义的角度来看就是 Java的 Interface 关键字表示的类;从广义的角度来看对外提供规则都可以看做接口;
同时也可以简单理解为一个特殊的抽象类,当抽象类中的方法都是抽象时,那么该类可以通过接口的形式来表示;class 定义类,interface 定义接口;接口可以被多类实现;接口与接口之间可以是继承关系;接口之间可以是多继承关系。
接口的子类可以是抽象类,但是这样意义不大;接口子类也可以是具体类,重写接口中所有的抽象方法;一般都是采用后者。
接口的成员变量只能是常量,并且是静态公共的;接口的成员函数都是抽象的;接口没有构造函数。
7. 类与类之间可以是继承关系,可以是单继承,也可以是多层继承。
类与接口之间是实现关系,一个类可以实现多个接口,同时也可以继承一个类并且实现一个或者多个接口。
接口与接口之间也是继承关系,跟类与类的关系相似,可以是单继承也可以是多层继承。
8. 抽象类与接口之间的区别:
成员区别:
抽象类:成员变量可以是常量也可以是变量,有构造函数,成员方法可以是抽象的也可以是非抽象的。
接口:成员变量只能是静态常量,没有构造函数,成员方法都是抽象的。
关系区别:
抽象类可以是单继承,多层继承。
接口可以是单继承,多层继承。
类与接口之间可以是单实现,多实现。
设计理念的区别:
抽象类:被继承的体现是 is a 的关系,突出的是该继承体系的共性功能。
接口:被实现的体现是 like a 的关系,突出的是该继承体系的扩展功能。
9. 关键字 package:
包其实就是文件夹,将字节码 .class 进行分类存储。
注意:package 语句必须是程序的第一句开头处;一个程序中只能拥有一个 package包 ; 如果没有 package ,则默认表示无名包;java 提供关键字 import 就是为了让包中的类可见,从而不用总是编写类全名。
10. 四种权限修饰符:private,protect,default,public
本类 同一个包下(子类和无关类) 不同包下(子类) 不同包下(无关类)
private Y
默认 Y Y
protected Y Y Y
public Y Y Y
11. 内部类:
当描述事物时,事物的内部还有事物,该事物用内部类来表示。因为内部事物使用外部事物的成员内容
内部类访问特点:内部类可以访问外部类的所有成员变量,包括私有成员变量;外部类要想访问内部类就必须创建一个新的内部类对象;
格式为 外部类名.内部类名 类名 = new 外部类名.内部类名
注意:局部内部类访问局部变量,局部变量必须是被 final 修饰的变量;因为如果局部变量不是被 final 修饰的话,局部变量就会跟着方法弹栈消亡而一起消失,如果这个时候内部类想要调用该变量则就会出现错误;所以只能同 final 修饰符来修饰局部变量,让其保存在常量池当中,不会随着方法的消失而消失。
12. 匿名内部类:
内部类的简写模式,类可以是具体的也可以是抽象的。
匿名内部类:
a.匿名内部类其实就是内部类的简写格式。
b.定义匿名内部类的前提:内部类必须继承类或者实现接口。
c.匿名内部类的格式: new Father()
{
void test()
{
System.out.println( "HelloWorld");
}
}.test();
d.匿名内部类其实就是一个匿名子类对象;匿名对象只能调用方法一次。
e.匿名内部类中定义的方法最好不要超过三个。
13. API概述:
应用程序编程接口,这些类将底层的实现封装起来;我们不需要关系到底是怎么实现的,只要知道如何使用就OK了。
14. Object 类:
类层次结构的根类;所有的类直接后者间接的继承自该类。
注意 == 号和 equals 的区别:
== 是一个比较运算符号,既可以比较基本数据类型,也可以比较引用数据类型,基本数据类型比较的是值,引用数据类型比较的是地址值
equals 方法是一个方法,只能比较引用数据类型,所有的对象都会继承Object类中的方法,如果没有重写Object类中的equals方法,equals方法和==号比较引用数据类型无区别,重写后的equals方法比较的是对象中的属性
15. String类型:
String类的概述
通过JDK提供的API,查看String类的说明
可以看到这样的两句话。
a:字符串字面值"abc"也可以看成是一个字符串对象。
b:字符串是常量,一旦被赋值,就不能被改变。
常见构造方法
public String():空构造
public String(byte[] bytes):把字节数组转成字符串
public String(byte[] bytes,int index,int length):把字节数组的一部分转成字符串
public String(char[] value):把字符数组转成字符串
public String(char[] value,int index,int count):把字符数组的一部分转成字符串
public String(String original):把字符串常量值转成字符串
String类的判断功能
boolean equals(Object obj):比较字符串的内容是否相同,区分大小写
boolean equalsIgnoreCase(String str):比较字符串的内容是否相同,忽略大小写
boolean contains(String str):判断大字符串中是否包含小字符串
boolean startsWith(String str):判断字符串是否以某个指定的字符串开头
boolean endsWith(String str):判断字符串是否以某个指定的字符串结尾
boolean isEmpty():判断字符串是否为空。
String类的获取功能
int length():获取字符串的长度。
char charAt(int index):获取指定索引位置的字符
int indexOf(int ch):返回指定字符在此字符串中第一次出现处的索引。
int indexOf(String str):返回指定字符串在此字符串中第一次出现处的索引。
int indexOf(int ch,int fromIndex):返回指定字符在此字符串中从指定位置后第一次出现处的索引。
int indexOf(String str,int fromIndex):返回指定字符串在此字符串中从指定位置后第一次出现处的索引。
lastIndexOf
String substring(int start):从指定位置开始截取字符串,默认到末尾。
String substring(int start,int end):从指定位置开始到指定位置结束截取字符串。
String的转换功能:
byte[] getBytes():把字符串转换为字节数组。
char[] toCharArray():把字符串转换为字符数组。
static String valueOf(char[] chs):把字符数组转成字符串。
static String valueOf(int i):把int类型的数据转成字符串。注意:String类的valueOf方法可以把任意类型的数据转成字符串。
String toLowerCase():把字符串转成小写。(了解)
String toUpperCase():把字符串转成大写。
String concat(String str):把字符串拼接。
16. StringBuffer:
线程安全的可变字符序列
注意 StringBuffer 和 String 的区别:前者大小长度可变的字符序列,后者大小长度不变字符序列。
通过 JDK 文档查看 StringBuffer 类各种方法的应用。
StringBuffer 和 StringBuilder 的区别:StringBuffer 是 JDK1.0版本的,线程安全,速度慢,效率低;StringBuilder 是 JDK1.5版本的,线程不安全,速度快,效率高。
17. Arrays类
针对数组进行操作的工具类,提供了排序,查找的等功能。
成员方法:
public static String toString(int[] a)
public static void sort(int[] a)
public static int binarySearch(int[] a,int key)
18. 基本类型包装类
将基本类型封装成对象的好处是可以在对象中定义更多功能方法来操作该数据。
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean
19. JDK1.5 新特性:
自动装箱:系统自动将基本数据类型转换成包装类类型。
自动拆箱:系统自动将包装类类型转换成基本数据类型。
20. Math类概述和方法使用
Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。
成员方法
public static int abs(int a)
public static double ceil(double a)
public static double floor(double a)
public static double pow(double a,double b)
public static double random()
public static int round(float a)
public static double sqrt(double a)
21. Random类的概述和方法使用
此类用于产生随机数如果用相同的种子创建两个 Random 实例,
则对每个实例进行相同的方法调用序列,它们将生成并返回相同的数字序列。
构造方法
public Random()
public Random(long seed)
成员方法
public int nextInt()
public int nextInt(int n)
22. System类的概述和方法使用
System 类包含一些有用的类字段和方法。它不能被实例化。
成员方法
public static void gc()
public static void exit(int status)
public static long currentTimeMillis()
pubiic static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
23. BigInteger类的概述和方法使用
可以让超过Integer范围内的数据进行运算
构造方法
public BigInteger(String val)
成员方法
public BigInteger add(BigInteger val)
public BigInteger subtract(BigInteger val)
public BigInteger multiply(BigInteger val)
public BigInteger divide(BigInteger val)
public BigInteger[] divideAndRemainder(BigInteger val)