期末java复习

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

1.java程序设计基础

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

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


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


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


1.1.1 标识符

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


Java语言的标识符命名规则


由英文字母A~Z或a~z、下划线(_)、美元符号(线)和数字0~9组成,还可以包括中文字符等其他Unicode8.0字符集,开头必须是英文字母、下划线或美元符号()和数字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的成员。


相关文章
|
存储 Java 关系型数据库
JavaWeb期末项目 图书馆管理系统
JavaWeb期末项目 图书馆管理系统
191 1
|
7月前
|
Java 编译器
【JAVA杂货铺】一文带你走进面向对象编程|继承|重载|重写|期末复习系列 | (中4)
【JAVA杂货铺】一文带你走进面向对象编程|继承|重载|重写|期末复习系列 | (中4)
43 0
|
7月前
|
Java
【JAVA杂货铺】一文带你走进面向对象编程|构造方法调用 | 代码块分类| 期末复习系列 | (中3)
【JAVA杂货铺】一文带你走进面向对象编程|构造方法调用 | 代码块分类| 期末复习系列 | (中3)
38 0
|
Java Go 容器
【Java每日一题,容器+思维】csp202012-2 期末预测之最佳阈值
【Java每日一题,容器+思维】csp202012-2 期末预测之最佳阈值
|
安全 Java
【java】期末预测之安全指数
【java】期末预测之安全指数
|
Java 数据库
Java期末测试
Java期末测试
65 0
|
存储 缓存 自然语言处理
【JAVA期末复习资源】包含重点知识、踩坑知识,期末复习看这一份就够了
【JAVA期末复习资源】包含重点知识、踩坑知识,期末复习看这一份就够了
320 0
【JAVA期末复习资源】包含重点知识、踩坑知识,期末复习看这一份就够了
|
SQL XML 前端开发
Java高级期末复习:Java EE框架整合开发入门到实战——Spring+Spring MVC+MyBatis微课版
Java高级期末复习:Java EE框架整合开发入门到实战——Spring+Spring MVC+MyBatis微课版
336 0
|
Java 编译器 程序员
【期末复习之路】JAVA(一)
学习Java基础,这是前期学习的内容,现在写博客来巩固,希望大家多多观看,并给予补充,欢迎评论区留言
|
Java 程序员 C语言
Java语言知识大盘点(期末总复习)三
Java语言知识大盘点(期末总复习)三
181 0
Java语言知识大盘点(期末总复习)三
下一篇
DataWorks