当前位置:文档之家› 作业实验类和对象基础

作业实验类和对象基础

类和对象基础一、选择题1、下列哪一个不属于JAVA语言的数据类型A)指针类型B)类C)数组D)浮点类型答案:A2、声明类的关链字是A)ClassB)classC)voidD)main3、不属于java类中的变量的是A)实例成员变量B)类成员变量C)局部变量D)寄存器变量答案: D4、在Java中,一个类可同时定义许多同名的方法,这些方法的形式参数的个数、类型或顺序各不相同,传回的值也可以不相同,这种面向对象程序特性称为A)隐藏B)覆盖C)重载D)Java不支持此特性5、不使用static修饰符限定的方法称为实例成员方法,下列哪一个说法是不正确的A)成员方法可以直接调用父类的成员方法B)成员方法可以直接调用父类的类方法C)成员方法不可以直接调用其他类的成员方法D)成员方法可以直接调用本类的类方法答案:6、函数重载是指A)两个或两个以上的函数取相同的函数名,但形参的个数或类型不同B)两个以上的函数取相同的名字和具有相同的参数个数,但形参的类型可以不同C)两个以上的函数名字不同,但形参的个数或类型相同D)两个以上的函数取相同的函数名,并且函数的返回类型相同7、下述哪个说法是不正确的A)局部变量在使用之前无需初始化,因为有该变量类型的默认值B)类成员变量由系统自动进行初始化,也无需初始化C)参数的作用域就是所在的方法D)for语句中定义的变量,当for语句执行完时,该变量就消亡了答案:A8、下列代码的执行结果是:public class Test6{public static void main(String args[]){int a=4,b=6,c=8;String s="abc";}}A)ababccB)464688C)46abc8D)10abc8答案:D9、下列关于变量作用域的说法中,正确的一项是A)方法参数的作用域是方法外部代码段;B)异常处理参数的作用域是方法外部代码段;C)局部变量的作用域是整个类;D)局部变量的作用域是类的某个方法;答案:D10、下列关于JAVA语言中要使用的一个变量,不正确的是:A)在JAVA程序中要使用一个变量,必须先对其进行声明;B)变量声明语句可以在程序的任何地方,只要在变量使用前就可以;C)变量不可以在其作用域之外使用;D)局部变量在使用之前可以不初始化,系统使用默认的初始值;答案:D11.一个int型整数和一个double型浮点数进行加法运算,结果类型是( )A.Int型B.Double型C.Float型D.Long型答案:B12.一个可以独立运行的Java应用程序()A.可以有一个或多个main方法B.最多有两个main方法C.可以有一个或0个main方法D.只能有一个main方法答案:D13. ()方法是JavaApplication执行的入口点。

A.Main方法B.Init方法C.Man方法答案:A13.以下的变量定义语句中,合法的是()A.Int long=3.2345333L;B.Byte $_b1=224333;C.Float _*5=345.33532F;D.Double a=Double.MAX_VALUE;答案:D14.下列关于Java程序结果的描述中,不正确的一项是()A.一个Java源文件可以包括多个类定义,但只能有一个public类;B.一个Java源文件可以包括一个package语句;C.一个Java源文件可以有多个public类;D.源文件名和程序类名必须保持一致。

答案:C二、分析题15.下面程序是否通过编译,为什么?public class abc{int age;String sname;age=23;}答案:实测变量的赋值只能在定义的时候就赋值或者在某个方法中赋值。

16.指出下面出错的地方,为什么?a)class abc{b) int age;c) String sname;d) static String classer;e) void setAge( age){f) age=age;g) }h) static static void speak(){i)“年龄:”+age+”;班级:”+classer);j) }k)}答案: (e)没有为传递进来的参数age定义一个int类型(f)第一个age没有加this(h)多写了一个static(i)在静态的方法中不能调用非静态变量age17.源代码如下所示,你觉得程序能否通过编译呢,如果可以通过编译输出的结果会是什么呢?public class TestOverLoad{public static void main(String[] args){Test test = new Test();test.print(null);}}class Test{public void print(String some){}public void print(Object some){}}答案: 能,输出String version print18.如果在上题中TestOverLoad类中再添加一个方法如下所示,这样会如何呢?public class TestOverLoad{public static void main(String[] args){Test test = new Test();test.print(null);}}class Test{public void print(String some){}public void print(Object some){}public void print(StringBuffer some){}}答案:应为实例化Test后传递的参数是null,系统就自动优先调用子类的函数。

而String 和StringBuffer都是Object的子类,但是String和StringBuffer二者没有任何继承关系。

属于同一级,因此系统不知道调用谁,所以报错。

19.下面可否通过编译,为什么?public class A{public int aMethod(String s){return 1;}public void aMethod(String s){}}答案:出错,重载限定在传递参数的个数或者是类型不同,顺序不同,但是这题是返回类型不同,方法一样,但是其参数相同,不符合重载的要求,但是他们的方法名都一样,所以会出错。

三、简答题1、类和对象的关系?类定义了一种新的数据类型,可以用新类型来创建该类型的对象。

类(class)是对象(object)的模板,而对象是类的一个实例。

2、定义一个类需要包含什么元素?一个类包含属性和方法。

该类具有哪些特征使用属性表示,该类具有哪些行为使用方法来表示。

3、如何使用this关键字?This指向自己的引用,即当前方法所在的对象。

它的一个主要作用是要将自己这个对象当做参数,传送给别的对象中的犯法。

或者在类定义时使用this来引用自己的属性或方法。

4、类体中的方法包含哪些分类?按返回值分:有返回值、无返回值按参数分:无参数、有参数(单个参数,多个参数)按范围或功能分:实例方法、类方法、构造方法5.什么时候为类中的实例变量分配内存空间?在使用类创建实例对象时会为其分配空间。

(通过new关键字和构造函数为其实例化的时候)6.什么叫方法的重载?构造方法可以重载吗?一个类中可以有多个方法具有相同的名称,但这些犯法的参数必须不同,即或者是参数个数不同,或者是参数的类型不同,或者是参数的顺序不同。

构造方法可以重载,而且构造方法的重载是方法中使用频率最高的一种。

7. 简述类变量和实例变量的不同?(1)不同对象的实例变量将分配不同的内存空间,实例变量则属性独有,改变某一个对象的值不影响其他对象;而所有对象的类变量占用同一块内存空间,类变量是所有对象共有的,改变其中一个对象的值,其他对象得到的就是改变后的结果。

(2)类变量在类被加载到内存是就为其分配内存空间,而实例变量在使用new创建对象时,才为其分配内存空间;(3)类变量可以通过对象和类名访问,而实例变量只能通过对象访问。

(4)类变量通过static关键字修饰,实例变量不需要。

8.通过Student stu;语句定义一个用户类型变量时,是否能在内存中创建对象?通过Student stu;语句仅仅声明了一个类型为Student,名称为stu的引用变量。

这个引用变量具有指向一个Student对象的潜在可能,但还没有指向一个Student对象。

如果要想使stu指向一个全新的Student对象,在运行时用特定的java关键字new在JVM存储空间中分配Student对象。

即通过赋值语句将引用变量和对象关联起来,Student stu=new Student()。

四、上机题一、详细要求详细要求中,没有明确指明是类变量或类方法; 一律定义为实例变量或实例方法;。

相关主题