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莫属了。