期末java复习

1.java程序设计基础

1.1 标识符、关键字及数据类型

标识符:程序中的实体—变量、常量、方法、类和对象等的名称叫做标识符。

关键字:关键字又称作保留字,它们具有专门的意义和用途,不能当作一般的标识符使用。

数据类型:Java语言提供了丰富的数据类型,分为基本类型(又叫做原始类型)和引用类型两大类。

1.1.1 标识符

程序中所用到的每一个变量、方法、类和对象的名称都是标识符(Identifier),都应该有相应的名称作为标识。简单地说,标识符就是一个名称。

Java语言的标识符命名规则

由英文字母A~Z或a~z、下划线(_)、美元符号($)和数字0~9组成,还可以包括中文字符等其他Unicode8.0字符集,开头必须是英文字母、下划线或美元符号($)。 标识符区分大小写。如sum、Sum和SUM是三个不同的标识符。 不允许使用Java关键字(后面要介绍)来命名。 标识符没有长度限制,但我们不建议使用太长的标识符. 标识符命名原则应以直观且易于拼读为宜,即做到“见名知意” 。 Java中标识符命名约定:常量用大写字母,变量用小写字母开始,类以大写字母开始。 标识符不能包含空格,只能包含美元符($),不能包含#、&、@等其它特殊字符。

2.类和对象

2.1 类的创建

package sample;
class StringTest{
    private String s;
    public void printString(){
        System.out.println(s);
    }

    public void changeString(String str){
        s = str;
    }

    public static void main(String[] args){
       StringTest st = new StringTest ();
       st.changeString("Hello Lixin");
       st.printString();
    } 
}

2.2 类的定义

基本语法如下: [类修饰符] class 类名称 [extends 父类名称][implements 接口名称列表] {          成员变量定义及初始化;        方法定义及方法体; }     类的定义由类声明和类体组成。其中,类声明包含关键字class、类名称及类的属性。 类的修饰符有:public、abstract 、final和friendly四种,默认方式为friendly。

2.3 成员变量的定义及修饰字

成员变量:指类的一些属性定义,标志类的静态特征,它的基本语法如下: [变量修饰符] 变量数据类型 变量名1,变量名2[=变量初值]…;     对于一个成员变量,可以有访问说明符有public、private和protected三种: (1)public:省略时默认为公有类型,可以由外部对象进行访问。 (2)private:私有类型,只允许在类内部的方法中使用,若从外部访问,必须通过构造函数间接进行。 (3)Protected:受保护类型,子类访问受到限制。

2.4 方法的定义及修饰字

基本格式如下: [方法修饰符] 返回类型  方法名称(参数1,参数2,…) [throws 异常类] {      方法体 } 其中,方法修饰符有:[public | protected | private ] [static] [final | abstract] [native] [synchronized]。

2.5 方法的参数传递 

2.5.1 参数的传递方式

package sample;
class ParamPass {
   void add(int i) {
     i += 5;
    }

   public static void main(String args[]) {
     int a = 10;
     System.out.println("a and b before call: " +a );
     ParamPass ob=new ParamPass();
     ob.add(a);
     System.out.println("a and b after call: " +a );
   }
}

输出如下 

a and b before call: 10

a and b after call: 10

2.5.2 参数的引用方式 

package sample;
public class ParamPass {
void changeArray(int[] array) {
      array[0] = 100;
      }
public static void main(String args[]) {
      int array[] = new int[10];
      System.out.println("Before: Array[0] = " + array[0]);
      ParamPass ob=new ParamPass();
      ob.changeArray(array);
      System.out.println("After: Array[0] = " + array[0]);
      }
}

输出如下

Before: Array[0] = 0

After: Array[0] = 100

2.6 类的实例化  

2.6.1 创建对象 

对象的生成包括声明、实例化和初始化。基本语法如下: 类名称   对象名    //声明对象  对象名= new  类名([<参数列表>]);  //创建对象 

2.6.2 对象成员的使用

对象的使用是通过运算符"."实现对变量的访问和方法的调用。变量和方法可以通过设定访问权限来限制其它对象对它的访问。基本语法如下:  对象名.成员变量名    对象名.成员方法名([<参数列表>]); 

【例】类的定义及成员方法的使用 

package sample;
public class Person
{ 
  int age;
  public void pout()
   {
     System.out.println("My age is" + age);
    }
  public static void main(String  args[])
  {
    Person p1 = new Person();
    Person p2 = new Person();
    p1.age = 20;
    p2.age=18;
    p1.pout();
    p2.pout();
  }
}

2.7 构造方法 

Java中的每个类都有构造方法,用来初始化该类的一个新对象。构造方法(Constructor)是一种特殊的方法。构造方法的名称必须和类名相同,为公有类型无返回值,用来从类实例中访问类时初始化此类的私有变量。 当创建对象时,由new运算符调用默认构造方法(没有参数的构造方法)。但是特别要注意的是,如果程序中已经定义了构造方法,Java就不会再生成默认构造方法了。

2.8 继承的概念

所谓继承就是保持已有类的特性而构造新类的过程。继承是子类利用父类中定义的方法和变量,就像它们属于子类本身一样。特殊类的对象拥有其一般类的全部属性与服务,称作特殊类对一般类的继承。例如:如汽车与小汽车;教育工作者与教师。当一个类拥有另一个类的所有数据和操作时,就称这两个类之间存在着继承关系。

Java中不支持类之间的多重继承(注:Java支持接口之间的多重继承),即不允许一个子类继承多个父类。这是因为多重继承带来了许多必须处理的问题。多重继承只对编程人员有益,却增加了编译器和运行环境的负担。

2.9 多态性 

