java求职宝典习题3.docx
- 文档编号:2418120
- 上传时间:2022-10-29
- 格式:DOCX
- 页数:16
- 大小:23.50KB
java求职宝典习题3.docx
《java求职宝典习题3.docx》由会员分享,可在线阅读,更多相关《java求职宝典习题3.docx(16页珍藏版)》请在冰豆网上搜索。
java求职宝典习题3
1.面向对象的软件开发有哪些优点?
面向对象设计是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,是建立在“对象”概念基础上的方法学。
所谓面向对象就是基于对象概念,以对象为中心,以类和继承为构造机制,来认识、理解、刻画客观世界和设计、构建相应的软件系统。
从面向过程到面向对象是程序设计技术的一个飞跃。
人们之所以要采用面向对象的程序设计技术,其目的在于:
按照与人类习惯思维方法一致的原则开发系统;提高代码的可重用性(或者称为复用性);提升程序的开发与运行效率;提高程序的可靠性与可维护性;提高程序的可扩展性;增强程序的可控制性。
总之,面向对象的程序设计,能够有效分解、降低问题的难度与复杂性,提高整个求解过程的可控制性、可监视性和可维护性,从而获得较高的开发效率与可靠效果。
2.什么叫对象?
什么叫类?
类和对象有什么关系。
对象(Object)是一个应用系统中用来描述客观事物的实体,是具有特定属性(数据)和行为(方法)的基本运行单位,是类的一个特定状态下的实例。
对象是一件事、一个实体、一个名词、一个可以想象为有自己的标识的任何东西。
对象是类的实例化。
概括来说:
万物皆对象。
对象具有状态,一个对象用数据值来描述它的状态。
类(Class)是Java代码的基本组织模块,是用以描述一组具有共同属性和行为的对象的基本原型,是对这组对象的概括、归纳与抽象表达。
类是对象的模板,它定义了本类对象所应拥有的状态属性集及操作这组属性的行为方法集。
是对一组有相同数据和相同操作的对象的定义,一个类所包含的方法和数据描述一组对象的共同属性和行为。
类和对象之间的关系是抽象和具体的关系:
类就是一种模板,表达的是一种抽象的概念,它描述了该类对象的共同特征,类是在对象之上的抽象,对象则是类的具体化,是类的实例。
对象是模板的实例化,是个性的产物,是一个具体的个体;类必须通过对象才能使用,而对象中的属性和行为都必须在类中定义;类由属性和行为(方法)组成。
3.什么是包?
把一个类放在包里有什么作用?
Java中的包(Package) 是一种松散的类的集合,是用来组织与管理类与接口的容器。
包的作用主要是把需要协同工作的不同的类组织在一起,使得程序功能清楚、结构分明。
4.作用域public、private、protected以及不写时(default)有什么区别?
当用一个类创建了一个对象之后,该对象可以通过“.”运算符访问自己的变量,并使用类中的方法。
但访问自己的变量和使用类中的方法是有一定限制的。
通过修饰符private、default、protected和public来说明类成员的使用权限。
private(私有的):
类中限定为private的成员只能在这个类中被访问,在类外不可见。
default(无修饰符,缺省的):
如果没有访问控制符,则该类成员可以被该类所在包中的所有其它类访问。
protected(受保护的):
用该关键字修饰的类成员可以被同一类、被该类所在包中的所有其它类或其子类(可以不在同一包中)的实例对象访问。
public:
用public修饰的类成员可以被其他任何类访问,前提是对类成员所在的类有访问权限。
类成员访问控制符与访问能力之间的关系
同一个类同一个包不同包的子类不同包非子类
private*
default**
protected***
public****
5.什么是方法?
方法的结构是怎样的?
设计方法应考虑哪些因素?
方法是Java类的一个组成部分,通过类的方法改变对象的状态。
方法的结构:
[方法修饰符] 返回值类型 方法名([形参列表])[throws异常列表]
{
方法体;
}
设计方法应考虑因素有:
(1) 方法名是Java中任意的标识符,按照命名的约定,方法名应该是有意义的动词或动词短语,它的第一个字母一般要小写,其他有意义的单词的首字母要大写,其余字母小写。
(2) 返回值类型可以是任意的Java类型,甚至可以是定义此方法的类。
如果方法没有返回值,则用void表示。
(3) 形式参数列表是可选的。
如果方法没有形式参数,就用一对小括号“()”表示。
形式参数列表的形式如下:
(类型 形参名,类型 形参名,……)
(4) throws异常列表规定了在方法执行中可能导致的异常。
6.什么是方法的覆盖?
与方法的重载有何不同?
方法的覆盖与属性的隐藏有何不同?
子类重新定义父类中已经存在的方法,称为方法的覆盖。
方法重载指一个类中有多个方法享有相同的名字,但是这些方法的参数必须不同,或者是参数的个数不同,或者是参数类型不同。
返回类型不能用来区分重载的方法。
其实方法重载的最主要的作用就是实现同名的构造方法可以接受不同的参数。
参数类型的区分度一定要足够,例如不能是同一简单类型的参数,如int与long。
方法的重载不是子类对父类同名方法的重新定义,而是在一个类中定义了同名的不同方法。
方法覆盖与属性的隐藏不同:
子类重新定义父类已有的域,并不能完全取代它从父类那里继承的同名的域,这个域仍然占用子类的内存空间,在某些情况下会被使用;而当子类重新定义父类的方法时,从父类那里继承来的方法将被新方法完全取代,不再在子类的内存空间中占一席之地。
7.什么是成员变量、局部变量、类变量和实例变量?
在方法外但在类声明内定义的变量叫成员变量,作用域是整个类。
在方法体中定义的变量和方法的参数被称为局部变量。
类的成员变量分为类变量和实例变量,类变量是用关键字static声明的变量。
成员变量在整个类内都有效,局部变量只在定义它的方法内有效。
他们的生存期分别是:
局部变量在定义该变量的方法被调用时被创建,而在该方法退出后被撤销;实例变量在创建该类的实例时被创建,而其生存期和该类的实例对象的生存期相同;类变量在该类被加载时被创建,所有该类的实例对象共享该类变量,其生存期是类的生存期。
任何变量在使用前都必须初始化,但是需要指出的是局部变量必须显式初始化,而实例变量不必,原始类型的实例变量在该类的构造方法被调用时为它分配的缺省的值,整型是0,布尔型是false,而浮点型是0.0f,引用类型(类类型)的实例变量的缺省值是null,类变量的规则和实例变量一样,不同的是类变量的初始化是在类被加载时。
8.什么是继承?
什么是父类?
什么是子类?
继承的特性可给面向对象编程带来什么好处?
继承(Inheritance):
继承是指从已有的类中派生出若干个新类,是子类自动共享父类之间数据和方法的机制。
已有类称为基类或父类,新类称为派生类或子类;子类将自动地获得基类的属性与方法,从而不需再重复定义这些属性与方法;当然子类还可以修改父类的方法或增加新的方法,从而使自己更适合特殊的需要。
类之间的继承关系是现实世界中遗传关系的直接模拟。
如果没继承性机制,则类对象中数据、方法就会出现大量重复。
继承不仅支持系统的可重用性,而且还促进系统的可扩充性。
继承是子对象可以继承父对象的属性和行为,亦即父对象拥有的属性和行为,其子对象也就拥有了这些属性和行为。
这非常类似大自然中的物种遗传。
9.什么是多态?
面向对象程序设计为什么要引入多态的特性?
多态性:
是指不同类的对象收到相同的消息时,得到不同的结果。
即允许不同类的对象对同一消息作出各自的响应,以统一的风格处理已存在的数据及相关的操作。
即
多态性语言具有灵活、抽象、行为共享、代码共享的优势,较好地解决了应用程序中方法同名的问题。
多态的特点大大提高了程序的抽象程度和简洁性,更重要的是它最大限度地降低了类和程序模块之间的耦合性,提高了类模块的封闭性,使得它们不需了解对方的具体细节,就可以很好地共同工作。
这对程序的设计、开发和维护都有很大的好处。
10.“子类的域和方法的数目一定大于等于父类的域和方法的数目”,这种说法是否正确?
为什么?
这样说是不对的,因为父类的私有方法不能被继承。
如果父类有N个私有域和方法而只有一个非私有的域或方法时,跟据继承的原则子类只能拥有父类的非私有域和方法。
这时子类的域和方法就要小于父类了。
11.父类对象与子类对象相互转化的条件是什么?
如何实现它们的相互转化?
一个子类对象也可以被合法地视为一个父类的对象,即一个父类对象的引用,其指向的内存单元可能实际上是一个子类的对象。
在这种情况下,可以使用强制类型转换,将父类对象的引用转换成实际的子类对象的引用。
12.以下代码共创建了几个对象:
2
String s1=new String(“hello”);
String s2=new String(“hello”);
String s3=s1;
String s4=s2;
13.分析以下代码,编译时出现什么现象:
The local variable myArg may not have been initialized
public class Test {
static int myArg = 1;
public static void main(String[] args) {
int myArg;
System.out.println(myArg);
}
}
14.对于以下程序,运行“java Mystery Mighty Mouse”,得到的结果:
Mouse Mighty
public class Mystery {
public static void main(String[] args) {
Changer c = new Changer();
c.method(args);
System.out.println(args[0] + ” ” + args[1]);
}
static class Changer {
void method(String[] s) {
String temp = s[0];
s[0] = s[1];
s[1] = temp;
}
}
}
15.阅读下列程序,写出输出的结果:
i = 100 i = 10 i = 10
class Xxx {
private int i;
Xxx x;
public Xxx() {
i = 10;
x = null;
}
public Xxx(int i) {
this.i = i;
x = new Xxx();
}
public void print() {
System.out.println(“i = ” + i);
System.out.println(x);
}
public String toString() {
return ”i = ” + i;
}
}
public class Test{
public static void main(String[] args) {
Xxx x = new Xxx(100);
x.print();
System.out.println(x.x);
}
}
16.为了使以下Java应用程序输出11、10、9,应在(**)处插入的语句是:
i[a]=(int)x[a]+1;
如果要求输出10、9、8,则在(**)处插入的语句应是:
i[a]=(int)x[a];
public class GetIt {
public static void main(String args[]) {
double x[] = {10.2, 9.1, 8.7};
int i[] = new int[3];
for(int a = 0;a < (x.length);a++) {
(**)
System.out.println(i[a]);
}
}
}
17.阅读下列程序,分析程序的输出结果:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 求职 宝典 习题