第一章1.Java具有那些适合在Internet环境中的特点【答】简单性和完全面向对象,平台无关性,安全性和可靠性,多线程,高效的网络编程。
2.Java保留、放弃了C/C++语言中哪些语法和面向对象机制为什么需要这样做【答】在语法规则方面,Java语言放弃了全程变量、goto语句、宏定义、全局函数以及结构、联合和指针数据类型,使Java语言更简单、更精练。
在面向对象概念方面,Java语言放弃了多元继承、友元类和运算符重载,采用“单重继承+接口”的方式代替多重继承,提供语言级的内存自动管理和异常处理方式,使Java语言更健壮、更安全、更高效。
3.Java对原程序文件的命名规则有什么要求源程序文件编译后生成什么文件【答】要求:源程序文件与类同名,文件扩展名为.java;编译后生成字节码文件(*.class)。
4.Java程序的运行机制是怎样的与C++或其他语言有什么不同【答】Java的每一个类都有一个class文件和它对应,Java在程序的启动的时候将程序运行需要用到的类加载到虚拟机中,根据Java的虚拟机规范进行连接(动态连接),程序的组装是在运行的时候完成的C++和其他的编译型的语言一样,它的程序的组装方式是一种传统的组装方式。
C++在编译的时候生成适用于某一平台的二进制代码,在连接的时候找到需要调用的库,然后将这些库中的代码连接进可执行程序之中,生成的可执行程序运行速度非常的快,但是可执行代码已经变成了一个整体,不可能再分开5.什么是平台无关性Java是怎样实现平台无关性的【答】平台无关性即Java程序的运行不依赖于操作系统。
Java采用虚拟机技术实现平台无关性。
程序由虚拟机解释执行,不同的操作系统上运行不同版本的Java 虚拟机。
6.Java应用程序由哪两种形式他们的运行方式有什么不同【答】Application和applet两种形式,其中application是能够独立运行的应用程序,既可以以DOS的命令方式运行,也可以以图形用户界面方式运行。
Applet 是可以嵌入页面的最小应用程序,不能独立运行,必须嵌入超文本中,由浏览器显示运行。
7.什么是解释执行Java怎样解释执行两种应用程序【答】解释执行即将字节码解释成本地机器码并执行。
Java源程序文件经编译后生成字节码文件,若是application应用程序,则将字节码文件交由Java解释器解释执行,最后在windows操作系统上运行。
若是applet应用程序,则将字节码文件嵌入超文本文件并下载到web浏览器上,最后由windows操作系统中的Java虚拟机运行。
8.作为一个软件开发人员,应该具备那些基础知识用以开发windows应用程序【答】略第2章1.标示符和关键字在定义和使用方面有何区别【答】定义方面:标示符是用户定义的、以字母开头的字母数字序列,关键字是由Java语言定义的、具有特定含义的英文单词。
使用方面:标示符用于命名变量、常量、类、对象等元素,每一个关键字都有特定的含义,不能被赋予别的含义。
2.Java语言的基本数据类型有哪些引用数据类型有哪些【答】基本数据类型有:整数类型byte、short、int、long,浮点数类型float、double,字符类型char,布尔类型boolean;引用数据类型包括数组(array)、类(class)和接口(interface)3.试分析基本数据类型与引用数据类型的主要特点,并说明使用这两种变量有哪些差别【答】基本数据类型的变量保存数据值,而引用数据类型的变量保存地址。
4.算术运算、关系运算、逻辑运算和位运算各有哪些运算符【答】算术运算:单目运算符有+(正)、—(负)、++(自增)、——(自减),双目运算符有+(加)、—(减)、*(乘)、/(除)、%(取余)关系运算:=(等于)、!=(不等于)、>(大于)、<(小于)、>=(大于等于)、<=(小于等于)都是双目运算逻辑运算:&(与)、|(或)、!(非)、^(异或)、&&(条件与)、||(条件或),其中!是单目运算,其它都是双目运算位运算:~(非)、&(与)、|(或)、^(异或)、<<(左移位)、>>(右移位)、>>>(无符号移位)5.程序中为什么需要常量和变量声明常量或变量时,为什么必须给出其所属的数据类型【答】在程序中使用的数据大多需要经常变化,用常量值表示显然不够,因此每一种算法语言都提供常量和变量来存储数据。
为了确定常量或变量的数据性质、取值范围、以及它们占用的内存单元的字节数和它们参加的合法运算和操作。
6.什么是变量的作用域,声明变量时,如何确定变量的作用域【答】变量的作用域是指其作用范围。
变量声明的位置决定了它的作用域7.设i是一个整数类型变量,写出下列问题对应的表达式(1)判断i为奇数或偶数;【答】i%2==0 ength;j++) ength;j++)ength;j++) 员变量this.成员方法([参数列表])注意:Java中的this是引用方式,不是C++中的指针方式。
(3)this引用还可以用在重载的构造方法中,调用本类已定义好的构造方法。
语法格式如下:this([参数列表])注意:在构造方法中,this()引用必须是第一行语句。
3-9 说明类成员与实例成员的区别。
【答】Java的类中可以包括两种成员:实例成员和类成员。
实例成员是属于对象的,实例成员包括实例成员变量和实例成员方法。
类成员是属于类的,需要用关键字static标识,也称为静态成员。
具体区别如下:1.实例成员变量与类成员变量(1) 两者声明时的差别。
当一个类声明成员变量时,没有使用关键字static 声明的为实例成员变量,使用关键字static声明的为类成员变量。
(2) 两者存储结构的差别。
当创建一个对象时,系统会为每一个对象的每一个实例成员变量分配一个存储单元,使得属于不同对象的实例成员变量有不同的值;而为每一个类成员变量只分配一个存储单元,使得所有对象公用一个类成员变量。
(3) 两者引用方式的差别。
实例成员变量属于对象,必须通过对象访问;类成员变量属于类,既可以通过对象,也可以通过类访问。
2.实例成员方法与类成员方法(1) 两者声明时的差别。
当一个类声明成员方法时,没有使用关键字static 声明的为实例成员方法,使用关键字static声明的为类成员方法。
(2) 两者方法体中语句的差别。
类成员方法只能访问类成员变量;实例成员方法既可以访问类成员变量,也可以访问实例成员变量。
在实例成员方法体中,可以使用this引用指代当前对象;而在类成员方法体中,则不能使用this引用。
(3) 两者引用方式的差别。
实例成员方法必须通过对象访问;类成员方法既可以通过对象,也可以通过类访问。
3-10 什么是继承继承机制的作用是什么子类继承了父类中的什么子类不需要父类中的成员时怎么办能够删除它们吗Java允许一个类有多个父类吗【答】继承性是面向对象的核心特征之一,是一种由已有的类创建新类的机制。
被继承的类称为父类或超类,通过继承产生的新类称为子类或派生类。
继承机制是面向对象程序设计中实现软件可重用性的最重要手段。
通过继承,子类自动拥有父类的所有成员,包括成员变量和成员方法(不包括构造方法)。
子类可以更改父类成员,还可以增加自己的成员,但是,不能删除父类的成员。
在Java中以“单重继承+接口”的方式代替多重继承,不允许一个类有多个父类。
3-11 子类能够访问父类中什么样权限的成员【答】虽然子类继承了父类的成员变量和成员方法,但并不是对所有的成员都有访问权限。
访问权限说明如下:(1)子类对父类的私有成员(private)没有访问权限。
(2)子类对父类的公有成员(public)和保护成员(protected)具有访问权限。
(3)子类对父类中缺省权限成员访问权限分为两种情况,对同一包中父类的缺省权限成员具有访问权限,而对不同包中父类的缺省权限成员没有访问权限。
3-12 如果子类声明的成员与父类成员同名会怎么样【答】如果子类重定义父类的同名成员变量,则子类隐藏了父类成员变量。
如果子类重定义父类的同名成员方法,当子类方法的参数列表与父类方法的参数列表完全相同时,则称子类成员方法覆盖了成员方法。
如果子类重定义父类的同名成员方法,当子类方法的参数列表与父类方法的参数列表不同时,子类继承了父类的成员方法,并重载了继承来的该成员方法。
3-13 super引用有什么作用super引用有几种使用方法【答】当子类重定义了父类成员时,则存在同名成员问题。
此时,在子类方法体中,成员均默认为子类成员。
如果需要引用父类同名成员,则需要使用supper引用。
在以下两种同名成员情况下,需要使用supper引用。
(1)子类隐藏父类成员时,如需要访问父类同名成员变量时,需要使用supper 指代父类的同名成员变量。
语法如下:super.成员变量(2)子类覆盖父类成员时,如需要访问父类同名成员方法时,需要使用supper 指代父类的同名成员方法。
语法如下:super.成员方法([参数列表])注意:super引用不能像this引用一样单独使用。
3-14 什么是多态性什么是方法的重载方法的重载和覆盖有何区别【答】在面向对象语言中,多态是指一个方法可以有多种实现版本,类的多态性表现为方法的多态性。
重载是指同一个类中的多个方法可以同名但参数列表必须不同。
重载表现为同一个类中方法的多态性。
覆盖是指子类重定义了父类中的同名方法。
覆盖表现为父类与子类之间方法的多态性。
3-15 什么是运行时多态方法的重载和覆盖分别是什么时的多态性【答】如果在编译时不能确定、只有在运行时才能确定执行多个同名方法中的哪一个,则称为运行时多态。
方法的重载都是编译时多态。
方法的覆盖变现出两种多态性,当对象获得本类的实例时,为编译时多态,否则为运行时多态。
3-16 什么是抽象类在什么情况下需要设计抽象类抽象类中是否必须有抽象方法【答】使用关键字abstract声明的类称为抽象类,使用abstract声明的成员方法为抽象方法。
抽象类中可以不包含抽象方法,但包含抽象方法的类必须被声明为抽象类。
3-17 什么是最终类在什么情况下需要设计最终类最终类中是否必须有最终方法【答】使用关键字final声明的类称为最终类,最终类不能被继承。
使用final 声明的成员方法称为最终方法,最终方法不能被子类覆盖。
最终类中包含的都是最终方法,非最终类也可以包含最终方法。
3-18 将辗转相除法求两个整数的最大公因数gcd(a,b)用递归方法实现,辗转相除法题意见例,再设计下列方法:(1)求两个整数a﹑ b的最小公倍数;(2)求三个整数a﹑b﹑c的最大公约数。