JAVA类与对象及数组习题及答案_第1页
JAVA类与对象及数组习题及答案_第2页
JAVA类与对象及数组习题及答案_第3页
JAVA类与对象及数组习题及答案_第4页
JAVA类与对象及数组习题及答案_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

精品文档 1欢迎下载 JAVA 类和对象及数组习题 一 选择题 1 下列构造方法的调用方式中 正确的是 D 原因 在通过 new 实例化一个 类对象时系统会自动调用该类相应的构造方法 A 按照一般方法调用 B 由用户直接调用 C 只能通过 new 自动调用 D 被系统调用 2 在 Java 中 能实现多重继承效果的方式是 C 原因 一个类可以同时实 现多个接口 Java 接口反映了对象较高层次的抽象 还弥补了 Java 只支持单继承的 不足 可用它来完成多继承的一些功能 A 内部类 B 适配器 C 接口 D 同步 3 int 型 public 成员变量 MAX LENGTH 该值保持为常数 100 则定义这个变量的 语句是 D 原因 java 中定义常量用关键字 final 来定义 A public int MAX LENGTH 100 B final int MAX LENGTH 100 C public const int MAX LENGTH 100 D public final int MAX LENGTH 100 4 下列叙述中 正确的是 A 原因 Java 严格区分大小写 所以变量 number 与 Number 不相同 Java 中的注释方式除了 行注释之外还有段注释 和文档注释 Java 源文件中的 public 类只能有一个 A 声明变量时必须指定一个类型 B Java 认为变量 number 与 Number 相同 C Java 中唯一的注释方式是 D 源文件中 public 类可以有 0 或多个 5 下列叙述中 错误的是 D 原因 子类继承父类 并且可以有自己的成员 变量和成员方法 所以可以认为子类是父类的扩展 精品文档 2欢迎下载 A 父类不能替代子类 B 子类能够替代父类 C 子类继承父类 D 父类包含子类 6 下列代码中 将引起编译错误的行是 B 原因 定义 float 型变量并对 其初始化时 其值后面要加一个 f 1 public class Exercise 2 public static void main String args 3 float f 0 0 4 f 1 0 5 6 A 第 2 行 B 第 3 行 C 第 4 行 D 第 6 行 7 下列关于继承的哪项叙述是正确的 D 错误原因 JAVA 不允许多重 继承 但可以通过接口的机制来达到多重继承的目的 一个类可以同时继承一个类和 实现多个接口 但是不能同时继承多个类 A 在 java 中允许多重继承 B 在 java 中一个类只能实现一个接口 C 在 java 中一个类不能同时继承一个类和实现一个接口 D java 的单一继承使代码更可靠 8 下列哪个修饰符可以使在一个类中定义的成员变量只能被同一包中的类访问 B 原因 无修饰符时是缺省修饰 它可以被同一包中的任何类访问 A private B 无修饰符 C public D protected 9 给出下列代码 如何使成员变量 m 被方法 fun 直接访问 C 原因 静态的成员方法只能访问静态的成员变量 精品文档 3欢迎下载 class Test private int m public static void fun A 将 private int m 改为 protected int m B 将 private int m 改为 public int m C 将 private int m 改为 static int m D 将 private int m 改为 int m 10 已知有下列类的说明 则下列哪个语句是正确的 B 原因 f 是 Test 类的私有成员变量 在类外不能访问 所以 A 不对 m 是非静态的变量不能直接 用类名来访问 所以 C 不对 由以上两个原因可知 D 不对 public class Test private float f 1 0f int m 12 static int n 1 public static void main String arg Test t new Test A t f B this n C Test m D Test f 11 给出下列代码 则数组初始化中哪项是不正确的 A 原因 array2 是一个二维数组 而 aray1 是一个一维数组 byte array1 array2 byte array3 byte array4 精品文档 4欢迎下载 A array2 array1 B array2 array3 C array2 array4 D array3 array4 12 下列代码的执行结果是 A 原因 在非静态的方法中不能定义静态的 变量 且方法 aMethod 没有返回语句 public class Test public int aMethod static int i 0 i System out println i public static void main String args Test test new Test test aMethod A 编译错误 B 0 C 1 D 运行成功 但不输出 13 下列关于内部类的说法不正确的是 C 原因 内部类可以声明为 private 或 protected 还可以声明为 abstract 或 final A 内部类的类名只能在定义它的类或程序段中或在表达式内部匿名使用 B 内部类可以使用它所在类的静态成员变量和实例成员变量 C 内部类不可以用 abstract 修饰符定义为抽象类 D 内部类可作为其他类的成员 而且可访问它所在类的成员 14 顺序执行下列程序语句后 则 b 的值是 C 原因 String 类的 substring 方法用于返回一个新的字符串对象 在当前字符串中 求以第一个参数为 起始索引位置 第二个参数为结束索引位置的子串的值 其中不包括结束索引位置的 那个字符 String a Hello 精品文档 5欢迎下载 String b a substring 0 2 A Hello B Hel C He D null 15 为 AB 类的一个无形式参数无返回值的方法 method 书写方法头 使得使用类名 AB 作为前缀就可以调用它 该方法头的形式为 A 原因 static 修饰的方 法又称为静态方法 静态方法是类方法 它可以直接通过类来调用 也可以通过类实 例来调用 A static void method B public void method C final void method D abstract void method 16 不使用 static 修饰符限定的方法称为对象 或实例 方法 下列哪一个说法是 正确的 D 原因 A 子类实例方法可以直接调用父类的 public 和 protected 实例方法 但不能调用父类的 private 方法 B 类方法也称为静态方法 非静态的方法不能调用静态的方法和成员变量 所以无论是父类还是子类的实例方法 都不能调用静态方法 C 一个类的实例方法只有这个类的其它方法或对象可以调用 不可以由其它类不经过实例化直接调用 A 实例方法可以直接调用父类的实例方法 B 实例方法可以直接调用父类的类方法 C 实例方法可以直接调用其他类的实例方法 D 实例方法可以直接调用本类的实例方法 17 设有下面的一个类定义 class AA static void Show System out println 我喜欢 Java class BB void Show System out println 我喜欢 C 若已经使用 AA 类创建对象 a 和 BB 类创建对象 b 则下面 A C 方法调用是正 确的 原因 静态方法属于类方法 它可以直接通过类来调用 也可以通过类实例来 精品文档 6欢迎下载 调用 而非静态的方法则只能通过类实例 对象 来调用 所以 AA 类的静态 show 方 法即可通过类也可以通过对象来调用 而 BB 类中的非静态方法 show 则只能通过对象 b 来调用 A a Show b Show B AA Show BB Show C AA Show b Show D a Show BB Show 18 在 Java 中 一个类可同时定义许多同名的方法 这些方法的形式参数的个数 类型或顺序各不相同 传回的值也可以不相同 这种面向对象程序特性称为 C 原因 同一名称的方法实现不同的功能是面向对象的多态性的表现 该多态性也称 为重载 A 隐藏 B 覆盖 C 重载 D Java 不支持此特性 19 对于构造函数 下列叙述不正确的是 C 原因 子类可以通过 super 来调用父类的构造方法 A 构造函数也允许重载 B 子类无条件地继承父类的无参构造函数 C 子类不允许调用父类的构造函数 D 在同一个类中定义的重载构造函数可以相互调用 20 对于子类的构造函数说明 下列叙述中不正确的是 D 原因 子类 不可以继承父类的有参构造函数 只能通过 super 调用 A 子类无条件地继承父类的无参构造函数 精品文档 7欢迎下载 B 子类可以在自己的构造函数中使用 super 关键字来调用父类的含参数构造函数 但 这个调用语句必须是子类构造函数的第一个可执行语句 C 在创建子类的对象时 将先执行继承自父类的无参构造函数 然后再执行自己的构 造函数 D 子类不但可以继承父类的无参构造函数 也可以继承父类的有参构造函数 二 请写出下列程序的运行结果 1 下列程序的运行结果是 s 120 分析 if 语句执行 3 次 分别是当 i 0 3 6 时 对应的数组中的数分别为 10 40 70 它们的和为 120 public class Examac public static void main String args int i s 0 int a 10 20 30 40 50 60 70 80 90 for i 0 i a length i if i 3 0 s a i System out println s s 2 下列程序的运行结果是 110 110 110 110 110 分析 for 循环执行 5 次 分别输出 11 99 22 88 33 77 44 66 55 55 的和 且之间用空格隔开 public class Examad public static void main String args int i int a 11 22 33 44 55 66 77 88 99 for i 0 i a length 2 i System out print a i a a length i 1 精品文档 8欢迎下载 System out println 3 下列程序的运行结果是 parent child child 分析 当对象 myC 调用方法 printAll 后 顺序执行该方法中的三条语句 在子类 Child 中 重载了父类的 printMe 方法 所在当执行 this printMe 和 printMe 方法时都调用重载后的 printMe 方法 所以依次输出 parent child child class Parent void printMe System out println parent class Child extends Parent void printMe System out println child void printAll super printMe this printMe printMe public class Examae public static void main String args Child myC new Child myC printAll 4 下列程序的运行结果是 精品文档 9欢迎下载 The String No 1 is The String No 2 is String 2 The String No 3 is string The String No 4 is string The String No 5 is string 原因 s1 定义了一个空的字符串对象 所以不会输出任何东西 s2 定义了一个字符串对象并赋初值为 string2 s3 定义了一 个以字符数组为参数的字条串对象 并将该字符数组组成的字符串赋给 s3 s4 定义 同 s3 只是只取字符数组从索引值为 2 的字符开始之后的 6 个字符 所以会去掉前面 的两个空格 s5 是以一个 StringBuffer 类对象为参数定义的一个字符串对象 它的 初值同 s3 class Examaf public static void main String args String s1 new String String s2 new String String 2 char chars s t r i n g String s3 new String chars String s4 new String chars 2 6 byte bytes 0 1 2 3 4 5 6 7 8 9 StringBuffer sb new StringBuffer s3 String s5 new String sb System out println The String No 1 is s1 System out println The String No 2 is s2 System out println The String No 3 is s3 精品文档 10欢迎下载 System out println The String No 4 is s4 System out println The String No 5 is s5 5 下列程序的运行结果是 0 and 0 1 and 0 0 and 1 1 and 1 0 and 2 1 and 2 原因 不带标签的 break 只结束它所在那一层循环不能结束外部循环 所 以内层循环只能执行两次 分别是 j 为 0 1 时 外层循环执行三次 分别是 i 为 0 1 2 时 public class ExamOuter public static void main String args for int i 0 i 3 i for int j 0 j1 break System out println j and i 6 下列程序的运行结果是 4 原因 执行主方法时先对 a b 赋初值 然后 判断条件 当判断 b 6 时 先对 b 加 1 再判断 此时 b 的值已经成为 3 条件都不 满足 输出 a b 的值为 1 3 4 class ExamTest public static void main String args 精品文档 11欢迎下载 int a 1 b 2 if a 0 System out println a b 7 下列程序的运行结果是 x 2 st y 1 st y 1 原因 生成类 StaticTest 时 先对静态成员变量 x 赋值 1 当执行主方法时 先执行其静态代码块 将 x 的值加 1 此时 x 2 在实例化 类时因为 y 并不是静态的 所以它属于对象 不属于类 所以对象中 y 的初值为 0 调用构造方法后对其加 1 class StaticTest static int x 1 int y StaticTest y public static void main String args StaticTest st new StaticTest System out println x x System out println st y st y st new StaticTest System out println st y st y static x 精品文档 12欢迎下载 8 下列程序的运行结果是 x1 0 x3 5 x2 2 原因 在生成类时先对类中的静态成员进行初始化分配空间 所以 x1 先赋值 再执行主函数时 先执行静态代码块 所以输出 x3 5 再执行模 3 运算 x 得 2 赋给 x2 输出 class StaticStuff static int x static System out println x1 x x 5 public static void main String args System out println x2 x static System out println x3 x x 3 9 下列程序的运行结果是 2 2 3 原因 当调用子类无参构造方法时 就调用父类的的无参构造方法 该方法 调用 func 函数 而该函数被子类覆盖 所以会调用子类的 func 函数 当执行第 二条语句调用子类的含参构造方法时 系统会默认先调用父类的无参构造方法再调用 子类含参构造方法 class Person public Person func 精品文档 13欢迎下载 public void func System out println 1 public class Person A extends Person public Person A super public Person A int a System out println a public void func System out println 2 public static void main String args Person A pa new Person A Person A pb new Person A 3 10 父类与子类初始化顺序 父类静态变量 父类静态代码块 子类静态变量 子类静态代码块 父类代码块 父类非静态变量 A Person 子类代码块 子类非静态变量 A chinese true 原因 无论是静态方法 静态变量还是静态代码块都是属于类的 不 属于对象 所以无论

温馨提示

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

评论

0/150

提交评论