1.抽象函数和抽象类
(1)抽象函数:就是只有声明没有实现的函数,称之为抽象函数,在java中抽象函数前面加abstract 。
在定义函数类型时,需要被覆盖的函数,一般称为抽象函数。
(2)抽象类:有抽象函数的类,称之为抽象类。(可以有不是抽象类的函数)
2.在继承关系中,注意:
(1)java中只能进行单继承。
(2)继承关系的相关类,必须是“is a”。也就是说作为子类必须是父类型的一种。
3.接口:形式上说,所有的方法均为抽象函数,这时,我们就可以把类型定义成interface,
好处:为所有继承接口类型的子类提供统一的方法声明便于产生的多太。
子类继承接口用implementS 而非extends.子类可以继承多个接口。
注意:
(1)接口没有实现方法
(2)接口没有变量,只有常量,因为接口不可能有构造函数
4.java面向对象中几个常用的关键字
(1)static :可以修饰类的成员,
当修饰成员变量时,表示该变量不能动态的表达,也就是说,改变量属于全局变量,不属于某个对象,类的非成员变量,在实例化对像的时候,
每个对象都有一个该非静态空间,该空间属于每个对象独享。而静态的成员变量,无论有多少变量,该静态空间只有一个,而非独享。
当修饰成员函数的时候,表示该函数属于全局函数,跟一般成员函数不同,一般的成员函数,有多少个对象就有多少个成员函数。
静态成员函数只有一个空间,是所有对象共享的。静态成员函数中不能直接访问非静态成员(this.count++,不可以,但是new Conter().count++是可以的),因为如果使用 this.count,根本就不知道是哪个对象的count加1。
用static修饰过的方法不能被覆盖,可以被继承,static不能与abstract一起使用。
(2)final关键字:
修饰类时,该类不能被继承。
修饰函数时,该函数不能被覆盖
修饰变量时,变量为常量,此时一般和public static一起使用
final不能和abstract一起来修饰成员函数或类型。
5.包
用package命令产生包,用import命令导入包(告诉当前类型使用的外部类型的路径在哪儿)
系统api根据功能不同都放在不同的包里,使用这些api时都要导入包,但是使用Java.lang包不需要导入。
6.Java.lang包的常用类型
(1)String类型:定义字符串空间属于不可变空间。
需要掌握的函数:
char charAt(int index)
int compareTo(String anotherString)
int compareToIgnoreCase(String str)
int indexOf(int ch)
int lastIndexOf(int ch)
String replace(char oldChar, char newChar)
String[] split(String regex)
String substring(int beginIndex, int endIndex)
String toLowerCase(Locale locale)
String toUpperCase()
String trim()
查帮助文档,看这些函数的功能,并举例,输出
返回值。
(2)Math
static double abs(double a) ;
//取整函数
static double ceil(double a) 向上取整
static double floor(double a) 向下取整
static long round(double a) 四舍五入
static double random();产生[0-1)之间的随机数
(3)System
out对象
static long currentTimeMillis()取得当前距
1970年元月元日零点到现在的毫秒数
(4)StringBuffer由他定义的字符串空间属于可变空间
主意String和StringBuffer的区别
String str=new String("helloworld");
str+"nihao"
//他定义的字符串对象在进行字符串拼接时,
//并不是在原来的字符串空间进行扩展
//,并把“nihao”放到这个空间中,而是重新开辟了一个更大的空间把
//新字符串空间“helloworldnihao”放到该空间中
StringBuffer strb=new StringBuffer("helloworld");
strb.append("nihao");
//StringBuffer跟String拼接字符串不一样,扩充原来的
//空间,并把新的长字符串放到扩充后的大空间中。
7.StringBuilder和StringBuffer
StringBuilder与StringBuffer的区别:
//StringBuffer是线程安全的,为了保证线程的安全,损失了效率。
//这两个类的使用几乎没有任何差别
//如果我们的程序是在单线程下运行,或者是不必考虑到线程同步问题,我们应该优先使用
//StringBuilder类;当然,如果要保证线程安全,自然非StringBuffer莫属了。