多态是指一个方法只能有一个名称,但可以有许多形态,也就是程序中可以定义多个同名的方法,用“一个接口,多个方法”来描述,可以通过方法的参数和类型引用实现。

多态的实现 

package sample;
public class ShapeTest {
 
  public ShapeTest() {  }
  public static void main(String[] args) {
    Shape[] s={new Shape(1,4),
                 new Rectangle(1,2,3,4),
                 new Circle(2,3,5)};
    for(int k = 0; k < s.length; k++){
        s[k].draw();
    }
  } 
} 
class Shape{
  protected int x;
  protected int y; 
  public Shape(){ }
  public Shape(int x, int y){
     this.x = x;
     this.y = y;
  }
 public void draw(){System.out.println("This is a test in shape.");}
}
class Rectangle extends Shape{
  private int heigth;
  private int weight;
  public Rectangle(int x, int y, int w, int h){
     super(x,y);
     this.weight = w;
     this.heigth = h;
  }
  public void draw(){System.out.println("This is a test in  Rectangle.");}
}
class Circle extends Shape{
  private int r; 
  public Circle(int x, int y, int r){
    super(x,y);
    this.r = r;
  }
  public void draw(){System.out.println("This is a test in Circle.");}
}

3.Java面向对象高级特性

3.1  静态(static)变量、方法和初始化块

类定义的内容主要包括成员变量、成员方法、构造方法和初始化块等,在定义方法和变量时,可以在之前用static修饰,表明它们是属于类的,称为静态方法(类方法)或静态变量(类变量)。

3.1.1  静态(static)变量

用static修饰的成员变量称为静态变量(类变量),若无static修饰,则是实例变量。静态变量或类变量是一种全局变量,它属于某个类,不属于某个对象实例,是在各对象实例间共享。如果想访问静态变量可以直接通过类名来访问,可以不通过实例化访问它们。而实例变量就必须通过对象实例来访问它们。

class Example05_1 {
   int a = 1;
   static int b = 2;
}
class Example05_1Demo {
    public static void main(String args[]) {
     System.out.println("b=" + Example05_1.b);
     Example05_1.b *= 2;
     Example05_1 o1 = new Example05_1 ();
     o1.a = 10;
     System.out.println("o1.a="+ o1.a);
     System.out.println("b="+ o1.b);
     Example05_1 o2=new Example05_1 ();
     System.out.println("o2.a=" + o2.a);
     System.out.println("b="+ o2.b);
  }
}

输出如下

b=2

o1.a=10

b=4

o2.a=1

b=4 

3.1.2  静态(static)方法

同样,static修饰的成员方法称为静态方法(类方法),调用静态方法可以通过类名来调用,即不用实例化即可调用它们。 1、实例变量或者类变量在定义初始化时,都不能超前引用; 2、实例方法既可以使用实例变量,又可以使用静态变量;而静态方法只能使用静态变量,不能直接使用实例变量。

3.2  最终(final)类、变量和方法 

final在类之前,表示该类不能被继承,即final类不能作为父类,任何final类中的方法自动成为final方法,一个类不能同时用abstract和final修饰;  final在方法之前,防止该方法被覆盖,final方法不能被重写,因此,如果你在子类中有一个同样签名的方法的话,你会得到一个编译时错误 final在变量之前,定义一个常量,一个final变量的值不能被改变,并且必须在一定的时刻赋值。

3.3  抽象方法与抽象类

Java中可以定义一些不含方法体的方法,它的方法体的实现交给该类的子类根据自己的情况去实现,这样的方法就是abstract修饰符修饰的抽象方法,包含抽象方法的类就叫做抽象类,也要用abstract修饰符修饰。

3.3.1  抽象方法

用abstract来修饰一个方法时,该方法叫做抽象方法。形式如下: abstract [修饰符] <返回类型>  方法名称([参数表]); 抽象方法并不提供实现,即方法名称后面只有小括号而没有大括号的方法实现。包含抽象方法的类必须声明为抽象类。抽象超类的所有具体子类都必须为超类的抽象方法提供具体实现。

3.3.2  抽象类

抽象类通常包含一个或多个抽象方法(静态方法不能为抽象方法)。  抽象类必须被继承,抽象方法必须被重写;  抽象类不能被直接实例化。因此,它一般作为其他类的超类,使用抽象超类来声明变量,用以保存抽象类所派生的任何具体类的对象的引用。程序通常使用这种变量来多态地操作子类对象。与final类正好相反;  抽象方法只需声明,而无需实现。定义了抽象方法的类必须是用abstract修饰的抽象类。

3.4  接口(interface)

通过接口可以实现不相关类的相同行为,而无需考虑这些类之间的层次关系; 通过接口可以指明多个类需要实现的方法; 通过接口可以了解对象的交互界面,而无需了解对象所对应的类。

3.4.1 接口的定义

在java中,接口是由一些常量和抽象方法所组成,接口中也只能包含这两种东西,一个接口的声明跟类的声明是一样的,只不过把class关键字换成了interface

3.4.2  接口的实现

实现接口我们使用implements关键字。在子类中可以使用接口中定义的常量,而且必须实现接口中定义的所有方法,否则子类就变为抽象类了。

1、接口中的常量必须是用public static final修饰;

2、接口中的方法必须用public static修饰;

3.5  内部类

Inner Class按照字面意思就是内部类的意思,简单说就是嵌套在另一个类中定义的类就是内部类(Inner Classes)。包含内部类的类叫做外部类。

Inner Class可以直接访问外部类的成员。因为Inner Class在外部类中,理所当然可以访问任何的成员,包括声明为private的成员。

猜你喜欢

转载自blog.csdn.net/A_D_H_E_R_E/article/details/118636771