java重载方法的特征
(仅供参考)java期末考试样卷答案
习题一、选择题1.如下哪个字符串是Java中的合法标识符?( A )A、fieldnameB、superC、3numberD、#number2.Java中main()函数的返回值是什么类型? ( D )A、StringB、intC、charD、void3.下列哪些语句关于Java内存回收的说明是正确的? ( C )A、程序员必须创建一个线程来释放内存B、内存回收程序允许程序员直接释放内存C、内存回收程序负责释放无用内存D、内存回收程序可以在指定的时间释放内存对象4.以下关于继承的叙述正确的是( B )。
A、在Java中一个类只能实现一个接口B、在Java中类只允许单一继承C、在Java中一个类不能同时继承一个类和实现一个接口D、在Java中接口只允许单一继承5.Java Applet中的paint()方法使用哪种类型的参数? ( A )A、GraphicsB、Graphics2DC、StringD、Color6.在使用interface声明一个接口时,只可以使用( D )修饰符修饰该接口。
A、privateB、protectedC、private protectedD、public7.下面( B )函数是public void example( ){...}的重载函数?A、public void example( ){...}B、public void example( int m ){...}C、public void example2( ){...}D、public int example ( ){...}8.在浏览器中执行applet 程序,以下选项中的( A )方法将被最先执行。
A、init()B、start()C、destroy()D、stop()9.有程序片段如下,以下表示式的结果为true的是( B )。
Float s=new Float(0.1f);Float t=new Float(0.1f);Double u=new Double(0.1);A、s= =tB、s.equals(t)C、u.equals(s)D、t.equals(u)10.关于异常的含义,下列描述中最正确的一个是(C )。
Java中的方法覆盖(Overriding)和方法重载(Overloading)是什么意思?
Java中的⽅法覆盖(Overriding)和⽅法重载(Overloading)是什么意思? ⽅法覆盖也称为重写,重写即⼦类重新定义了⽗类的⽅法。
重写: 1、重写的⽅法必须与原⽅法有相同的⽅法名、参数列表和返回值类型(Java SE5之后返回值类型可以是其类型的⼦类型) 2、被重写的⽅法不能是final类型,因为final类型⽆法重写 3、被重写的⽅法不能是private,因为private⽆法继承,⽽继承是重写的前提 4、被重写的⽅法不能为static,如果⽗类中的⽅法为静态,⽽⼦类的⽅法不是静态的,但是两个⽅法除了这⼀点其他都满⾜重写条件,那么会发⽣编译错误,反之亦然。
如果⼦类和⽗类中的⽅法都是静态的,并且满⾜重写条件,但仍然不会发⽣重写,因为静态⽅法是在编译时把静态⽅法和类的引⽤进⾏匹配。
5、重写的⽅法的访问权限不能⼩于原⽅法 6、重写抛出的异常的范围不能⼤于原⽅法 7、重写是在运⾏是发⽣的,JVM会在代码运⾏时作出决定。
⽅法重载简称重载,重载即同⼀个类中两个或多个⽅法名相同但参数不同的情况重载: 1、⽅法名必须相同 2、参数列表必须不同(参数的个数,类型,顺序不同) 3、⽅法的返回类型可以相同也可以不同 4、仅仅返回值类型不同不⾜以成为⽅法的重载 5、重载是发⽣在编译时的,因为编译器可以根据参数类型来选择使⽤哪个⽅法重写和重载的区别: 1、重写只能⽤于⼦类重写⽗类的⽅法,⽽重载⽤于同⼀类中的所有⽅法 2、重写的参数列表必须相同,重载的参数列表必须不同 3、重写要求返回值类型必须⼀致或是其⼦类,重载没有要求 4、重写对⽅法的访问权限和抛出异常有特殊的要求,⽽⽅法的重载没有这⽅⾯的限制 5、⽗类的⽅法只能被同⼀⼦类重写⼀次,⽽⼀个⽅法可以在所有类中被重载很多次 6、重写是运⾏时的多态,重载是编译时的多态。
谈谈重载(overload)覆盖(override)与隐藏、多态
---------------------------------------------------------------
overload:
public a(){}
public a(int a){]
考虑这样两个类:
class Father {
public void doSomething(){}
public void doSomething(int a){}
public void doSomething(String s, int a){}
}
class Son extends Father {
public void doSomething(String s, int a) {}
public void doSomething(int a, String s){}
}
方法aaa Override
---------------------------------------------------------------
还有,overload一般发生在同一个类中的有着不同的参数名和(或)不同数量的参数的同名方法之间,但同名方法的返回值可以一样
隐藏是指派生类中的函数把基类中相同名字的函数屏蔽掉了。隐藏与另外两个概念表面上看来很像,很难区分,其实他们的关键区别就是在
多态的实现上。什么叫多态?简单地说就是一个接口,多种实现吧。
覆盖指的是派生类的虚拟函数覆盖了基类的同名且参数相同的函数!
重载(overload):
必须在一个域中,函数名称相同但是函数参数不同,重载的作用就是同一个函数有不同的行为,因此不是在一个域中的函数是无法构成重载的,这个
java题库-选择题
第1、2章(10道)1、CPU指的是(C )。
运算器和CRTCRT和RAMALU和控制器ALU和ROM2、计算机与一般计算装置的本质区别是它具有( D)。
大容量和高速度自动控制功能程序控制功能存储程序和程序控制功能3、在计算机中,数值数据一般采用( B)形式存储。
原码补码反码真值4、十进制数97转换成二进制数为( A)。
011000011100001000110001010101015、Java 2技术中,常用于嵌入式设备及消费类电器(如手机等)上的开发的是( C)。
J2EEJ2SEJ2MEJRE6、适合用来开发系统程序,如编写操作系统及驱动程序的程序设计语言是( D)。
JavaFortranPascalC7、Java源程序是以文本格式存放的,文件扩展名必须为( A)。
.java.class.jar.txt8、Java的平台无关性的实现主要依靠(B )。
JDKJVMJREJAR9、与Java应用程序(Application)不同,Java Applet程序的运行,需要得到( B)的支持。
操作系统客户端浏览器记事本(Notepad)软件数据库服务器10、安装JDK时,不需要配置环境变量(D )。
** JAVA_HOMEpathclasspathOS第三章:(47道)1、编译Java Application 源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为(B )。
***javaclasshtmlexe2、Java程序的执行过程中用到一套JDK工具,其中java.exe是指(B )。
Java文档生成器Java解释器Java编译器Java类分解器3、Java语言具有许多优点和特点,下列选项中,哪个反映了Java程序并行机制的特点(B )。
安全性**** 多线程跨平台可移植4、Java编程所必须的默认引用包为(B )。
*****java.sys包ng包java.new包5、在Java中,属于浮点数类型变量的是(B )。
java中解析方法和方法的调用关系
1.1 Java语言和方法的概念1.2 方法的解析和调用关系在Java中的重要性二、方法解析2.1 解析方法的定义和声明2.2 方法的重载和重写的解析2.3 方法的访问修饰符和返回值的解析三、方法调用关系3.1 方法的调用和执行过程3.2 方法之间的调用关系3.3 方法的递归调用四、实例分析4.1 实例分析一:调用简单方法4.2 实例分析二:重载和重写方法的调用4.3 实例分析三:递归调用方法5.1 方法解析和调用关系的重要性5.2 提高程序性能的方法解析和调用优化策略5.3 方法解析和调用关系的应用和发展前景在Java语言中,方法是一种封装了一系列执行特定任务的代码的代码块。
在Java编程中,方法的解析和调用关系至关重要。
本文将从方法解析和方法调用关系两个方面展开阐述。
一、介绍1.1 Java语言和方法的概念Java是一种面向对象的编程语言,它支持类和对象的概念。
在Java中,方法是类或对象中的一个行为特征。
方法封装了一组语句,它们在被调用时执行特定任务。
方法定义了一系列的指令,用于完成特定的功能。
在面向对象的编程语言中,方法也被称为函数或子程序。
1.2 方法的解析和调用关系在Java中的重要性方法解析是指解析方法的定义和声明,包括方法的名称、参数列表和方法体。
方法的调用关系是指方法之间的调用关系,包括普通方法的调用、方法的重载和重写、方法的递归调用等。
二、方法解析2.1 解析方法的定义和声明在Java中,方法的定义和声明包括方法的名称、返回值类型、参数列表和方法体。
方法的定义一般包括访问修饰符、返回值类型、方法名、参数列表和方法体。
方法的声明包括方法的名称、参数列表和返回值类型。
例如:```public int add(int a, int b) {return a + b;}```上面的代码中,add方法是一个公共方法,返回值类型是int,有两个参数a和b,方法体中是返回a和b的和。
2.2 方法的重载和重写的解析方法的重载是指在同一个类中,方法名称相同但参数列表不同的情况。
java中的方法重载和覆盖的区别
J2EE容器也称为J2EE服务器,大部分时它们概念是一致的。
如果你的J2EE应用系统的数据库连接是通过JNDI获得,也就是说是从容器中获得,那么你的J2EE应用系统基本与数据库无关,如果你在你的 J2EE 应用系统耦合了数据库JDBC驱动的配置,那么你的J2EE应用系统就有数据库概念色彩,作为一个成熟需要推广的J2EE应用系统,不推荐和具体数据库耦 合,当然这其中如何保证J2EE应用系统运行性能又是体现你的设计水平了。
package com.qiu.util;
import java.io.*;
import .*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
frame.setSize(400,300);
frame.show();
System.out.println("Over");
}
private ScreenCapture() {
try{
robot = new Robot();
}
catch(AWTException e) {
衡量J2EE应用系统设计开发水平高低的标准就是:解耦性;你的应用系统各个功能是否能够彻底脱离?是否不相互依赖,也只有这样,才能体现可维护 性、可拓展性的软件设计目标。
为了达到这个目的,诞生各种框架概念,J2EE框架标准将一个系统划分为WEB和EJB主要部分,当然我们有时不是以这个具体技术区分,而是从设计 上抽象为表现层、服务层和持久层,这三个层次从一个高度将J2EE分离开来,实现解耦目的。
继承、多态,重载、重写的区别与总结
继承、多态,重载、重写的区别与总结李氏原则:(1)父类的引用指向子类对象。
-多态(2)接口的引用指向实现类的实例。
-接口Polo咯,什么是多态?它的实现机制是什么呢?重载和重写的区别在那里?这就是这一次我们要回顾的四个十分重要的概念:继承、多态、重载和重写继承(inheritance)简单的说,继承就是在一个现有类型的基础上,通过增加新的方法或者重定义已有方法(下面会讲到,这种方式叫重写)的方式,产生一个新的类型。
继承是面向对象的三个基本特征--封装、继承、多态的其中之一,我们在使用JAVA 时编写的每一个类都是在继承,因为在JAVA语言中,ng.Object类是所有类最根本的基类(或者叫父类、超类),如果我们新定义的一个类没有明确地指定继承自哪个基类,那么JAVA就会默认为它是继承自Object类的。
我们可以把JAVA中的类分为以下三种:类:使用class定义且不含有抽象方法的类。
抽象类:使用abstract class定义的类,它可以含有,也可以不含有抽象方法。
接口:使用interface定义的类。
在这三种类型之间存在下面的继承规律:类可以继承(extends)类,可以继承(extends)抽象类,可以继承(implements)接口。
抽象类可以继承(extends)类,可以继承(extends)抽象类,可以继承(implements)接口。
接口只能继承(extends)接口。
请注意上面三条规律中每种继承情况下使用的不同的关键字extends和implements,它们是不可以随意替换的。
大家知道,一个普通类继承一个接口后,必须实现这个接口中定义的所有方法,否则就只能被定义为抽象类。
我在这里之所以没有对implements关键字使用“实现”这种说法是因为从概念上来说它也是表示一种继承关系,而且对于抽象类implements接口的情况下,它并不是一定要实现这个接口定义的任何方法,因此使用继承的说法更为合理一些。
Java的类一些常识
Java的类一些常识“1、请解释Java语言的跨平台特性。
解析:虽然不知道什么是跨平台也可以使用Java语言进行编程,但是对于一个Java编程员来说,理解跨平台特性能够更深入掌握Java语言,所以企业中往往要求应聘者至少理解这个特性。
参考答案:Java的跨平台特性也被称为可移植性、平台无关性,或者一次编写处处运行。
他的意思就是如果用Java语言编写一个应用,那么就可以在不同平台上运行,而不需要为不同平台单独运行开发。
之所以能实现跨平台的特性。
主要得益于Java虚拟机(JVM),JVM解释器在运行Java应用时根据当前平台进行解释,解释成符合当前平台规范的机器码,所以可以实现同样的应用在不同平台上都能运行。
“2、请列举JAVA语言的主要特点解析:了解一门语言,往往从熟悉该语言的主要特点开始入手,所以企业也常常通过应聘者对JAVA语言特点的掌握程度而判断其语言基础是否扎实。
参考答案:JAVA语言有很多特点,主要包括:①跨平台性:一个应用可以不经过修改直接运行到不同的平台上。
②面向对象:JAVA语言是一门面向对面的语言,可以使用对象的属性和行为,可以使用面向对象的思想进行分析设计,并实现整个应用。
③解释执行JAVA应用时,JVM中的解释器将解释类文件,生成符合当前平台的字节码。
④自动回收:JAVA 应用中的垃圾回收是自动进行的,JVM中的后台线程将监视内存中数据的使用,当内存中的数据不再被引用时,将被作为垃圾回收,而不需要程序员动手回收。
“3、请说明一个JAVA类中主要包含哪几个元素?并说明每种元素的作用。
解析:无论简单还是复杂的JAVA应用,都是由若干个类组成,所以类是JAVA应用的组成单位。
了解一个类中包含的主要元素能够对类有一个清晰的认识。
一个类中往往会有五种元素,即属性、方法、构造方法、块以及内部类、其实块和内部类比较少见。
参考答案:JAVA类中主要包含属性、方法、构造方法、块以及内部类。
属性用来定义对象的数据;方法用来定义对象的行为;构造方法可以用来创建对象;块能够用来在类加载时执行操作或者在每次实例化前执行通用操作;内部类作为类的一个成员存在,能够访问外部类的属性和方法。
Java程序设计项目式教程 教案 教学设计-单元3 Java面向对象程序设计
(5)创建对象的一般格式。
(6)面向对象程序开发的主要目标就是:用代码模拟现实中的对象,将现实中对象的某些特征、行为能力用代码呈现出来,然后用这些代码来模拟解决现实中的问题。
教师讲解
多媒体课件演示
整理笔记引导创新
同步训练
仿照课堂实例,编写一个手机类,其中属性包括手机品牌、手机型号内存大小等,方法包括显示手机信息,并编写测试类进行对象的创建。
教师讲授
多媒体
布置训练提出要求
教师讲授
多媒体
布置训练任务提出要求
教学过程设计
3.2学生成绩处理(学时数:4)
主要步骤
教学内容
教学方法
教学手段
师生活动
问题引入
学生信息处理中学生的选课情况处理,记录每门课程的成绩,并对学生个人或班级成绩进行一些统计分析方面的处理。
教师讲授引导文法
多媒体
教师:讲解演示学生:观察思考
知识讲解
知识点1:方法的定义;
动手实践做中学
多媒体真实系统环境网络资源
实践操作查阅资料巡视指导
评估讨论
(1)评估讨论实训任务的实施过程;
(2)给出参考的解决方案;
(3)展示讨论学生的解决方案;
(4)考核学生结果。
教师启发讨论归纳分数激励
实训项目单
思考结果演示
课堂总结
(1)方法用于描述对象的行为或活动;
(2)使用构造方法实现对象的初始化;
(3)方法重载是指多个方法具有相同的名
称,但是参数不同;
(3)类成员分为对象成员和类成员两类。
教师讲解
多媒体课件演示
整理笔记引导创新
同步训练
定义一个具有用户名和密码两个属性的管理员类,提供能够显示管理员信息的toString()方法。
Java_笔试选择题6
Java选择题1. 下面的不是Java的特点的是()A. 动态性B. 面向对象C. 编辑型D. 多线型2. Java源文件以为扩展名的是()A. .classB. .javaC. .javD. .cla3. Java源文件经编译产生的文件称为()A. .obj文件B. .exe文件C. .java文件D. 字节码文件4. 字节码文件是与平台无关的什么文件()A. ASCII码B. 二进制码C. BCD码D. Unicode码5. 下面的那一项不是Java application和applet的不同点()B. A. 执行方式不同B. applet中不再需要main()方法C. applet由若干各类构成D. Java applet由Web browser执行6. Java注释方式不包括()C. A. //… B. /* … */ C. /** … **/D. /** … */ C7. 下面不是合法Java标识符的是()D. A. ab B. $_3 C.3ab D. ab3 C8. 下面均为Java关键字的一组是()"A. boolean,byte,long,true " "B. byte, long,true,goto" "C. goto ,Boolean,byte,true" "D. bool, long,true,auto" A9. Java语言使用的字符集是()A. ASCIIB. EBCDICC. UnicodeD. BCD C10. Java的int型变量占内存的字节是()A. 1B. 4C. 2D.与机器有关B11. 下列是合法的实型常量的是()"A. 12.4,12,12.4f,12.4F" "B. 12.0f,2e4f,12.0,6e-4" "C. 6e,12.1,24f,25d" "D. 13.6, 6e0.3,456.7d,e2" B 12. 下列说法正确的是()A. 不需定义类,就能创建对象B. 属性可以是简单变量,也可以是一个对象C. 属性必须是简单变量D. 对象中必有属性和方法 B13. "若有定义int a=2,b=4;boolean x;则执行语句x=a>b;System.out.println(x);的结果为()"B. A. 1 B. 0C. trueD. false D14. "若有定义int x=3,y;则执行语句y=(x++)+(x++)+(x++);后y=()"C. A.9 B.12C. 15D. 18 B15. "若有定义int x=3,y;则执行语句y=(++x)+(++x)+(++x);后y=()"D. A. 12 B. 18 C. 9 D. 15 D16. Java源程序编译后生成的字节码文件扩展名为()E. A. .exe B. .obj C. .java D. .class D17. 用户设置环境变量的合法格式为()A. set path to c:\jdk1.2\binB. set classpath to c:\jdk1.2\binC. set classpath=c:\jdk1.2\binD. set classpath c:\jdk1.2\bin C18. 下面不是Java移位算符的是()B. A. >>> B. <<<C. >>D. << B19. 若有a=001001,执行a>>>3;后a=()A. 0001001B. 1001010C. 1111001D. 1000001 B20. 执行15.2%5的结果()A. 非法B. 3C. 0D. 0.2 D21. 下面哪个是有效的Java标识符()A. max_numB. max-numC. 3DogNightD. (train) A22. 编译一个定义了5个类和18个方法的Java源代码文件,编译该源代码文件时会产生几个字节码文件()A. 1B. 23C. 18D. 5 D23. 下面哪个不是Java的关键字()A. doubleB. IntegerC. floatD. default B24. 下面关键字中那一个是不可用来控制对类成员的访问()A. publicB. privateC. protectedD. default D25. 下面那组是关键字()"A. abstract,object,double" "B. class,object,this" "C. class,double,this" "D. Boolean,double,this" C 26. 使用八进制、十进制和十六进制分别表示字符3正确的一组是()A. Octal …\033‟(八进制) Decimal …33‟(十进制) Hexadecimal …\u0033‟(十六进制)B. Octal …\063‟ Decimal…51‟ Hexadecimal …\0033‟ C.…063‟…3‟…\u0033‟D. …\63‟…51‟…\0033‟ C27. 把“1”放置在名叫ref的整数的高位处(该整数为ox00000001)可用代码()A. ref>>31B. ref>>=31C. ref<<31D. ref<<=31 D28. 算符&&适用于数据类型()B. A. int B. longC. doubleD. boolean D29. "设有定义int a=b,则计算表达式a+=a-=a*a 后,a为()C. " A. -60 B. 0 C. 2D. -24 A30. 若a是int型变量,计算表达式a=25/3%3 后,a为()A. 1B. 2C. 3D. 4 B31. 下面的四个选项中,均是八进制或十六进制数的选项是()"A. -10,ox8f,011" "B. oabc,-017,oxc" "C. 0010,-ox10,oxf1" "D. oa12,ox12,oxa " C32. 下列算符中优先级别最高的是()A. &B. &&C. !=D. ?: C33. JavaAPI的类被组织成几个包()A. 6B. 7C. 10D. 8 D34. Java中,byte型数组在内存中的存储形式是()A.ASCII码B. 补码C. 原码D. 反码B35. 关于main()方法说法正确的是()A. 一个类中可以没有main()B. 所有对象都必须放在main()方法中C. main()必须放在公共类中D. main()方法头的定义可以根据情况任意修改A36. "若有以下定义int k=7,x=12 ,则能使值为3的表达式()" A.x%=(k%=5)B. (x%=k)-(k%5) C. x%=k-k%5 D.x%=(k-k%5) B37. Switch(exp)语句中的exp不应是()A.字符型变量B.整型变量C.整型常量D.逻辑型常量D38. "若想连接字符字面值""Zang"",""Zoom""和""Moon"",可使用哪种形式()B." "A.""bang"",""Zoom"",""Moon"" " B. bang Zoom Moon "C. ""bang""""Zoom""""Moon"" " "D.""bang""+""Zoom""+""Moon"" " D39. 构造方法被调用是当()A. 类定义时B.使用对象的属性时C.使用对象的方法时D. 对象被创建时 D40. 把字符变量c设置为一个空格字符的方法是()"A. c=""﹍""" B. c=0 C. c=…\u0020‟ D. c='\u0000' C41. 将有三个boolean值的数组初始化为true的是()A.boolean []b=new boolean[3] "B.boolean []b={true,true,true} " "C. boolean [3]b={true,true,true}" "D.boolean []b=new boolean[3]; b={true,true,true}" B42. 表达式5&2 之值应为()A. 0B. 2C. 5D. 7 A43. 下面表达式10|2 之值应为()A. 0B. 2C. 10D. 14 C44. 下面语句System.out.println(4|7)的输出是()A. 4B. 5C. 6D. 7 D45. 在下面的语句序列中,temp的最终值为()A. 0B. 1C. 2D. 3 B46. "分析下面这行代码if(5&7>0&&5|2) Systen.out.println(""true""),选择唯一正确的说法()" A. 这行代码不能编译 B. 代码编译,无任何输出C. 代码编译,输出true D. 代码编译,输出false A 47. "关于下面的代码行int []arr={1,2,3}; for(int i=0;i<2;i++)arr[i]=0 ,那一个表达式的值为true()"A.arr[0]==0B. arr[0]==01C. arr[1]==1D. arr[2]==0 A48. 分析下面的代码行float f=3.2; int I=f; ,不正确地的答案是() A.代码不能编译B.代码编译,i被设置为3 C.第二行若改为int i=(byte)f 则可编译D. 第一行若改为float f=3.2f 则可编译B49. 下面的那一个不是Java合法标识符() A.Girl_$ B.$23 C.www12 D. 3xy D50. 下面的那个是Java的关键字() A.sizeof B.abstract C.NULL D. Boolean B51. 下面的那一项能正确生成5个空字符串() A.String a[]=new String [5] B.String 5[a] C.String [5]a D.String a[5] A52. Java程序是由什么组成的() A.类B.对象C.函数D. 包 A53. 执行一个applet,可以使用() A.java.exe B.appletviewer.exe C.Javac.exe D.javadocument.exe B54. 下列算符中优先级最低的是() A.++ B.% C.? D.& C55. 下列算符中优先级最高的是() A.+ B.instanceof C.&& D. ^ B56. 下面这行代码String [][]s=new String[10][]; 的正确陈述是() A.该行代码非法B.s 是一10行10列的数组C.s 是一包含10个一维数组的二维数组"D.s中每个元素设为"""" " C57. 下面赋值非法的是() A.long test=012 B.short s=10 C.int other=(int)true D.double d=1234.05 C58. 下面那个代表八进制数字() A.ox12 B.320 C.o32 D. 12 C59. 下列算符中,只有那一个被String对象重载() A.- B.+= C.>> D.& B60. 下列标签名中非法的是() A.here B._there C.this D. that C61. 下列表达式中合法的是() A.(true&true) B.(int myInt=0>3) C.float myFloat=40.0 D.boolean b=(boolean)99 A62. 下面不是面向对象技术特点的是() A.模块化B.封装C.继承性D. 多态性D63. Java中,一各类可以有几个父类() A.任意B.1 C.2 D. 4 B64. 使用那个关键字来定义一个接口() A.implements B.class C.extends D.interface D65. 接口中的方法被默认是什么的() A.private B.public C.protected D.package D66. 接口体中不应包含() A.常量定义B.常量赋值C.方法实现D.方法声明C67. 常量定义的修饰符为() A.final B.finally C.const D.define A68. 下列不是重载方法的特征的是() A.参数个数不同B.名相同而类型不同C.参数类型不同D.名相同且类型相同 B69. 在成员变量与局部变量重名时,若想在方法内使用成员变量,要使用关键字() A.super B.import C.this D. return C70. 若有定义如下class dog { float x; static int y;…},则下列说法中正确的是() A.x称为类变量,y为实例变量"B.x,y均为类变量" "C.x,y均为实例变量" "D. x为实例变量,y为类变量" D71. 下列不是构造方法特征的是() A.名字与类相同B.是无参考的C.是viod型D.是一种特殊方法B72. 下列说法正确的是() A.实例方法能对类变量和实例变量操作B.实例方法只能对类变量操作C.实例方法只能实例变量操作 D.类方法能对类变量和实例变量操作 A73. 下列说法错误的是() A.一个类中的实例方法可以调用其他实例方法B.静态方法可以调用实例方法C.实例方法可以调用静态方法 D.静态方法可以调用静态方法 B74. 如想限制类本身对静态成员的访问,应该() A.用final B.用private C.不使用任何关键字D.不能限制B75. 下列不对的是() A.一个实例方法可以同时为protected和Abstract B.static变量也可为final的C.static 方法可以是protected D.static方法可以是的 D76. 默认情况下,所有类能访问所有成员,除了() A.用final关键字定义的B. 用abstract定义的C.在另一个包中定义的 D.在同一个包中定义的 C77. package awt;的结果是() A.编译结果出错B.说明文件的类包含在Java 的awt包中C.说明文件的类在自定义的awt包中 D.导入自定义的awt包中的类 C78. "若有定义class A{int x,y; static float f(int a){…} float g(int x1,int x2){…}} 及A anew A();则下列用法中非法的是()" "A.A.g(3,2)" B.A.f(3) C.a1.f(4) "D.a1.g(2,5) " A79. 下列不是类的属性修饰符的是() A.public B.abstract C.private D.final C80. 类中不加任何访问权限限定的成员属于() A.default B.public C.private D.protected A81. 关于super,下面说法中错误的是() A.用来访问父类被隐藏的的成员变量B.用于调用父类中被重写的方法 C.用于定义父类 D.用于调用父类的构造函数 C82. 接口中的方法默认的访问控制方式是() A.public B.private C.protected D.default A83. 在Java编程中,什么是最基本的单元() A.对象B.类C.包D. 接口 A84. 你编译代码class MySstring extends String{} 会出现的情况是() A.成功编译B.不能编译,因为没有main方法C.不能编译,因为String是abstract类型的D.不能编译,因为String是final类型的D85. 若有下面的类定义class Bridge {Road road;} class Road{String name;} 它表示() A.“是什么”关系B.“有什么”关系C.二者都是D.二者皆不是B86. 要想使定义该类所在的包之外的类不能访问这个类,使用关键字() A.不用 B.private C.finalD.protected A87. 定义一个名为key的类,使之不能被继承,应选() A.class key{} B.native class key{} C.class key{ final;}D. final class key{} D88. 一个对象创建包括的操作中,没有下面的() A.释放内存B.对象声明C.分配内存D.调用构造方法 A89. 下面定义形式中,那一个是非法的() "A.class A{int a,b;…}" "B.class A{int i,j; i=j=10…}" C.class A{int i; float f;…} D. class A{int i=12; float f1=1.2f;…} B90. this关键字的含义是表示一个() A.指针B.当前对象C.一个类D. 一个方法B91. "若有定义如下class A{int x,x1; int f(){int a;…} int g(){int y;…}} ,则不正确的赋值为()" A.在f()中a=x B.在f()中x=a C.在f()中x=x1 D.在g()中y=a D92. 下列定义形式错误的是() A.float a[] B.float a[5] C.int a[]=new int[5] D. float []c B93. 若有定义int a[]=new int[2][3]则第1个下标的可用范围是() A.1到2 B.0到2 C.1 D. 0到1 D94. 数据下标越界,则发生异常,提示为() A.Runtime Exception B.IOException C.ArrayIndex OutOfBoond Exception D.class Cast Exception A95. 若有定义char a[]=new char[5];则a.length的值为() A.0 B.10 C.4 D. 5 D96. "若有定义String tom=""我们是学生"";则tom.length()的值是()" A.5 B.10 C.6 D. 11 A97. "若有定义String tom=""boy"";String hill=""boy"";则表达式(tom==hill)的值为()" A.1 B.true C.false D.0 B98. 调用trim方法,可以去掉字符串的那部分空格() A.前部B.后部C.全部D.前后D99. "若有定义Sting tom=""I am a good cat "";则tom.indexOf(""a"")的值为()" A.2 B.3 C.4 D. 5 A100. "若有定义Sting tom=""I am a good cat "";则tom.indexOf(""good"",2)的值为()" A.4 B.5 C.6 D. 7 D 101. "若有定义Sting to=""I am a good cat "";则to.indexOf(""a"",7)的值为()" A.7 B.13 C.14 D. 8 B102. "若有定义Sting jerry=""I love Tom"",s1;则s1=jerry.substring(2)的值为()" A.l B.love C.love Tom D. Tom C103. "若有定义Sting jerry=""I love Tom"",s1;则s1=jerry.substring(2,5)的值为()" A.lov B.love C.love Tom D. Tom A104. 调用方法时,若要进行参数的引用传递,参数类型可为() A.整型B.实型C.字符型D. 类D105. 在Java中下列关于继承的论述中,错误的是() A.继承具有传递性B.继承关系也称为“即是”(is a)关系 C.支持多继承 D.继承提高了系统的可重用性 C106. 在Java中,关于封装性的说法中,错误的是() A.是一种信息隐蔽技术B.使对象之间不可相互作用C.是受保护的内部实现 D.与类有关,封装的基本单位是对象 B107. 一个消息包含的内容,不应有() A.消息接收者B.接受对象应采用的方法 C.指示接受者做何处理D.方法的参数 C108. "若有定义:class A{ static float f(int a){…}} (设有A类对象a1),则下列说法中非法的是()" A.A.f(3) B.a1.f(4) C.a1.g(5) D. A.g(3) D109. 若声明一个类不能被继承,即不能有子类,用关键字() A.final B.finally C.abstract D. super A110. 显示低层次图片的代码应放在下列那个方法中() A.update() B.paint() C.init() D.repaint() B111. AWT提供给paint()方法的是那个类的实例() A.Thread B.Applet C.Graphics ponent C112. 借助于BorderLayout,为往容器中添加一个组件,应写代码() "p.add(BorderLayout.CENTER,cont)" "p.add(cont,BorderLayout.CENTER)" "p.add(BorderLayout.CENTER,comp)" "p.add(comp,BorderLayout.CENTER) " C113. 为在容器底端放一个按钮,不管用户如何改变尺寸,下列布局管理器那一个最简单() A.BorderLayout B.GridLayout C.FlowLayout D.GridbagLayout A114. "代码的new List (10,true);的含义是()" A.创建含10列的新列表B.创建含10行的新列表,且允许多重选择C.创建不多于10个选项的新列表 D. 创建含10行的新列表,每次选一项 B115. Graphics类有一坐标系统,其原点在() A.图形空间中心B.图形空间左下方C.图形空间左上方D.用户配置的坐标系统 A116. "main()方法中有代码:Frame f=new Frame(""My Frame""); f.sd Size(100,100); 为在屏幕上显示该对象,应加下面哪个的代码()" A.f.appear() B.f.setForeground() C.f.set Visible() D.f.enable C117. 一个Java Applet的生命周期内涉及多个方法,但下面的哪个不是() A.init() B.finalize() C.stop D.destroy() B118. Applet对象自动调用init()方法完成初始化工作,init()可被调用几次() A.3 B.2 C.1 D. 任意 A119. init()方法所做的初始化其任务中不应包括() A.设置初始状态B.装载图像C.设置参数D.跳转页面D 120. 调用repaint()方法,会出现什么情况() A.清除以前pain()方法所画的内容B.保留原来pain()所画的内容C.清除pain()以前所画的内容,再一次调用pain()方法 D.在pain()以前所画内容基础上,再一次调用pain()画新的内容C121. 结束applet的生命周期的方法中,不包括() A.stop() B.destroy() C.关闭浏览器D.close D122. 关于applet,下面说法正确的的是() A.能加载库函数B.可以读写本地计算机系统上的文件C.不能运行本地计算机上的任何程序 D. 不能和任何主机建立网络通信 C123. paint()需要一个参数,它是() A.一个位置值B.一个Graphics对象C.一个字符串D.一个高度值C 124. HTML语言的applet标签属性中,哪个不是必选的() B.CODE C.WIDTH D.HEIGHT A 125. JVM会一直运行,直到() A.main()结束B.仅剩下用户线程C.仅剩下守护线程D. (1)或(3)任一条件 C126. "为获得参数lastname ,可在applet中用代码()" "A.String s=getName(""lastname"")" "B.Strings=Parametre(""lastname"")" "C.String s=getParametre(""lastname"")" "D.String s=get(""lastname"") " C 127. 从下面的main ()的调用Java lyrics a kiss is but a kiss 中访问单词“kiss”的是() A.args[0] B.args[5] C.args[4] D. args[3] B128. 下面定义main()方法有效的是() A.public static void main(String args[]){} B.public main(String[]) C.public void main() D. public void main(args[]){} A129. main()需要一个参数,它是() A.一个整型量B.一个String对象C.一个实型量D.一个任意类的对象B 130. "从下面的main()方法Java lyrics a kiss is but a kiss 的调用中访问单词""but""的是()" A.args[3] B.args[2] C.args[0] D.args[1] A131. 在文本框中设置文本的方法是() A.setEchochar() B.getText() C.setText() D.Textfield() C132. 获取文本框的文本的方法是() A.setEchochar() B.setText() C.Textfield() D. getText() D133. 用于文本区中设置文本同时清除文本区中原有文本的方法是() A.setText(String s) B.getText() C.TextArea(String s) "D. TextArea(int x,int y)" A134. 对于文本区事件源,要获得监视器的方法是() A.addTextListener() B.TextV alueChanged() C.append(String s) D.insert(String s int x) A135. 下列监听器接口,那个不能添加到TextArea对象中() A.TextListener B.ActionListener C.MouseListener ponentListener B136. 下列那一项的实现不可以添加为TextField对象的监听器() A.ActionListener B.FocusListener C.MouseMotionListener D.WindowsListener D137. 下列说法不正确的是() A.java.awt包的类Panel是用来创建面板的B.container类是Panel类的子类C.Panel类的实例是一个容器D.容器也是一个组件B138. 那个类负责创建画布对象() A.Applet B.Container ponent D.Canvas D139. 在ScrollPane(int a)方法中,a指定滚动条的初始状态,下面除那个之外均是a可取值() A.ScrollPane.SCROLLBARS_ALWAYS B.ScrollPane.SCROLLBARS_AS_NEEDED C.ScrollPane.SCROLLBARS_NEVER D.ScrollPane.SCROLLBARS_NEEDED D140. 能从左到右,从上到下地排列组件,并且当从一行移到下一行时能使每行居中的布局管理器是() A.BorderLayout B.FlowLayout C.GridLayout D.CardLayout B141. 当把组件放置在BorderLayout的哪个区域时,该组件可以自动调整其水平方向而非垂直方向的尺寸() A.North or South B.East or West C.Center "D.North,South or Center" A142. 下列布局管理器中,哪一个会在前个组件相同行上放置组件,直到该组件超出容器的宽度,然后从新行开始,并把添加的组建居中放置() A.BorderLayout B.CardLayout C.FlowLayout D.GridbagLayout C 143. 应把组件放在BorderLayout的哪个区域时,它会自动垂直调整大小,但不水平调整() A.North or South B.East or West C.Center "D. North,South or Center" D144. 当为组件调用repaint()时,AWT包调用组件方法() A.update B.paint C.draw D. show A145. 用Java中的哪个方法来隐藏用户界面的组件() A.disable B.setVisible C.remove D.delete B146. 如想改变某组件的尺寸,可用方法() A.dimension B.resize C.area D.setSize D147. setForeground()和()setBackground()定义在哪个类中 A.Graphics B.Container ponent D.Applet C148. 若要用空标题构造选择框,应选择方法() "A.Checkbox(String s,boolean b,CheckboxGroup g)" Checkbox() "C.Checkbox(String s,boolean b)" D.Checkbox(String s) B149. 当我们在一个容器中添加了多个选择框,且使用CheckboxGroup将它们归为某一组,则在这一组中,一个时刻可以有几个选择框被选中() A.1 B.2 C.4 D. 任意 A150. "Checkbox类的方法有getstatc(),getlable()等,它们是什么的()" A.private B.public C.protected D. default B151. 选择控件(Choice)每次选择可择其中的项是() A. 1 B. 2 C. 3 D. 所有 A152. 创建了一个选择控件对象后,可得选项顺序加入到控件中的方法是() A. Choice() B. remove(int) C. getSelectItem() D. add(string) D153. 当选择了选择控件(Choice)中某个选项后,会产生事件() A. ActionEvent B. ItemEvent C. TextEvent D. 不会产生事件 B154. 使选择控件(Choice)获得监视的方法是() A. addActionListener() B. addItemListener() C. addComponentListener() D. addT extListener() B155. 选择控件(Choice)事件的接口方法是() A. actionPerformed(ActionEvent e) B. itemStateChanged(ItemEvent e) C. adjustmentV alueChanged(AdjustmentEvent e) D. textV alueChanged(TextEvent e) A156. 如果要判断是哪个选择控件(Choice)产生的事件源,可使用的方法() A. getItem(int) B. getSource C. getItemSelectable() D. getItemIndex() C157. 滚动列表(List)每次选择选项,可以选择个数是() A. 1 B. 多个 C. 所有D. 根据列表对象初始化参数确定 D158. 获得滚动列表(List)当前选项的索引,可以使用方法() A. getSelectedItem() B. getSelectedIndex() C. add(Sting) D. 不能获得索引,只能得到选项字符串B 159. 滚动列表(List)k可以产生几种事件() A. 1 B. 2 C. 3 D. 4 B160. 双击滚动列表上的选项,可产生事件是() A. ItemEvent B. ActionEvent C. FocusEvent D. KeyEvent B 161. 设置组件的背景色可用方法() A. void setBackgroundColor(Color c) B. void setForegroundColor(Color c) C. void setBackground(Color c) D. void setForeground(Color c) C162. 创建一个字体类对象,字体的式样为斜体,可使用的参数是() A. Font.PLAIN B. Font.BOLD C. Font.ITALIC D. Font.BOLD和Font.ITALIC C163. 使用方法可设置组件的位置和大小的是() "A. void setLocation(int x,int y)" "B. void setSize(int Width,int Height)" "C. void setBounds(int x,int y,int width,int height)" D. 没有这样的方法C164. 用类可以创建一个Java的窗口的是() A. Canvas B. Applet C. Window D. Frame D165. 基于Frame创建了一个窗口,该窗口() A. 立即显示 B. 不能立即显示C. 用方法SetVisible(true)显示 D. 用方法super()显示 C166. 向窗口中加菜单,具体做法是() A. 创建一个菜单条(Menubar)对象作为一个菜单B. 创建一个菜单(Menu)对象作为一个菜单C. 先创建一个菜单条(Menubar)对象,再创建一个菜单(Menu)对象,将菜单对象加入菜单条对象 D. 创建窗口时直接用方法super()设置菜单 C167. 往一个菜单中加一个菜单项,做法是() A. 将菜单项直接加到菜单条中B. 将菜单项加到一个菜单中C. 创建一个菜单时将菜单项作为参数D. 上述三种方法任一种都可以B168. 设置一个菜单项不可选择,可使用方法() A. setVisible(false) B. setEnabled(false) C. setItem(String s) D. 只要有菜单项就可选择B169. 选择一个菜单项,可产生的事件是() A. ItemEvent B. ActionEvent C. TextEvent D. ContainerEvent B。
Java程序设计13套模拟试题(含参考答案附期末复习要点)
《Java程序设计》模拟练习一一.选择题(每题2分,共20分)1、编译Java Application 源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为(b )。
A. .javaB. .classC. .htmlD. .exe2、设x = 1 , y = 2 , z = 3,则表达式y+=z--/++x 的值是( a )。
A. 3B. 3. 5C. 4D. 53、下列哪种方法在Applet生命周期中只执行一次(a )A.init B.startC.stop D.run4、类Cycle的main()方法为:public static void main(String args[]){(args[0]);}则运行时如果命令行语句为java Cycle one two three,则输出结果为(b)A CycleB oneC twoD three5、下面哪一个是Thread类中的静态方法( d)A.start() B . stop()C . run()D . sleep(long m)6、关于下列语句哪个答案是正确的(a )A 不能编译成功B 可以编译成功,输出trueC 可以编译成功,但无输出D 以上均不对7、声明公用的abstract方法的正确格式是( c)A public abstract void add() {}B public abstract add();C public abstract void add();D public virtual add();8、下列程序结果正确的是(b )public class Test {public static void main (String args []) {Ad a1=new Ad();Ad a2=new Ad();}}class Ad{static int total = 10;public int add(int i){total=total+i;return total;}}A 11,12B 11,13C 11,11D 12,129、基于的一个程序中包含一个Panel,Panel其中包含一个Label,在Frame和Panel中分别有下面的一些语句://Frame里面的语句setFont( new Font(" Serif", Font. ITALIC, 18 );setBackground( Color. cyan );//Panel中的语句setBackground( Color. white );setForeground( Color. magenta );请问Label用什么颜色和字体显示(a)A. Background = white; foreground = magenta; font = Serif Italic style, 18 pointB. Background = cyan; foreground = black; font = Serif Italic style,18 pointC. Background = cyan; foreground = black; font = system default style for labelsD. Background = white; foreground = magenta; font = system default style for labels10、语句for(int x=0,y=0;(y!=0)&&(x<4);x++)的执行次数是( b )A 无限次B 一次也不执行C 执行4次D 执行3次二.简答题(每题4分,共20分)1. 对比分析Java与其它高级语言的编译和运行过程,说明Java具有平台独立性的原因?2.简述创建线程体的两种方式3.说明对象的基本概念和主要特征4.什么是JDBC5.方法重写和方法重载的特征分别是什么?举例说明三.判断题(每题1分,共10分)1.Java中的的字符使用的是16 位的Unicode 编码。
java面试基础知识
java面试基础知识java面试基础知识1、静态变量和实例变量的区别?在语法定义上的区别:静态变量前要加static关键字,而实例变量前则不加。
在程序运行时的区别:实例变量是属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配内存空间,才可以使用这个实例变量。
静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会分配内存空间,而且只分配一次,静态变量就可以被使用了。
总之,实例变量必须创建后才可以通过这个对象来使用,静态变量则直接可以使用类名来调用。
2、什么是反射机制?java反射是在运行状态中,对任意一个类,都能够知道这个类的所有属性和方法,对于任何一个对象,都能够调用它的任意一个属性和方法,这种动态获取信息以及动态调用对象的方法的功能称为java的反射机制。
3、什么是装箱?什么是拆箱?装箱:自动将基本数据类型转换为包装器类型。
拆箱:自动将包装器类型转换为基本数据类型。
4、Java 中覆盖和重载是什么意思?覆盖(Override)是指子类对父类方法的一种重写,只能比父类抛出更少的异常,访问权限不能比父类的小,被覆盖的方法不能是private的,否则只是在子类中重新定义了一个新方法。
重载(Overload)表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同。
java基础知识面试题及答案1、static关键字什么意思?java中是否可以覆盖一个private或者是static的方法?“static”表明一个成员变量或者是成员方法可以在没有所属类的实例变量的情况下访问。
java中static方法不能被覆盖,因为方法覆盖是基于运行时动态绑定的,而static方法是编译时静态绑定的。
static方法与类的任何实例都不相关。
java中不可以覆盖private方法。
因为private修饰的变量和方法只能在当前类中使用,如果是其他类继承当前类,继承类中是不能访问到private变量和方法的。
JAVA重写和重载
JAVA重写和重载方法的重写Overriding和重载Overloading是Java多态性的不同表现。
重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。
Overloaded的方法是可以改变返回值的类型。
也就是说,重载的返回值类型可以相同也可以不同。
1、重载(Overloading)a、方法重载是让类以统一的方式处理不同类型数据的一种手段。
多个同名函数同时存在,具有不同的参数个数/类型。
重载Overloading是一个类中多态性的一种表现。
b、Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。
调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法, 这就是多态性。
c 、重载的时候,方法名要一样,但是参数类型和个数不一样,返回值类型可以相同也可以不相同。
无法以返回型别作为重载函数的区分标准。
2、重写(Overriding)a、父类与子类之间的多态性,对父类的函数进行重新定义。
如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写(Overriding)。
在Java中子类可继承父类中的方法,而不需要重新编写相同的方法。
但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。
方法重写又称方法覆盖。
b、若子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数表,则新方法将覆盖原有的方法。
如需父类中原有的方法,可使用super关键字,该关键字引用了当前类的父类。
this指示当前。
c、子类函数的访问修饰权限不能少于父类的;重写是子类的方法覆盖父类的方法,要求方法名和参数都相同重载是在同一个类中的两个或两个以上的方法,拥有相同的方法名,但是参数却不相同,方法体也不相同,最常见的重载的例子就是类的构造函数,可以参考API帮助文档看看类的构造方法.构造方法和普通方法都能重载吗?2.构造方法和普通方法都能重写吗?3.重写的话是子类中的方法覆盖同名父类方法?重载的话覆盖是怎样的呢?(多同名方法情况下哪个覆盖哪个?)1 能2 能3 重写是方法名相同,参数也相同,重载是方法名相同,参数不同首先我们来讲讲:重载(Overloading)(1)方法重载是让类以统一的方式处理不同类型数据的一种手段。
重载和覆盖的区别都有哪些
重载和覆盖的区别都有哪些重载和覆盖是多态性的两大主要表现,学习代码的朋友对此可能会有所了解,但是可能理解不深,下面是小编带来的关于重载和覆盖的区别的内容,欢迎大家阅读!重载和覆盖的区别在同一个类中方法成员的名称相同,但参数的类型和个数不同,这称为重载。
在存在继承关系的两个话,子类与父类的方法成员名称相同、参数的类型和个数相同的话,子类的方法覆盖父类的方法,这称为覆盖。
下面举个例子说明一下。
例如:class Shape {void draw() {}void erase() {}}class Circle extends Shape {void draw() {System.out.println("Circle.draw()");}void erase() {System.out.println("Circle.erase()"); }}class Square extends Shape {void draw() {System.out.println("Square.draw()");}void erase() {System.out.println("Square.erase()");}}class Triangle extends Shape {void draw() {System.out.println("Triangle.draw()"); }void erase() {System.out.println("Triangle.erase()"); }}public class Test {public static Shape randShape() { switch((int)(Math.random() * 3)) { default:case 0: return new Circle();case 1: return new Square();case 2: return new Triangle();} }public static void main(String[] args) { Shape[] s = new Shape[9];for(int i = 0; i < s.length; i++)s[i] = randShape();for(int i = 0; i < s.length; i++)s[i].draw();}}输出结果Triangle.draw()Circle.draw()Triangle.draw()Triangle.draw()Triangle.draw()Square.draw() Triangle.draw()Circle.draw()Triangle.erase()Circle.erase()Triangle.erase() Triangle.erase() Triangle.erase() Square.erase() Square.erase() Triangle.erase()Circle.erase()Press any key to continue... 又一次执行Triangle.draw() Triangle.draw()Circle.draw()Circle.draw()Circle.draw()Triangle.draw() Triangle.draw() Square.draw()Circle.draw()Triangle.erase() Triangle.erase()Circle.erase()Circle.erase()Circle.erase()Triangle.erase()Square.erase()Circle.erase()Press any key to continue...两次执行结果不同的原因是其中的Math.random()这个类导致的,math.random()得到的数是0-1之间的随机数。
JAVA方法覆盖与重载的区别
1、方法重载1)方法名称必须相同2)参数列表必须不同。
可以是参数个数不同,或者类型不同,或者两者都有。
3)返回类型可以相同,也可以不同。
4)可以相互调用5)发生在同一类中2、方法覆盖a)方法名称必须相同b)参数列表必须相同c)返回类型必须相同。
这是由上面两条决定的,当子类继承父类时,子类就可直接访问父类的public ,dafault属性和方法,也就扩展了自己的作用域。
一个作用域内,一个方法签名(方法名称与参数列表)对应唯一的程序入口地址,计算机语言是精确描述的语言,不能存在一个入口地址即可以是int型又可以是String型;因此要求返回类型必须相同。
进行覆盖后,在子类的“作用域”(扩展后的)中,编译器将调用这一方法的唯一地址指向了子类的方法,“屏蔽”了父类方法。
如果你真调用父类方法或者在父类中调用自己的本类被覆盖后的方法,可以使用super或者this。
d)子类方法不能有比父类方法更严格的访问权限e)除“未检查”异常外,子类不可以抛出比父类更多的异常。
(异常这一块,在以后会有详细总结)f)发生在子类与父类中。
实例://父类public class Father {int i = 1;public Father(){print();}public void print(){System.out.println(“执行父类构造器”+i);}}//子类public class Sun extends Father{int i =2;public Sun(){print();}public void print() throws ArithmeticException{System.out.println(i);}}//测试类public class Test {int i = 1;public Test(int i ,int j ){}public static void main(String[] args) {Sun sun = new Sun();}}输出结果:0 //执行父类时,其实是调用子类的方法;因为在一个作用域里方法的入口(方//法名和参数一致就表示入口一致,父类的入口被子类覆盖)是唯一的。
java习题
选择题1. 在Java编程中哪些是最基本的单元(1.0分)A.A. 对象B.B. 类C.C. 包D.D. 接口2. 要想使定义该类所在的包外的类不能访问这个类,你应该用什么关键字(1.0分)A.A. 不使用任何关键字B.B. privateC.C. finalD.D. protected3. 编译一个定义5个类和18个方法的Java源代码文件时会产生多少个字节码文件,并且扩展名是什么(1.0分)A.A. 23个字节码文件,扩展名为.classB.B. 一个字节码文件,扩展名为.classC.C. 5个字节码文件,扩展名为.javaD.D. 5个字节码文件,扩展名为.class4. 下面的代码片断执行后,有多少对象可以被垃圾堆收集:String s = “kanga”;s = “kanga”+”roo”;int*+ arr = ,1,4,9,25-; arr*3+ = 16; arr = new int*4+; s = null;(1.0分)A.A. 1B.B. 2C.C. 3D.D. 45. 编译并运行这段程序,请问结果是什么:class Example1 { public static void main(String[] args) , Example1 e = new Example(); e.test(5); - int test(int i) , System.out.println(“int”); Return 1; - void test(long i) , System.out.println(“long”); - -(1.0分)A.A. 程序无法编译,因为编译器不能区别给出的两个test()方法B.B. 程序可以编译运行,但是不会有任何信息显示在标准输出中C.C. 程序可以编译运行,在标准输出中会显示“int”D.D. 程序可以编译运行,在标准输出中会显示“long”6. 编译并运行这段程序,请问结果是什么:Class Over { public static void main(String[] args) , Under u = new Under(); u.test(); - int test() , System.out.println(“Over”); return 1; } } class Under extends Over , short test() , super.test(); System.out.println(“Under”); return 1; - -(1.0分)A.A. 代码无法编译B.B. 代码可以编译、运行,并在显示“Over”之后再显示“Under”C.C. 代码可以编译、运行,并在显示“Under”之后再显示“Over”D.D.代码可以编译、运行,但无任何结果显示7. 编译并运行下面的代码,请问结果是什么:class Ex { Ex(int i) { } public static void main(String[] args) { Fx f = new Fx(); } } class Fx extends Ex { }(1.0分)A.A.代码无法编译,因为类Ex没有定义一个不带参数的构造器B.B.代码无法编译,因为类Fx没有定义一个不带参数的构造器C.C.代码无法编译,因为在Ex(int i)构造器中没有代码D.D.代码能够成功编译并运行8. 编译并运行下面的代码,请问结果是什么:class Ex { public static void main(String[] args) { Fxf = new Fx(5); - Ex() , System.out.println(“Ex,no-args”); -Ex(int i) , System.out.println(“Ex,int”); - -class Fx extends Ex , Fx() , super(); System.out.println(“Fx,no-args”); -Fx(int i) , super(i);this(); System.out.println(“Fx,int()”); - -(1.0分)A.A. 在标准输出中显示消息“Ex,int”、“Fx,no-args”和“Fx,int”B.B. 在标准输出中显示消息“Ex,no-args”、“Ex,int”、“Fx,no-args”和“Fx,int”C.C. 代码无法编译,因为没有合法地定义Fx(int i)构造器D.D. 代码无法编译,因为没有合法地定义Fx()构造器9. 编译并运行下面的代码,请问结果是什么:class Ex { public static void main(String[] args) { Fxf = new Fx(5); - Ex() , System.out.println(“Ex,no-args”); -Ex(int i) , System.out.println(“Ex,int”); - -class Fx extends Ex , Fx() , super(); System.out.println(“Fx,no-args”); -Fx(int i) , this(); System.out.println(“Fx,int”); - -(1.0分)A.A. 在标准输出中显示消息“Ex,int”、“Fx,no-args”和“Fx,int”B.B. 在标准输出中显示消息“Ex,no-args”,“Fx,no-args”和“Fx,int”C.C. 代码无法编译,因为没有合法地定义Fx(int i)构造器D.D. 代码无法编译,因为没有合法地定义Fx()构造器10. 如果编译下面的代码会发生什么情况:Class MyString extends String { }(1.0分)A.A.代码成功编译B.B.代码不能编译,因为你没有定义一个main()方法C.C.代码不能编译,因为String是abstract类型的D.D.代码不能编译,因为String是final类型的11. 如果有下面的类定义:abstract class Shape { abstract void draw(); }请问在编译下面的类定义时会发生什么情况class Square extends Shape {}(1.0分)A.A.一切都可成功的编译B.B.Shape可以编译,而Square不能C.C.Square可以编译,而Shape不能D.D.Square和Shape都不能编译12. 有下面的类定义:class Bridge { Road road; } class Road { String name; }它表示(1.0分)A.A.是“is a” 关系B.B.是“has a”关系C.C.都是D.D.都不是13. 下面哪个说法正确:(1.0分)A.A.如果某公有接口被声明在一个源文件中,则接口不必与源文件具有相同的名字B.B.如果源文件包含import语句,则该语句必须是第一个非空行C.C.如果某源文件包含package语句,则该语句必须是第一个非空、非注释行D.D.如果某源文件包含main(),则它必须为第一个非空行14. 下面哪些为构造方法的特性定义(1.0分)A.A.在类中声明构造方法时,名称应该与类名相同B.B.具有重载特性,可以建立多个具有相同名称的构造方法C.C.使用类建立新对象时,会自动执行构造方法,因此在构造方法内设定实例变量的初值或进行内存分配D.D.以上都是15. 下面哪个不是Java的访问修饰符关键字(1.0分)A.A.privateB.B.friendC.C.protectedD.D.public16. 对语句protected void show(int x,int y){...},下面哪个语句是它在子类中的方法覆盖(1.0分)A.A.protected int show(int x,int y){...}B.B.protected void show(int x,int y,int z){...}C.C.public void show(int x,int y){...}D.D.void show(int x,int y),…-17. 下面关于继承的叙述哪个是正确的(1.0分)A.A.在Java中只允许单一继承B.B.在Java中一个类只能实现一个接口C.C.在Java中一个类不能同时继承一个类和实现一个接口D.D.接口中包含的方法既可以有实现,也可以没有实现18. 指出下面关于垃圾收集的叙述哪个是正确的(1.0分)A.A.程序开发者必须自己创建一个线程进行内存释放的工作B.B.垃圾收集将检查并释放不再使用的内存C.C.垃圾收集允许程序开发者明确指定并立即释放该内存D.D.垃圾收集能够在期望的时间释放被Java对象使用的内存19. 下面关于变量及其范围的陈述哪个是错误的(1.0分)A.A.实例变量是类的成员变量B.B.实例变量用关键字static声明C.C.在方法中定义的局部变量在该方法被执行时创建D.D.局部变量在使用前必须被初始化20. 根据下面给出的代码,判断哪个叙述是正确的:public class Person{static int[] arr=new int[10];public static void main(String[] args){System.out.println(arr[1]);}}(1.0分)A.A.编译时将发生错误B.B.编译时正确但是运行时出错C.C.输出为0D.D.输出为null21. 公共成员变量max_length是一个int型值,如果变量的值保持常数值100,要使用下面哪个声明语句来定义这个变量(1.0分)A.A.public int max_length=100;B.B.final int max_length=100;C.C.final public int max_length=100;D.D.public final int max_length=100;22. 已知类public class Parent{public int addValue(int a,int b){int s;s=a+b;return s;}}class Child extends Parent{ },请问下面哪个方法可以加入到Child类中:(1.0分)A.A.int addValue(int a,int b){...}B.B.public void addValue(int a,int b){...}C.C.public int addValue(int a){...}D.D.public int addValue(int a,int b) throws MyException{...}23. 继承是面向对象编程的一个重要特征,它可降低程序的复杂性并使代码(1.0分)A.A.可读性好B.B.可重用C.C.可跨包访问D.D.运行更安全24. 下列选项中,与成员变量共同构成一个类的是(1.0分)A.A.关键字B.B.方法C.C.运算符D.D.表达式25. 下列说法正确的是:(1.0分)A.A.不需要定义类就能创建对象B.B.类中的属性可以是基本类型的变量也可以是对象C.C.类中的属性必须是基本类型的变量D.D.对象中必有属性和方法26. Java中一个类可以有几个父类(1.0分)A.A.任意B.B.1C.C.2D.D.427. 使用哪个关健字可以定义一个接口:(1.0分)A.A.implementsB.B.classC.C.extendsD.D.interface28. 接口中的方法默认的修饰符是什么:(1.0分)A.A.privateB.B.publicC.C.protectedD.D.default29. 接口中不应包含:(1.0分)A.A.常量声明B.B.常量赋值C.C.方法实现D.D.方法声明30. 构造方法什么时候被调用:(1.0分)A.A.类定义时B.B.使用对象的属性时C.C.使用对象的方法时D.D.对象被创建时31. 下面不是面向对象特点的是:(1.0分)A.A.模块化B.B.封装性C.C.继承性D.D.多态生32. 常量定义的修饰符为:(1.0分)A.A.finalB.B.finallyC.C.constD.D.define33. 下面不属于方法重载的特征是:(1.0分)A.A.参数个数的不同B.B.返回类型不同C.C.参数类型不同D.D.参数位置不同34. 在成员变量与局部变量重名时,若想在方法内使用成员变量,要使用下面哪个关键字:(1.0分)A.A.superB.B.importC.C.thisD.D.return35. 类class Shape{float x;static int y;...}(1.0分)A.A.x称为类变量,y为实例变量B.B.x,y均为类变量C.C.x,y均为实例变量D.D.x为实例变量,y为类变量36. 下面不是构造方法特征的是:(1.0分)A.A.名字与类相同B.B.无返回类型C.C.是void型D.D.主要用来初始化成员变量37. 下面说法正确的是:(1.0分)A.A.实例方法能对类变量和实例变量进行操作B.B.实例方法只能对类变量进行操作C.C.实例方法只能对实例变量进行操作D.D.类方法能对类变量和实例变量进行操作38. 下列说法错误的是:(1.0分)A.A.一个类中的实例方法可以调用其它实例方法B.B.静态方法可以调用实例方法C.C.实例方法可以调用静态方法D.D.静态方法可以调用静态方法1. 下列哪个变量名是非法的(1.0分)A.A. countB.B. $countC.C. count27D.D. 67count2. 下面哪个不是Java的关键字(1.0分)A.A. integerB.B. doubleC.C. floatD.D. default3. 如果将字符串“one”、“two”、“three”连接起来,用如下哪种方式可以实现(1.0分)A.A. "one"."two"."three"B.B. "one","two","three"C.C. "one" "two" "three"D.D. "one"+"two"+"three"4. 下面哪个是有效的boolean值(1.0分)A.A. TrueB.B. 1C.C. trueD.D. t5. 将字符变量c设置为一个空格字符有哪两种方法(1.0分)A.A. c=" "和c=' 'B.B. c=" " 和c='\u0000'C.C. c=' '和c='\u0020'D.D. c=" "和c='\u0020'6. class Q3 { int instVar1 = 1; int instVar2; public static void main(String[] args) { int localVar = 3; Q3 q3 = new Q3(); System.out.println(q3.instVar1+q3.instVar2+localVar); } }(1.0分)A.A. 4B.B. 0C.C. 代码无法编译,因为localVar没有被正确初始化。
在Java中子类能否重载父类的构造方法?
在Java中⼦类能否重载⽗类的构造⽅法?1,⾸先明确⼀点⼦类不能重载⽗类的构造⽅法2,由于在java中类的构造函数与类的名称相同,不可能⼦类和⽗类使⽤相同的类名称,因此⼦类也就不能重载⽗类的构造函数,但⼦类可以通过super来调⽤⽗类的构造函数。
3,也就是在⼦类的构造⽅法⾥⾯使⽤ super() 的⽅法来调⽤⽗类;package javaClass;/** 编写⼀个java程序,设计⼀个汽车类Vehicle,* 包含的属性有车轮的个数wheels和车重weight。
* ⼩汽车类Car是Vehicle的⼦类,包含的属性有载⼈数loader。
* 每个类都有构造⽅法和输出相关数据的⽅法。
* */public class Main {public static void main(String[] args) {new Car(4,100,8);}}class Vehicle{int w,h;public Vehicle(int w,int h){this.w=w;this.h=h;}}class Car extends Vehicle{int w,h,l;Car(int w,int h,int l){super(w,h);System.out.println("w:"+w+" h:"+h+" l:"+l);}}/**本来是打算这样写的结果就是报错的*/class Car extends Vehicle{int w,h,l;Car(int w,int h,int l){System.out.println("w:"+w+" h:"+h+" l:"+l);}}4,所以随意在继承重载构造⽅法最后加上super() 语句以防报错;。
java list remove方法
java list remove方法JavaListremove方法是Java中List接口的一个常用方法,它可以从List集合中删除指定元素。
Java List remove方法非常实用,它能够方便地帮助我们从List集合中移除指定的元素,它也是Java 集合框架中最常用的操作之一。
在使用Java List remove方法前,我们首先要了解Java List 接口及其实现类,Java List接口主要提供了如下一些通用的操作:增、删、改、查等功能。
它的一个重要特征是允许元素重复,而且还支持随机访问。
此外,Java List接口有多种实现类,例如ArrayList、LinkedList、Vector、Stack等。
接下来我们从源码角度详细讨论Java List remove方法。
首先,Java List remove方法是一个重载方法,它分为两个参数和一个参数两种形式,两个参数的形式是:public E remove(int index),它从List集合中删除指定位置上的元素,返回的元素被删除的元素;一个参数的形式是:public boolean remove(Object o),它从List 集合中删除指定对象,返回的元素被删除的元素,并按照对象的equals方法的实现去比较两个对象的值,判断是否是同一个对象。
此外,Java List remove方法还有一些需要特别注意的地方,首先,Java List remove方法会改变List集合的大小,但是如果你传入错误的参数,它不会抛出异常,例如,传入负数索引,继而会导致操作失败;其次,在使用remove操作对象时,要注意对象的equals 方法,如果没有重写Object类的equals方法,就会导致remove操作失败。
除了Java List remove方法,Java List接口还有其他几个常用的操作,例如add、get、size等,我们可以根据实际的需要,来灵活的使用这些操作。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
java重载方法的特征
Java的重载方法是指在同一个类中定义了多个方法,它们具有相
同的名称但是不同的参数列表。
重载方法在Java中是一种多态性的体现,它允许我们使用相同的方法名来调用不同的方法。
重载方法具有以下的特征:
1.方法名相同:重载方法的名称必须相同。
2.参数列表不同:重载方法的参数列表必须不同,可以是参数类
型不同、参数个数不同或参数顺序不同。
3.返回类型可以相同也可以不同:重载方法的返回类型可以相同,也可以不同。
唯一的限制是不能仅仅通过返回类型的不同来进行方法
的重载。
4.可以有不同的访问修饰符:重载方法可以有不同的访问修饰符,比如public、private或protected。
5.可以抛出不同的异常:重载方法可以抛出不同的异常,也可以
不抛出异常。
重载方法的使用有以下的优点和特点:
1.提高代码的可读性:通过使用重载方法,可以使用相同的方法
名来表达不同的意义,这使得代码更加直观和易于理解。
2.简化编程:通过使用重载方法,可以避免定义大量类似的方法,从而简化了代码的编写过程。
3.提高代码的可维护性:重载方法使得代码更加模块化,当需要
修改某个功能时,只需要修改对应的方法,而无需修改其他方法,这
提高了代码的可维护性。
4.增加灵活性:通过使用重载方法,可以根据不同的参数类型或
参数个数进行适应性的操作,从而增加了代码的灵活性。
在使用重载方法时,需要注意以下几点:
1.不能仅仅通过返回类型的不同来进行方法的重载,因为Java编
译器无法根据返回类型来确定具体调用哪个方法。
2.当重载方法的参数列表中有继承关系的参数类型时,需要注意
参数类型的匹配规则。
例如,如果有一个重载方法的参数类型为Object,而另一个重载方法的参数类型为String,当调用方法时传入
一个String对象时,编译器会优先选择参数类型为String的方法,
而不会选择参数类型为Object的方法,因为String是Object的子类。
3.在重载方法中,参数个数和参数类型越多,重载方法的区分度
就越高。
如果重载方法的参数个数和类型相同,只有返回类型不同,
则无法进行方法的重载。
4.当重载方法的参数类型为基本数据类型时,需要注意基本数据
类型的自动转换规则。
例如,如果有一个重载方法的参数类型为int,而另一个重载方法的参数类型为long,当调用方法时传入一个int值时,编译器会自动将int值转换为long值,选择参数类型为long的
方法进行调用。
但是如果传入的值比较大,超出了long类型的范围,
则需要手动进行强制类型转换。
总结起来,重载方法是Java中一种非常有用的特性,通过使用相
同的方法名和不同的参数列表,可以实现方法的重载,从而提高了代
码的可读性、简化了编程和增加了代码的灵活性。
在使用重载方法时,需要注意参数列表的不同以及参数类型的匹配规则,以避免出现歧义
和错误。