综合基础测试(Java类)_第1页
综合基础测试(Java类)_第2页
综合基础测试(Java类)_第3页
综合基础测试(Java类)_第4页
综合基础测试(Java类)_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

综合基础测试(Java类)姓名:钟煜分数:给出下面一段代码的打印信息,并说明”==”与“equals”的区别(6分)publicclassTest{ publicstaticvoidmain(String[]args) { inta=10; intb=10;floatc=10.0f Integerain=newInteger(10); Integerbin=newInteger(10); Floatcfl=newFloat(10.0f); System.out.println(“a==bis“+(a==b)); System.out.println(“a==cis“+(a==c)); System.out.println(“ain==binis“+(ain==bin)); System.out.println(“ain==cflis“+(ain==cfl)); System.out.println(“ain.equals(bin)is“+(ain.equals(bin))); System.out.println(“ain.equals(cfl)is“+(ain.equals(cfl))); }}编译System.out.println(“ain==cflis“+(ain==cfl));时出错,基本数据类型与对象类型不能用==比较equals方法在非空对象引用上实现相等关系:对于任何非空引用值x,x.equals(x)都应返回true。对于任何非空引用值x和y,当且仅当y.equals(x)返回true时,x.equals(y)才应返回true。对于任何非空引用值x、y和z,如果x.equals(y)返回true,并且y.equals(z)返回true,那么x.equals(z)应返回true。对于任何非空引用值x和y,多次调用x.equals(y)始终返回true或始终返回false,前提是对象上equals比较中所用的信息没有被修改。对于任何非空引用值x,x.equals(null)都应返回false。Object类的equals方法实现对象上差别可能性最大的相等关系;即,对于任何非空引用值x和y,当且仅当x和y引用同一个对象时,此方法才返回true(x==y具有值true)。==比较基本数据类型时,是比较对象个的实际值;比较对象类型时是比较个对象的hasCode值是否相等;写出一个懒汉式Singleton出来(5分)publicclassSingleton{privateSingleton(){}

//注意这是private只供内部调用privatestaticSingletoninstance=newSingleton();//这里提供了一个供外部访问本class的静态方法,可以直接访问

publicstaticSingletongetInstance(){

returninstance;

}

}Strings=newString("zte");创建了几个StringObject?(4分)2个StringObject一个是参数"zte"还有一个是通过构造函数生成与该参数相同的字符序列的新的StringObjectshorts1=1;s1=s1+1;shorts1=1;s1+=1;上面两行,那一行有错,有什么错?(4分)第一行有错;编译时出错s1是short型,s1+1是int型,不能显式转化为short型。可修改为s1=(short)(s1+1)。shorts1=1;s1+=1正确。两个对象值相同(x.equals(y)==true),但却可有不同的hashcode,这句话对不对?(4分)equals被重写时,通常有必要重写hashCode方法,相等对象必须具有相同的hashCode,但具有相同的hashCode的对象不一定相等。如果两个对象对同一个对象使用equals方法都得到true值,则可根据传递性得到这两个对象也相同的结论,所以他们应该拥有相同的hashcode。swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?(4分)swtich能用在byte上不能用在long和String上swtich只能用在charbyteshortint上指出下面这段代码存在的问题,并给出解决方案(7分)publicclassMyThreadimplementsRunnable{ inti=0;publicvoidrun(){ processData();//只对数据进行处理 refreshUI();//刷新相应显示} } 2个方法在并没有被定义,processData()方法只对数据进行处理而refreshUI()方法刷新相应显示;类MyThread继承了Runnable接口,也就是说数据进行处理和刷新显示在一个线程中处理,那实现多线程就没有任何意义了,数据处理是先进行的,如果在数据处理过程中发生不可捕获的异常而中断,数据不会刷新显示,可能会造成数据的丢失等 应该多开启一个个线程给刷新显示,如果数据处理的线程中断也不会影响数据的丢失指出下面定义的类中三个函数同步的对象,以及使用时的注意事项(6分)publicclassMyClass{ publicsynchronizedvoidfun1() { //… } publicvoidfun2() { synchronized(this) { //… } } publicvoidfun3() { synchronized(obj){ //…} } } 答:publicsynchronizedvoidfun1() { //… }同步的是fun1()这个方法在该类内部同步,一旦新实例化对象后,不能保证两个实例化对象之间能够同步。publicvoidfun2() { synchronized(this) { //… } }同步的是代码块,把该类本身作为同步对象,在该类内部有效,一旦新实例化对象后,不能保证两个实例化对象之间能够同步。 publicvoidfun3() { synchronized(obj){ //…} }同步的实代码块,必须要保证obj对象是同一个才能同步 给出下面一段代码的两个函数的返回值,说明原因(4)publicclassMyClass{ publicintfun1(){ try{ return1; } catch(Exceptionex) { return2; }}publicintfun2(){ try{ return3;}finally{ return4;}}}第一个函数返回1,第二个函数返回4。第一个函数会先执行try中的语句,出错的话才会执行catch中的语句。第二个函数在执行try中的语句时,直接return4;10、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?(5分) 是值传递。Java编程语言只由值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的。11、接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可继承实体类(concreteclass)?(4分) 接口可以继承接口,抽象类可以实现接口,也可以继承实体类 12、指出模态对话框和非模态对话框的区别,并构造一个模态对话框的实例(不需要在对话框中加载控件,假设父窗口为mainFrame)(5分) 非模态对话框关闭时调用dispose()方法,它将释放所有与对话框相关的系统资源, 模态对话框不是用构造器Dialog(FrameparentWindow,Stringtitle,Booleanmode)Dialog(parentWindow,"模态对话框",true) 13、指出abstractclass和interface有什么区别?(6分) 声明方法的存在而不去实现它的类被叫做抽象类(abstractclass)。不能创建abstract类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract类的子类必须实现父类中的所有的抽象方法,否则子类也必须是抽象类。在接口中,所有方法都是抽象的。接口中的所有方法都是抽象的。接口只可以定义staticfinal成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof运算符可以用来决定某对象的类是否实现了接口。14、下面两条语句有何区别,采用哪中更好?(5分) Booleanflag=newBoolean(false);Booleanflag=Boolean.FALSE;答:第一句是通过创建一个新的Boolean类型的实例并初始化值为false并赋给flag。第二句则是通过类名直接访问已定义好的静态的Boolean类型的常量FALSE并赋给flag。采用第二句比较好,因为可以节约内存资源,提高效率。15、构造器Constructor是否可被override?是否可被Overload?Overload和Override的区别?(5分)构造器Constructor是不可被override区别:方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写(Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被”屏蔽”了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。 16、Vector和ArrayList的区别?(4分) ArrayList和Vector主要从二方面来说.

一.同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的

二.数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半17、简述StringTokenizer的功能(3分) stringtokenizer类允许应用程序将字符串分解为标记。tokenization方法比StreamTokenizer类所使用的方法更简单。StringTokenizer方法不区分标识符、数和带引号的字符串,它们也不识别并跳过注释.StringTokenizer是出于兼容性的原因而被保留的遗留类(虽然在新代码中并不鼓励使用它)。建议所有寻求此功能的人使用String的split方法 18、线程操作中sleep()和wait()有什么区别?(6分)sleep()方法是使线程停止一段时间的方法。在sleep时间间隔期满后,线程不一定立即恢复执行。这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非(a)"醒来"的线程具有更高的优先级(b)正在运行的线程因为其它原因而阻塞。wait()是线程交互时,如果线程对一个同步对象x发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。19、根据如下的界面编写相应实现代码(中间区域为文本输入区,底部为按钮)(8分)PublicclassJCheckbocDemo{Publicstaticvoidmain(Stringagrs[]){Containercon=newJFrame("一个例子");Panelpanel1=newPanel();Panelpanel2=newPanel();TextAreatext=newTextArea();Buttonbt1=newButton("我的按钮");panel1.add(text);panel2.add(b

温馨提示

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

评论

0/150

提交评论