java面象对象程序设计课程复习整理版.doc_第1页
java面象对象程序设计课程复习整理版.doc_第2页
java面象对象程序设计课程复习整理版.doc_第3页
java面象对象程序设计课程复习整理版.doc_第4页
java面象对象程序设计课程复习整理版.doc_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

面向对象程序设计课程知识点第1章 Java概述1Java程序的运行机制是什么?中间码:字节码(Bytecode)文件,字节码指令与硬件平台无关,但又不能由Cpu直接执行。Java解释器:要安装Java运行时系统(Java虚拟机)创建,编辑和执行Java程序l 创建和编辑源代码 可以使用任何文本编译器创建和编辑源代码。 文件名必须与公共的类名一致,文件后缀为.javal 编译 在控制台中执行:javac 源文件名 生成.class字节码文件l 执行 在控制台中执行: java 类名决定了Java语言的所具有的特点:(理解各个特点的真正含义)(1)简单的(2)面向对象的(3)分布式的(4)解释型的(5)健壮的(6)安全的(7)体系结构中立的(8)可移植的(9)高性能的(10)多线程的(11)动态的2JDK、JRE与JVM的作用与关系?JDK: Java Development Kit Java开发工具包, 其中包含Java编译器(javac.exe)、Java运行时环境JRE:Java Runtime Environment Java运行时环境(Java 虚拟机)+支持类库JVM:Java Virtual Machine 负责将Java字节码翻译为本地机器可以执行二进制机器码其中,使用javac命令可以从命令行编译Java源程序,生成字节文件(.class文件) 使用java命令可以从命令行解释执行字节文件。 3在控制台和消息框中如何输出信息?(1) 在控制台输出字符串 “Hello world” 的语句:System.out.println(“Hello world”);(2)在消息框输出字符串“Hello world”的语句:JOptionPane.showMessageDialog(null, “Hello world”); 注意:showMessagDialog方法是java.swing.JOptionPane类中的方法。(P13) 1.Java编译器将源代码翻译成的独立于平台的格式是: B A. opcodes B. bytecode(字节码) C. virtual machines(虚拟机) D. applets(小应用程序)2. 运行Java编译器的命令是什么? D A. java B. appletviewer C.jdb D. javac3. 下面哪条命令用来运行Java application? A A. java B. appletviewer C.jdb D. javac4. 下面哪条命令用来运行Java applet? B A. java B. appletviewer C.jdb D. javac5. 可以用来创建Java程序的免费工具包被称作什么? B A.JRE B. JDK C.JVM D. JNI第2章 基本程序设计1 标识符的取名规则标识符是以字母或下划线(_)或美元符($)开头,后面跟字母、数字、下划线和美元符所组成。一般标识符习惯用小写字母。保留字不能用作标识符。选择题:选择正确的标识符。例如:$2, 程序,area, showMessageDialog是合法的标识符;2A, d+4是非法的标识符Java中使用标识符(identifier)来命名变量、常量、方法、类、包等实体。2Java保留字:保留字或关键字(keyword)是对编译器有具特殊意义,不能在程序中用于其它目的的单词。例如:public class static void int double等等3Java 的数据类型4数值类型之间的转换。 扩宽类型可自动完成(不需显示完成),缩窄类型需明确指明(需显示完成) 取值范围 Byte, short, int, long, float, double 强制转换:(datatype) variableName例如: 1). double x=9.987; int nx=(int) x; /nx=9 2). double x =9.987 int nx=(int)Math.round(x) / 105字符类型(char)和字符串类型(String)。1)char型数据可做自增、自减运算。2) Char型数据可以与任意一种数据值数据进行互换,反之亦然3)String实际上是Java定义的一个类,它不是基本类型,是引用类型。6程序设计错误分为三类:语法错误、运行错误和逻辑错误。语法错误:在编译期间产生的错误。运行错误:导致程序非正常终止的错误。逻辑错误:程序不能按预期的方式执行。7从控制台和消息框中如何获取输入信息?注意:从控制台中读取数据时要用到java.util.Scanner类中的next()、nextInt()等方法从消息框中读取数据时要用到。java.swing.JOptionPane类中的showInputDialog方法。(P44)例如:(1)在控制台获取一个整数的语句: Scanner sc=new Scanner(System.in); Int a=sc.nextInt(); (2)在消息框获取一个整数的语句:String intString=JOptionPane.showInputDialog(“Please input a integer:”);int a=Integer.parseInt(intString); 从消息框中读出的一定是字符串。需要将字符串转换成相应的数据类型。 double doubleValue = Double.parseDouble(doubleString);String s = String.valueOf( value); /其中Value为任意一种数字类型。第3章 选择1关系运算符和布尔运算符及其运行的优先级。2ifelse语句3switch语句。switch表达式的类型只能是char、byte、short和int类型。4.布尔表达式 ? 表达式1 : 表达式2 当布尔表达式为真时,表达式的结果为表达式1的值,否则结果为表达式2的值。Java中唯一一个三目运算符第4章 循环1while语句2do-while语句3. for语句4break与continue第5章 方法1方法有方法签名(方法头+参数列表)和方法体两部分构成2声明一个方法的语法是什么?特别注意main方法的方法签名。修饰符 返回值 方法名(参数列表)/方法体main方法的方法签名:public static void main(String args)3调用方法的语法是什么?方法名(参数列表)实例方法:对象.方法名静态方法:类.方法名4如何传递方法参数?基本类型参数:当调用方法时,实参值的副本被传递给方法的形参。方法内部对形参的修改不影响实参值。引用类型值传递:方法内部对形参的修改会影响实参值,因为实际上传递的是一个地址,改变的内容是这个地址下的内容。5何谓方法重载?l 方法重载(overloading)是指方法名称相同,但方法的参数不同的方法。一个类中可以包含多个重载的方法。l 当调用方法时,Java编译器会根据实参的个数和类型寻找最精确匹配的方法进行调用。6局部变量的作用域是什么?l 方法内部声明的变量称为局部变量(local variable)。l 变量的作用域(scope)指程序中可以引用该变量的范围。l 局部变量的作用域从它的声明开始,直到包含该变量的块结束为止。局部变量在使用前必须先声明和赋值。形参就是局部变量l 在方法中,可以在不同的非嵌套程序块中以相同的名称多次声明局部变量。但不能在嵌套的程序块中以相同的名称多次声明局部变量。l 在for语句的初始动作部分声明的变量,作用域是整个循环。在for语句循环体中声明的变量,作用域从变量声明开始到循环体结束。7了解Math类(书P136)8什么是包?为什么要使用包?l 包(package)是相关类和接口的集合,它可以提供访问保护和名称空间管理。 组织功能:将相关的类和接口组织在一起,便于识别和管理 防止命名冲突:不同包中的相同命名,不会产生冲突 访问控制:控制包间的类型的可访问性使用包的几个理由:1)查找定位类。2)避免命名冲突。 3)便于发布软件。4)保护类。允许同一个包中的类访问类中被保护的成员,而外部类无权限。第6-7章 数组1 如何声明和创建一个数组?如何对数组进行初始化?元素类型 数组引用变量 数组变量是引用类型的变量,声明数组变量并不分配内存空间。使用new操作符创建数组arrayRefVar = new elemTypearraySize;声明和创建同时进行elemType arrayRefVar= new elemType arraySize下面的语句 是错误的:Double myList;myList=1.9, 2.9, 3.4, 3.52 数组元素的访问形式?arrayRefVar index 0indexarrayRefVar.length-13 何时会为数组分配空间?创建数组后,new操作符4 数组的大小:数组名.length。数组一旦创建,它的大小就不能改变。5 数组的下标是0到数组名.length-1。6 数组参数传递给方法时,是传递数组的引用。即数组参数是引用参数。7 基本数据类型参数与引用参数之间的区别。基本数据类型传递的是实际值的拷贝,修改形参,不影响实参。数组引用变量中传递的是对象的引用,修改形参,将改变实参引用的数组对象。8 可变长参数的定义:如:print(String a;String . args) 9 可变长参数的使用规则是:(1) 在调用方法的时候,如果能够和固定参数的方法匹配,也能够与可变长参数的方法匹配,则选择固定参数的方法。 (2) 一个方法只能有一个可变长参数,并且这个可变长参数必须是该方法的最后一个参数。第8章 对象与类1. 对象和类以及它们之间的关系是什么?对象(object)表示现实世界中可以明确识别的实体。类(class)定义了同一类对象共有的属性和方法。类是对象的模板、蓝图。对象是类的实例。2. 如何定义一个类和创建一个类对象?3构造方法与普通方法之间的区别是什么?l 构造方法也叫构造器,是一种特殊的方法。它是一段初始化代码,它的作用是用来构造并初始化对象。l 构造方法的调用是构造对象l 构造方法必须与定义它的类同名。l 构造方法没有返回类型,连void也没有。l 构造一个对象时使用new操作符进行的new 类名(实际参数列表);声明变量和创建对象:className objectReference = new ClassName();4 修饰符指定类、方法和数据是如何被访问的?5get方法和set方法的签名规则是什么?l 通常为私有(private)成员变量提供Getter 和Setter方法。l 如果成员变量为DateType propertyName Getter方法用于获取成员变量的值签名: public DateType getPropertyName() Setter方法用于设置成员变量的值签名: public void setPropertyName(DateType value)6this引用有什么作用?this引用有几种使用方法?注:关键字this是指向调用对象本身的引用名。Java的每个成员方法都可以使用代词this引用调用该方法的当前对象,this引用有以下3种用法:(1)指代对象本身;(2)访问本类的成员变量和成员方法;(3)调用同一个类中重载的构造方法。7实例变量与静态变量,实例方法与静态方法的不同是什么?l 实例变量(instance variable)未用static修饰的成员变量,属于类的具体实例(对象),只能通过引用变量访问。不能被同一类不同对象共享。l 静态变量(static variable)是用static修饰的变量,在一个类的所有实例间共享,也称类变量。静态变量可以通过类名访问。l 类中的常量是被该类中的所有对象所共享的。所以常量应声明为static finall 静态方法(static method)是用static修饰的方法。l 静态方法可以通过类名调用。l 静态方法只能访问类的静态成员,不能访问类中的实例成员。8 类中变量的作用域。 private 只能当前类自身可以访问。 无访问修饰符的成员,只有同一包中的代码可以访问。 protected 同一包中的类可以访问、 还可以被这个类的子类所继 public 所有任何地方的其它类都可以访问。9 描述传递基本类型参数和传递对象类型参数的区别。(P235/8.16;P236/8.18)与传递数组一样,传递对象实际是传递对象的引用。基本数据类型传递的是实际值的拷贝,修改形参,不影响实参。引用类型变量传递的是对象的引用,通过形参修改对象,将改变实参引用的对象。第9章 字符串与文本I/O1 什么是字符串?在Java中字符串是一个对象,它也是引用类型。String newString = new String(字符串直接量);String newString = 字符串直接量2 String类可用于处理不可变的字符串。它有11种构造函数,40多种方法。其中的常用方法有: (9.2)(1) 获取字符串长度的方法:length();调用length()方法可以获取字符串的长度。(2) 获取单个字符的方法:charAt(index);charAt(index) 方法可以获取指定位置的字符。index的值必须在0到s.length()-1之间。(3) 连接两个字符串的方法:concat(s1); String s3 = s1.concat(s2);(4) 两个字符串比较的方法:equals(s1):boolean和comareTo(s1):int(5) 获取子串的方法:substring(beginIndex) 子串从beginIndex开始,直到字符串的结尾。substring(beginIndex,endIndex)子串从beginIndex开始,直到endIndex-1(6) 字符串的转换方法:toLowerCase()、toUpperCase()toLowerCase 将字符串转换成小写形式toUpperCase 将字符串转换成大写形式(7) 字符数组、基本数据类型与字符串之间转换方法:用String的构造方法或toCharArray()、String.valueOf()方法。l toCharArray 将字符串转换成字符数组String s = “Java”;char charArray = s.toCharArray( );l 将字符数组转换成字符串 使用String的构造方法new String(new char J,a,v,a); 使用valueOf方法String.valueOf(new charJ,a,v,a);l 注:valueOf的参数类型可以是 char,char,double,long,int,floatl valueOf 方法将基本数据类型转换为字符串。例如String s1 = String.valueOf(1.0); /“.0”String s2 = String.valueOf(true); /“true”l 字符串转换为基本类型 Double.parseDouble(str) Integer.parseInt(str) Boolean.parseBoolean(str)(8) 字符串的分割方法:split(String)(9) 查找字符串中的某个字符或某个子串方法:indexOf和 lastIndexOf方法还有判断一个字符是字母还是数字的方法等等作业P270/9.5 3 Character类是处理单个字符的包装类(9.3)Character类的作用a) 将char类型的数据封装成对象b) 包含处理字符的方法和常量4 StringBuilder/StringBuffer类可用于处理可变字符串。(9.4)StringBuffer 与StringBuilder的区别StringBuffer是线程安全的可变字符序列,可以不需要额外的同步用于多线程中;StringBuilder是非同步,用在字符串缓冲区被单个线程使用的时候,大多数实现中它速度比StringBuffer快;二者之间的共同点都可以通过append、insert进行字符串的操作。 5 命令行参数:可以从命令行向main方法传递字符串。传递的字符串存储在哪里?又如何求传入的字符串参数的个数?(9.5)作业P271/9.13l 参数以空格分隔,如果参数本身包含空格,用双引号括起来。格式: java 类名 参数 参数 例如 java TestMain “First num” alpha 53l 命令行参数将传递给main方法的args参数。args是一个字符串数组,可以通过数组下标访问每个参数。public static void main(String args)l 求传入的字符串参数的个数:args.length6 File类用来获取文件的属性和对文件进行操作。它封装了文件或路径的属性。它不包括创建一个文件和对文件进行读写操作的方法。(9.6)7 使用PrintWriter类向文件写数据(9.7)PrintWriter用于创建一个文件并向文本文件写入数据。PrintWriter pw = new PrintWriter(fileName);方法 print() println() printf() 提供了对以下数据类型的输出 charintfloat ObjectBoolean charlongdouble String8 使用Scanner类从文件读数据(9.7)java.io.File file = new java.io.File(“scores.txt”);Scanner input = new Scanner(file);input.next();input.nextInt()第10章 关于对象的思考1 变量的作用域全局变量:静态变量和实例变量局部变量:方法内部声明和使用的变量下面程序的输出结果是什么:public class Foo private static int i=0; private static int j=0; public static void main(String args) int i=2; int k=3; int j=3; System.out.println(i+j is +i+j); k=i+j; System.out.println(k is +k); System.out.println(j is +j);结果:i+j is 2+3k is 2j is 02 this的作用This 常见的两种用法: (1)引用类的隐藏的实例变量 (2)让构造方法调用同一个类中另一个构造方法。3 何谓不可变类?不可变类应具备的条件是什么?一旦创建其内容就不能再改变的不可变对象。一个不可变对象的类称为不可变类条件:l 所有数据域必须都是私有l 没有修改器方法l 没有一个访问器方法,它会返回一个指向可变数据域的引用第11章 继承与多态1 什么叫类的继承?父类(根类、超类)和子类(次类、派生类)的关系?从现有的类派生出新类,就称为继承。新类称为子类、次类或派生类。现有的类称为超类、父类或基类。 子类继承了父类中可访问的数据和方法,子类也可添加新的数据和方 子类不继承父类的构造函数。 一个类只能有一个直接父类。 子类是父类的扩充2 子类申明的语法是什么?(extends关键字)class ClassName extends Superclass class body 3 子类中如何调用父类中的构造函数或父类中的成员?(用super)l 调用父类的构造函数 子类不继承父类的构造函数 super(parameters)调用父类的的构造函数。 必须是子类构造函数的第一条语句。 如果子类中没有显式地调用父类的构造函数,编译器会把super( )作为构造方法的第一条语句。它调用是父类中不带参数的构造函数 父类的构造函数在子类构造函数之前执行。l 调用父类的成员 super.data super.method(parameters)写出下列程序的运行结果:public class test public static void main(String args) new Faculty(); class Person public Person() System.out.println(调用Person不带参数的构造函数); class Employee extends Person public Employee() this(调用Employee重载的构造函数); System.out.println(调用Employee不带参数的构造函数); public Employee(String s) System.out.println(s); class Faculty extends Employee public Faculty() System.out.println(调用Faculty不带参数的构造函数); public Faculty(String s) super(s); 运行结果:调用Person不带参数的构造函数调用Employee重载的构造函数调用Employee不带参数的构造函数调用Faculty不带参数的构造函数4 什么是方法覆盖?方法覆盖与方法重载的区别?重载(overload):对于类的方法(包括从父类中继承的方法),方法名相同,参数列表不同的方法之间就构成了重载关系。覆盖 (override):也叫重写,就是在当父类中的某些方法不能满足要求时,子类中改写父类的方法。方法的覆盖和重载具有以下不同点:(1) 方法覆盖要求参数列表(参数签名)必须一致,而方法重载要求参数列表必须不一致。(2) 方法覆盖要求返回类型必须一致,方法重载对此没有要求。(3) 方法覆盖只能用于子类覆盖父类的方法,方法重载用于同一个类中的所有方法5 面向对象程序设计的三个特点是什么?(P310)多态,继承,封装多态通过方法的重载和覆盖实现。6 理解多态性、动态绑定的含义。(书P312/程序11-6和P323/11.11、课件中的最后一道强化训练题)。强化训练题:(一)类的描述如下: class A public String show(D obj) return (A and D); public String show(A obj) return (A and A); class B extends A public String show(B obj) return (B and B); public String show(A obj) return (B and A); class C extends B class D extends B 二、问题:以下输出结果是什么? A a1 = new A(); A a2 = new B(); B b = new B(); C c = new C(); D d = new D(); System.out.println(a1.show(b); System.out.println(a1.show(c); System.out.println(a1.show(d); System.out.println(a2.show(b); System.out.println(a2.show(c); System.out.println(a2.show(d); System.out.println(b.show(b); System.out.println(b.show(c); System.out.println(b.show(d); (三)答案 A and A A and A A and D B and A B and A A and D B and B B and B A and D 该问题的关键有两点:一是子类与父类的关系;二是重载方法的调用关系。并且注意:(1)子类对象可以直接当成父类使用,但反之不然;(2)当子类当成父类对象使用时,子类对象将失去所有的子类特性,只保留与父类同名的属性和方法(同名方法是指签名完全相同的方法)7 Java中方法的多态性分为哪几种?(两种:覆盖和重载)8 对象转换与instanceof 运算符;Object类是所有类的父类。 从子类到父类的转换是合法的,称为隐式转换。m(new Student();Object o = new Student();m(o); 从父类到子类必须显式转换,被转换的变量所指向的对象的类型必须是转换类或它的子类。Object o = new Student();Student s = (Student)o; o所指向的对象必须是Student或Student子类的对象l 可以用instanceof操作符判断一个对象是否是一个类的实例。表达式返回boolean值。语法引用变量 instanceof 类型名9 修饰符protected、final的作用 protected修饰符用于修饰数据和方法,可以被同一个包中的任何类或不同包中的子类访问。 final数据:常量,数据初始化后不能再修改。 final方法:最终方法,子类不能覆盖。 final类:最终类,不能派生子类 String, StringBuffer final局部变量:数据初始化后不能再修改。第13章 异常处理1 什么是异常?异常类分为必检异常和免检异常.Exception: 是非致命的。通过某种修正后程序还能继续执行。 RuntimeException, Error 以及它们的子类都称为免检异常 unchecked exceptions。免检异常反映程序中不可恢复的逻辑错误。它可能在程序的任何一个地方出现。Java不允许编写代码对其进行捕获或声明。 所有的其他异常都称为必检异常 checked exceptions, 意思是指编译器会强制程序员检查并处理它们。2 如何创建、抛出、捕获和处理异常?(注意关键字throws、throw和catch)声明异常:public void myMethod() throws IOException抛出异常: throw new TheException(); TheException ex = new TheException(); throw ex;捕获异常:catch(TheException ex)下面语句的执行流程是什么?(书P366-367/13.11-13.13,13.18)try statements1; statements2; statements3;catch (Exception1 exVar1) Statements4;catch (Exception2 exVar2) Statements5;. catch (ExceptionN exVar3) statements6; finally finalStatements; Statements7;首先执行try块语句statements1,2,3;若其中一条语句出现异常则之后的语句停止运行,并抛出异常。在catch块捕获,并执行catch块中语句。最后执行finally语句以及Statements7。如果有异常,但异常未被捕获到,则执行finally块中语句,将错误抛给上层方法。不执行Statements7语句。finally子句是一个无论异常是否出现或被捕获,都必须执行的程序段,所以常把一些必须被执行的代码(如资源回收:I/O时的关闭操作)放在finally子句里。程序执行finally子句的三种情况:1、不抛出异常: tryfinally2、抛出并捕获到异常: trycatchfinally3、抛出但没捕获到异常: tryfinally第14章 抽象与接口1 什么叫抽象类?什么叫接口?接口与抽象类的区别是什么?(见课件)Java中可以定义不含方法体的方法,方法的方法体由该类的子类根据自己的情况去实现,这样的方法称为抽象方法(abstract method),包含抽象方法的类必须是抽象类(abstract class)抽象类和抽象方法的声明要加上abstract关键字l 接口是常量和抽象方法的集合,它与类具有相似的结构。接口是能力、规范、协议的反映,它的目的是指明多个对象的共同行为。接口抽象类多重继承一个接口可以扩展多个接口一个类只能扩展一个抽象类方法接口不能提供任何代码抽象类可以提供完整代码数据字段只包含public static final常量,常量必须在声明时初始化。可以包含实例变量和静态变量。含义接口通常用于描述一个类的外围能力,而不是核心特征,例如Automobile类可以实现Recyclable接口,而Recyclable可以应用于其他不相关的对象。类与接口之间的is-able或者can do的关系。抽象类定义了它的后代的核心特征。例如Person类包含了Student类的核心特征。派生类与抽象类之间是is-a的关系。简洁性接口中的常量都被假定为public static final,可以省略。不能调用任何方法计算这些常量的初始值。接口中的方法被假定为public abstract。可以在抽象类中放置共享代码。可以使用方法来计算实例和静态变量(常量)的初始值。必须用abstract显式声明方法为抽象方法。添加功能如果为接口添加一个新的方法,则必须查找所有实现该接口的类,并为他们逐一提供该方法的实现。如果为抽象类提供一个新方法,可以选择提供一个缺省的实现,那么所有已存在的代码不需要修改就可以继续工作。一个类可以实现多个接口.2 如何声明一个抽象类?(书P396/14.1注意关键字:abstract)abstract class 类名protected 类名()/抽象类的构造方法定义为protected,因为它只被子类使用。abstract 返回值类型 方法名3 抽象类除了不能使用new操作符创建抽象类的实例之外,可以像非抽象类一样使用。4 如何声明一个接口?(书P396/14.4,注意关键字: interface)修饰符 interface 接口名 常量声明 方法签名 5 如何实现一个接口?(注意关键字: implements)参看实验指导书中对应实验的设计性内容)修饰符 class 类名 extends 父类名implements 接口列表 member_declaration*6 了解接口java.lang.Comparable(只含抽象方法compareTo),实现了Comparable接口的类的对象是可比对象。基本数据类型的类都实现了该接口。7 了解接口java.lang.Cloneable(标记接口),实现了Cloneable接口

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论