达内笔记总结之:java笔试面试题总结.pdf
《达内笔记总结之:java笔试面试题总结.pdf》由会员分享,可在线阅读,更多相关《达内笔记总结之:java笔试面试题总结.pdf(140页珍藏版)》请在咨信网上搜索。
一,Ja va基础部分1、个”.ia va”源文件中是否可以包括多个类(不是内部类)?有什么限 制?2、Ja va:仃没仃got o?3、说说&和&诋别。4、在JAVA中如何跳出当前的多重嵌套循环?5、sw il ch语句能否作用4:b y(e上,能否作用在1。箕上,能否作用在Siring 26、sh ort si=1;si=si+1;有什么错?sh ort si=1;si+=1;有什么错?7、ch a r型变量中能不能存贮 个中文汉字?为什么?8、川最有效率的方法算出2乘以8等於几?9、请设计个百亿的计算器10、使用fina l关键字修饰一个变量时,是引用不能变,还是引用的对象 不能变?11、和egu a k方法究竟有什么区别?12、静态变量和实例变量的区别?13、是否可以从一个st a t ic方法内部发出对非st a t ic方法的调用?14、Int eger与int的区另U15、Ma t h.ra u n&l 15)等於多少?Ma t h.rou nd jl 1.5)等於多少?16、下面的代码有什么不妥之处?17、请说出作用域pu b l ic,priva t e,prot ect ed,以及不写时的区别】8、Overl oa d和Overrid e的区另限 Overl oa d ed的方法是否可以改变返回俏:的类型?19、构造器Const ru ct or是否可被overrid e?20、接口是否可继承接口?抽象类悬否可实现(impl emenl s)接口?抽象类 是否可继承具体类(concret e cl a s s 抽象类中是否可以有静态的ma in方 法?彳写cl one。方法时,通常都有一行代码,是什么?22、而向对象的特征有哪些方面23、ia va中实现多态的机制是什么?24、a b st ra ct cl a ss利int erfa ce d什么区另:?25、a b st ra ct的met h od是否可同时是st a t ic,是否可同时是na t ive,是否可同 时是 synch ronized?26、什么是内部类?St a t ic Nest ed Cl a ss 利 Inner Cl a ss的不同。27、内部类可以引用它的包含类的成员吗?有没有什么限制?28、Anonymou s Inner Cl a ss 匿名内部类)是否 可 以ext end s(继承)其它类,是否可以 impl ement s(实现 int erfa ce(接 口)?29、s u pe工.ge t Cl a s s()方法调月30、SSinx是最基本的数据类型吗?31、St ring s=He l;s=s+”w orl d-;这两行代码执行后,原始的St ring 对象中的内容到底变了没有?32、是否可以继承St ring类?33、St ring$三new 551坨(二丫2);仓|建了 几个St ring Ob ject?二者之间有什 么区别?34、St ring 和St rinqBu ffcr的区另U35、如何把一段逗号分割的字符串转换成一个数组?36、数组有没?l e ngt h。这个方法?St ringTf没TTl engt h。这个方法?37、下面这条语句一共创建了多少个对象:St ring 5=,匕,+,1,+,(:,+,;38、Iry”里有一个rel u m语句,那么紧跟在这个Lry后的l ina l l y”里的cod e 会不会被执行,什么时候被执行,在ret u rn前还是后?39、下面的程序代码输出的结果是多少?40、fina l,fina l l y,fina l ize的区另Ic41、运行时异常与.般异常有何兵同?42、error和except ion有彳卜么区另I?43、Ja va中的异常处理机制的葡隼原理和应用。44、请写 出你最常见至U的 5 个ru nt ime except ion 0)y 会增 k,Tf(x=33&+y0)不会增长&还可以用作位运算符,当&操作符两边的表达式不是b ool ea n类型时,&表示按位与操作,我们通常 使用OxOf来与一个整数进行&运算,来获取该整数的最低4个b it位,例如,0 x31&0 x0f的结果为0 x01.备注:这道题先说两者的共同点,再说出&和&的特殊之处,弁列举些经典的例子来表叼自己理解 透彻深入、实际经验丰富,4、在JAVA中如何跳出当前的多重嵌套循环?在Ja va中,要想跳出多重循环,可以在外面的循环语句前.定义一个标号,然后在里层循氏体的代码中 使用带有标号的b伯a k语句,叼可跳出外层循环。例如,ok:for(int i=0:i10;i+)forfint j=0:j10;j+)Syst em.ou t.print l n(4i=M+i+产+j);if(j=5)b rea k ok:)另外,我个人通常并不使用标号这种方式,而是让外层的循环条件表达式的结果可以受到里层循必、体 代止的捽制,例如,要在二维数组中杳找为某个数字。inl a rTU=l 23),4,5,6.7.9;b ool ea n fou nd=fa l se;foi(int i=():ia rr.l engt h&!fb u nd;i+)forfint j=O:j Overload 和 Override 的区别。Overloaded 的方 法是否可以改变返回值的类型?Overl oa d是重载的意思,Overrid e是覆盖的意思,也就是重写。重载Overl oa d表不同个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数 个数或类型不同).重写Overrid e走 示了类中的方法可以与父类中的某个方法灼名称和参数完全相同,通过了类创.建的实 例对象调用这个方法时,为调用子类中的定义方法,这相当于把父类中定义的那个完全相同的方法给覆盖 了,这也是面向对象编程的多态性的一种表现。子类覆盖父类的方法时,只能比父类抛出更少的异常,或 者是抛出父类抛出的异常的了异常,因为了类可以辉决父类的一些问题,不能匕父类有更多的问题。了类 方法的访问权限只能比父类的更大,不能更小如果父类的方法是priva t e类型,那么,子类则不存在覆盖 的限制,相当于子类中增加了一个仝新的方法C至于Overl oa d ed的方法是否可以改变返回值的类型这个问颍,要看你倒底想问H么呢?这个题U很模 糊如果几个Overl oa d ed的方法的参数列表不一样,它们的返回者类型当然mE以不一样。但我估”你想 问的问题是:如果的个方法的参数列表完全样,是否可以让它们的返回值不同来实现重载Overl oa d”这 是不行的,我们可以用反证法来说明这个问题,因为我们有时侯调用一个方法时也可以不定义返回结果变 量,即不要关心其返叵结果,例如,我们调用ma piemove(key)方法时,虽然remove方法有返回值,但是 我们通常都不会定义接收返回结果的变量,这时候假设该类中有两个名称和参数列表完全相同的方法,仅 仅是返臼类型不同,ja va就无法确定编程者倒底是想调用哪个方法了,因为它无法通过返回结果类型求判 断。overrid e可以翻译为覆盖,从字面就可以知道,它是覆盖了一个方法并且对其 重写,以求达到不同的作用。对我们来说最熟悉的覆盖就是对接口方法的实现,在接口中一般只是 对方法进行了声明,而我们在实现时,就需要实现接口声明 的所有方法。除了这个典型的用法以外,我们在继承中也可能会在了类覆盖父类 中的方法。在覆盖要注意以下的几点:1、覆盖的方法的标志必须要和被覆盖的方法的标志完全匹配,才能运到覆盖的 效果;2、覆盖的方法的返回值必须和被覆盖的方法的返回一致;3、覆盖的方法所抛出的异常必须和被覆盖方法的所抛出的异常一致,或者是其 了类;4、被覆盖的方法不能为priva t e,否则在其子类中只是新定义了一个方法,并没 有对其进行覆羔overl oa d对我们来说可能比较熟悉,可以翻译为重载,它是指我们可以定义 些 名称相同的方法,通过定义不同的输入参数来区分这些方法,然后再调用时,VM就会根据不同的参数样式,来选择合适的方法执行。在使用重载要注意以下 的几点:1、在使用重载时只能通过不同的参数样式。例如,不同的参数类型,不同的参 数个数,不同的参数顺序(当然,同一方法内的儿个参数类型必须不一样,例如 可以是 fu n(int,fl oa t),但是不能为 fu n(int,int);2、不能通过访问权限、返回类型、抛出的异常进行重载;3、方法的异常类型和数目不会对重载造成影响;4、对于继承来说,如果某一方法在父类中是访问权限是pria vt e,那么就不能 在子类对其进行重载,如果定义的话,也只是定义了一个新方法,而不会达到重 载的效果。19、构造器 Constructor 是否可被 override?构造器Const ru ct or不能被继承,因此不能重写Overrid e,但可以被重载Overl oa d。20、接口是否可继承接口?抽象类是否可实现(implements)接?抽象类是否可继承具体类(concrete class)?抽象类中是否可以有静态的main方 法?接口可以继承接口。抽象类可以实现(impl emenl s)接口,抽象类是否可继承具体类,抽象类中可以有静 态的ma in方法。备注:只要明白了接口用抽象类的木质和作用,这些问题都很好I回答,你想想,如果你是ja va语言的 设计者,你是否会提供这样的支持,如果不提供的话,书什么理山吗?如果你没有道理不提供,那答案就 是肯定的了。只有记住抽象类普通类的唯 区别就是不能创建实例对象和允许有a b st ra ct方法、21、写done。方法时,通常都有,行代码,是什么?cl one有缺省行为,su per.cl one():因为首先要把父类中的成员复制到位,然后才是复制自己的成员22、面向对象的特征有哪些方面计算机软件系统是现实生活中的业务在计算机中的吹射,而现实生活I1的业务其实就是一个个对象协 作的过程。面向对象编程就是按现实业务-样的方式将程序代码按个个对象进行组织和编写,让计算机 系统能够识别和理解用对象方式组织和编写的程序代码,这样就可以把现实生活中的业务对象映射到计算 机系统中0而向对象的编程语言有封装、继承、抽象、多态等4个主要的特征.1封装:封装是保证软件部件具有优良的模块性的基础,封装的目标就是要实现软件部件的“高内爽、低 耦公”,防止程序相互依赖性而带来的变动影响。在面向对象的编程语空中,对象是封装的最基本单(V,面向对象的封装比传统诺言的封装史为清晰、史为有力。面向对象的封装就是把描述一个对象的属 性和行为的代科封装在一个“模块”中,也就是一个类中,属性用变量定义,行为用方法进行定义,方法 可以直接访问同一个对象中的属性,通笔情况下,只要记住让变量和访问这个变量的方法放在一起,将一 个类中的成员变量全部定义成私有的,只有这个类H己的方法才可以力问到这吟成员变量,这就基木上实 现对象的封装,就很容易找出要分配到这个类上的方法了,就基木上算是会面向对象的编程了。把握 个原则:把对同一事物进行操作的方法和相关的方法放在同个类中,把方法和它操作的数据放在同 个类中例如,人要在黑板L画圆,这一共涉及二:个对象:人、黑板、圆,画圆的方法要分配给哪个对象呢?由于画圆需要使用到圆心和半径,圆心和半径显然是圆的属性,如果将它们在类中定义成了私有的成员变 量,那么,国圆的方法必须分配给匾,它才能访问到圆心和半径这两个属性,人以后只是调用圆的画圆方 法、表示给圆发给消息而已,画圆这个方法不应该分配在人这个对象上,这就是侬向对象的封装性,即将 对象封装成-个高度自於和相对抑闭的个体,对象状态(属性)日这个对象自己的行为(方法)来耍取和 改变.-个更便于理解的例子就是,司机将火车刹住了,刹车的动作是分配给司机,还是分配给火车,显 然,应该分配给火千,因为司机自刀是不可能有那么大的力气将一个火车给停下来的,只有火车自己才能 完成这一动作,火车需要调用内部的离合滞却刹车片等多个器件协作才能完成刹车这个动作,司机刹车的 过程只是给火车发了一个消息、,通知火车要执行刹车动作而Tc抽象:抽象就是找出一叱事物的相似和共件之处,然后将这叱事物归为一个类,言个类只考虑这心事 物的相似和共性之处,并且会忽略与当前主题和目标无关的那些方面,将注意力集中在与当前目标 有关的方面。例如,看到只蚂蚁和大短,你能够想象出它们的相同之处,那就是抽象“抽象包括行 为抽象和状态抽象两个方面。例如,定义为Person类,如下:class Person(St ring na me;int a ge;)人木来是很复杂的事物,有很多方面,但因为当前系统只需要了解人的姓名和年龄,所以上面 定义的类中只包含姓幺和年龄这两个属性,这就是一种抽像,使用抽象可以避免考虑一些与目标无 关的细节。我对抽象的理解就是不要用显微镜去看一个事物的所有方面,这样涉及的内容就太多了,而是要善于划分问题的边界,当前系统需要什么,就只考虑什么。继承:在定义和实现一个类的时候,可以在一个己经存在的类的基础上上来进行,把这个己经存在的 类所定义的内容作为自己的内容,并可以加入若干新的内容,或修改原来的方法使之更适合特殊的 需要,这就是继承。继承是子类自动共享父类数据和方法的机制,这是类之间的一种关系,提高了软 件的比重用忤和M扩展性。多态:多杰是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调月在编程时 并不确定,而是在程,序运行期间才确定,即 个引用变量倒底会指向哪个类的实例对象,该引用变 量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。因为在程序运行时 才确定具体的类,这样,不用修改源程序代距就可以让引用变量绑定到各种不同的类实 现匕从而与致谈引用调月的具体方法随之改变,即不修改程序代码就可以改变程序运行 时所绑定的具体代码,让程序可以选择多个运行状态,这就是多态性。多态性增 强了软件的灵活性和扩展性,例如,下面代码中的UserDa。是一个接口,它定义引用变量u serDa。指向的实例对象由d a ofa ct ory.get Da o。在执行的时候返回,有时候指向的是 UserJd b cDa o这个实现,有时候指向的是UserHib erna t eDa o这个实现,这样,不 用修改源代码,就可以改变u scrDa o指向的具体类实现,从而导致 u scrDa o.inscrt Uscr。方法调用的具体代码也随之改变,即有时候调用的是 UserJd b cDa o 的 insert User 方法,有时候调用的是 UserHib erna t eDa o 的 insert User 方法:UserDa o u serDa o=d a ofa ct ory.get Da o();u serDa o.inserl User(Liser);比喻:人吃饭,你看到的是左手,还是右手?23、java中实现多态的机制是什么?停的是父类或按口定义的引用变量可以指向了类或具体实现类的实例对象,而程序调用的方法在 运行期才动态绑定,就是引用变量所指向的具体实例对象的方法,也就是内存里正在运行的那个对象 的方法,而不是引川变量的类型中定义的方法.24 abstract class 和 interface 有什么区别?含有 a b st ra ct修饰符的cl a ss即为抽象类,a b st ra ct类不能创建的实例对象.含有a b st ra ct方法的类必须 定义为a b st ra ct cl a ss,a b st ra ct cl a ss类”的方法不必是抽象的。a b st ra ct cl a ss类中定义抽象方法必须在具体(Concret e)子类中实现,所以,不能有抽象构造方法或抽象静态方法。如果的子类没方实现抽象父类中的所 有抽象方法,那么子类也必须定义为a b st ra ct类型。接口(int erfa ce)可以说成是抽象类的种特例,接口中的所有方法都必须是抽象的。接口中的方法定 义默认为pu b l ic a b st ra ct类型,接力11的成员变量类型默认为pu b l ic st a t ic fina l。5面比较一下两者的语法区别:1.抽象类可以行构造方法,接口中不能有构造方法。2.抽象类中可以有普通成员变量,接口中没有普通成员变量3.抽象类中可以包含非扯象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方 法.4.抽象类中的抽象方法的访问类型可以是pu b l ic,prot ect ed和(默认类型,虽然ecl ipse卜不报错,但应该也不行),但接口中的抽象方法只能是pu b l ic类型的,并且默认即为pu b l ic a b st ra ct 类型。5.抽象类中可以包含静态方法,接口中不能包含静态方法6.抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任怠,但接口 中定义的变量只能是pu b l ic sia l ic fina l类型,并且默认即为pu b l ic sia l ic fina l类型。7.一个类可以实现多个接口,但只能继承一个抽象类。卜面接着再说说两者在应用上的区别:接U更多的是在系统架构设计方法发挥作用,主要用于定义模块之间的通信契约。而抽象类在代码实 现方面发挥作用,可以实现代码的重用,例如,模板方法设计模式是抽象类的一个典型应用,假设某个项 II的所有Servl et类都要用相同的方式进行权限判断、记录访问日志和处理斤常,那么就可以定义一个抽象 的基类,让所有的Servl et都继承这个抽象基类,在抽象基类的service方法中完成权限判断、记录访问口 志和处理异常的代码,在各个子类中只是完成各自的业务逻辑代码,伪代码如下:pu b l ic a b st ra ct cl a ss Ra scScrvIct ext end s HHpScrvl ct pu b l ic fina l void scrvicc(Ht t pScrv l et Requ est requ est,Hrt pScrvIct Rcsponsc response)t h row sIOE xcet io n,S er v 1 e t Ex cep t io n(记录访问日志进行权限判断if(具有权限)t ry(d oService(requ est.response);)ca t ch(Excet pion e)记录异常信息)prot ect ed a b st ra ct void d oService(Ht t pServet Requ est requ est.Ht t pServl et Response response)t h row s TOExcet ion,Servet Except ion;”注意访问权限定义成prot ect ed,显得既专业,乂严谨,因为它是专门给子类用的pu b l ic cl a ss MyServl el l ext end s Ba seServl et(prot ect ed void d oService(H(pServl et Rcqu est requ est,Ht t pServl et Response response)t h row s IOExcet ion,Servl et Excepcion本Servl et只处理的具体、业务漫患代码)父类方法中间的某段代理不确定,留给子类干,就用模板方法设计模式。备注:这道题的思路是先从总体解释抽象类和接口的基本概念,然后再比较两者的语法细节,最后再 说武者的应用区别.比较医者语法细节区别的条理是:先从一个类中的构造方法、普通成员变量和方法包 括抽象方法),静态变量和方法,继承性等6个方面逐一去比较问答,接着从笫一者继承的角度的问答,特别是最后用了一个典型的例子来展现自己深厚的技木功底。25、abstract的method是否可同时是static,是否可同 时是native,是否可同时是synchronized?a b st ra ct的met h od不可以是st a t ic的,因为抽象的方法是要被子类实现的,而st a t ic与子类扯不上关系!na t ive方法表示该方法要用另外一种依赖平台的编程语旨实现的,不存在着被了类实现的问题,所以,它也不能是抽象的,不能与a b st ra ct混用。例如.Fil cOu t pu t St ca m类要硬件打交道,底层的实现用的是操 作系统相关的a pi实现,例如,在w ind ow s用c语言实现的,所以,查看jd k的源代码,可以发现 Fil eOu t pu t St rea m的open方法的定义如卜:priva t e uh Live void open(SLring na me)t h row s Fil eNoLFou nd Excepl ion;如果我们要用ja va调用别人写的c话言函数,我们是无法直接调用的,我们需要按照ja va的要求写一 个c语占工勺函数,又我们的这个c语自函数去调用别人的c语言函数。由于我们的c语片函数是按ja va的 耍求来写的,我们这个c语言函数就可以与ja va对接上,ja va那边的对接方式就是定义出与我们这个c函 数相对应的方法,ja va中对应的方法不需要丐具体的代码,但需要在前面声明na t iveo关丁 synch ronized与a b st ra ct合用的问题,我觉得也不行,因为在我几年的学习和开发中,从来没见到 过这种情况,并且我觉得synch ronized心该是作用在个具体的方法上才启意义。而且,方法上的 synch ronized同步所使用的同步锁对象是t h is,而抽象方法上无法确定t h is是什么=26、什么是内部类?Static Nested Class 和 InnerClass的不同。内部类就是在一个类的内部定义的类,内部类中不能定义静态成员(静态成员不是对短的特性,只是 为了找一个容身之处,所以需要放到一个类中而一,这么一点小事,你还要把它放到类内部的一个类中,过分了啊!提供内部类,不是为让你干这种事情,无期,不让你十“我想可能始既然静态成员类似c语言 的全局变量,而内部类通常是用丁创建内部对象用的,所以,把“全局变量”放在内部类中就是毫无意义 的事情,既然是毫无意义的事情,就应该被禁止,内部类可以直接访问外部类中的成员变量,内部类可 以定义在外部类的方法外面,也可以定义在外部类的方法体中,如下所示:pu b l ic cl a ss Ou t er(int ou t _x=0:pu b l ic void met h od Q(Inner 1 inner 1=new l nner10pu b l ic cl a ss Inncr2 在方法体内部定义的内部类pu b l ic met h od。ou r_x-3;)Inner2 inner2=new Inner20;1pu b l ic cl a ss Inner 在方法体外面定义的内部类(1I在方法体外面定义的内部类的访问类型可以是pu b l gprot ect e,默认的,priva t e等4种类型,这就好像类 中定义的成员变量有4种访问类型样,它们决定这个内部类的定义对其他类是否可见;对于这种情况,我们也可以在外面创建内部类的实例对象,创建内部类的实例对象时.,定要先创建外部类的实例对象,然后用这个外部类的实例对象去创建内部类的实例对象,代码如下:Ou rcr mi t er=new Ou rcr();Ou t er.Inner 1 inner 1=ou t er.new Tnnncrl();在方法内部定义的内部类前面不能有访问类型修饰符,就好像方法中定义的局部变量 样,但这种内 部类的前山可以使用fina l或a b st ra ct修 饰符.、这和内部类对其他类是不可见的其他类无法引用这种内部类,但是这种内部类创建的实例对象可以传递给其他类访问,这种内部类必须是先定义,后使耳I,即内部类的 定义代码必尔出现在使用该类之前,这与方法中的局部变量必双先定义后使用的道理也是一样的,这种内 部类川以访问方法体中的局部变量,但是,该局部 变量前必须加fina l修饰符。对于这些细节,只要在ecl ipse七代码试试,根据升发工具提小的各类错误信息就可以马上了解到。在方法体内部还可以采用如下语法来创建种匿名内部类,即定义某接口或类的了类的同时,还创 建了该了类的实例对象,无需为该类定义名称:pu b l ic cl a ss Ou t erpu b l ic void st a rt Q new Th rea d(new Ru na b l e()(pu b l ic void rnn();).st a rt();1后,在方法外部定义的内部类前面可以加:st a t ic关键字,从而成为St a t ic Nest ed Cl a ss,官不再具有 内部类的特性,所有,从狭义上讲,它不是内部类,St a t ic Nest ed Cl a ss弓普逋类在运仃时的行为和功能上 没有什么区别,只是在编程引用时的语法上有些差别,它可以定义成pu b l ic、prol ecl ed、默认【:勺、pnva l e 等多种类型,而普通类只能定义成pu b l ic和默认的这两种类型。在外向引用St a t ic Nest ed Cl a ss类的名称为“外部类名一内部类名“。在外后不需要创建外部类的实例对象,就可以直接创建St a t ic Nest ed Cl a ss,例如,假设Inner是定义在Ou t er类中的St a t ic Nest ed Cl a ss,那么,可以使用如二语句创建Inner类:Ou t er.Inner inner=new Ou t er.TnnerQ;由于Ma t ic Nest ed Cl a ss不依或于外部类的实例对象,所以,st a t ic Nest ed Cl a ss能访问外部类的非st a t ic 成员变量。当在外部类中访问St a t ic Nest ed Cl a ss时,可以直接使用St a t ic Nesied Cl a s*的名号,而不需要加 上外部类的名字了,在St a t ic Nest ed Cl a ss中也可以直接引用外部类的st a t ic的成员变最,不需要加上外部 类的名字。在静态方法中定义的内部类也是St a t ic Nest ed Cl a ss,这时候不能在类前面加st a t ic关银字,静态方法中 的Sia l ic Nest ed Cl a ss与普通方法中的内部类的应用方式很相似,它除了可以直接访问外部类中的sia l ic的 成员变量,环可以访问静态方法中的局部变量,但是,该局部变量前必须加fina l修饰行。备注:首先根据你的象说出你对内部类的总体方直的特点:例如,在两个地方可以定义,可以访问 外部类的成员变量,不能定义静态成员,这是大的特点。然后再说一些细节方面的知识,例如,几种定义 方式的语法区别,静态内部类,以及区名内部类。27、内部类可以引用它的包含类的成员吗?有没有什 么限制?完仝可以。如果不是静态内部类,那没有什么限制!如果你把静态嵌套类当作内部类的种特例,那在这种情况卜不可以访问外部类的普通成员变量,而 只能访问外部类中的静态成员,例如,下面的代码:cl a ss Ou t erst a t ic int x;st a t ic cl a ss Innerivoid t est()(sysc(x);答题时,也要能察言观色,揣摩提问者的心思,显然人家希望你说的是静态 内部类不能访问外部类的成员,但你上来就顶牛,这不好,要先顺着人家,让 人家满意,然后再说特殊情况,让人家吃惊.28、Anonymous Inner Class(匿名内部类)是否可以 extends(继承)其它类,是否可以implements(实现)interface(接 口)?可以继承其他类或实现其他接口。不仅是可以,而是必须!29、s u pe r.getClass()方7去调JI下面程序的输出结果是多少?import ja va.u t il.口己二巳;public class Te s t extends Da t epublic static void ma in(St ring a rgs)new TesL(.Les L();Ipublic void t e s t()Syst e m.ou t printIn(s u pe r.ge t Cl a s s().ge二Na me();)很奇怪,结果是Te s t这属于脑筋急转弯的题目,在一个QR群有个网友正好问过这个问题,我觉得挺有趣,就研究了 一下,没想到今天还被你回到了,哈哈。在t e s t方法中,直接调用ge t Cl a s s().get Na me()方法,返回的是Te s t类名 由于ge t Cl a s s()在。b je u t类中定义成了 fina l,子类不能覆盖该方法,所以,在 t e s t方法中调用get Cl a s s().get Na me()方法,其实就是在请用从父类继承的get Cl a s s()方法,等效于调月su p.ge t Cl a s s().get Na me 方法,所以,s u pe r.get Cl s s s().ge二Na me()方法返回的也应该是 Te s t n如果想得到父类的名称,应该用如下代码:geLCl a ss().gel Su perCl a ss().get Na meO;30、String是最基本的数据类型吗?基本数据类型包括 b yt e、int、ch a r、l ong、fl oa t、d ou b l e、b ool ea n 和 sh ort。ja va Ja ng.Siring类是fina l类型的,因此未可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用St nngBu ffcr类31 String s=MHelloH;s=s+H world!”;这两行代码执行后,原始的String对象中的内容到底变了没有?没有。因为STing被设计成不可变(immu l a b l e)类,所以它的所有对象都是不 可变对象。在这段代码中,s原先指向 个St ring对象,内容是He l l o,然后 我们对s进行了+操作,那么s所指向的那个对象是否发生了改变呢?答案是没 有。这时,s不指向原来那个对象了,而指向了另个St ring对象,内容为 Hel l o w orl d!,原来那个对象还存在于内存之中,只是$这个引用变量不再指向 它了。通过上面的说明,我们很容易导出另一个结论,如果经常对字符串进行各种 各样的修改,或者说,不可预见的修改,那么使用St ring来代表字符串的话会引 起很大的内存开销因为St ring对象建立之后不能再改变,所以对于每一个不 同的字符市,都需要一个St ring对象来表示。这时,应该考虑使用St ringBu ffer 类,它允许修改,血不是每个不同的字符串都要生成一个新的对象。并且,这两 种类的对象转换十分容易同时,我们还可以知道,如果要使用内容相同的字符串,不必每次都new一个 St ringo例如我们要在构造器中对一个名叫s的St ring引用变量进行初始化,把 它设置为初始值,应当这样做:pu b l ic cl a ss Demo priva t e St ring s;pu b l ic Demo s=Init ia l Va l u e;而非s=new St ringCInit ia l Va l u e);后者每次都会调用构造器,生成新对象,性能低卜且内存开销大,并且没有意义,因为St ring对象不可改变,所以对于内容相同的字符串,只要一个St ring对象来 表示就可以了。也就说,多次调用上面的构造器创建多个对象,他们的St ring类 型属性s都指向同一个对象。上面的结论还基于这样一个事实:对于字符串常量,如果内容相同,Ja va认为它 们代表同一个St ring对象。而用关键字new调用构造器,总是会创建一个新的 对象,无论内容是否相同c至于为什么要把Siring类设计成不可变类,是它的用途决定的。其实不只St ring,很多Ja va标准类库中的类都是不可变的。在开发一个系统的时候,我们有时候 也需要设计不可变类,来传递一组相关的值,这也是面向对象思想的体现。不可 变类有 些优点,比如因为它的对象是只读的,所以多线程并发访问也不会有 任何问题。当然也有些缺点,比如每个不同的状态都要个对象来代表,可能 会造成性能上的问题“所 以Ja va标准类库还提供了 个可变版本,即 St ringBu ffer.32、是否可以继承String类?St ring类是fina l类故不可以继承。33、String s=new StringCxyz)泡建了 几个 StringObject?二者之间有什么区别?两个或一个,”xyz对应一个对象,这个对象放在字符串常量缓冲区,常量xyz 不管出现多少遍,.是缓冲区中的那一个。New St ring每写一遍,就创建一个新的 对象,它一句那个常量”xyz”对象的内容来创建出一个新SWng对象“如果以前就 用过,xyz这句代表就不会创建”xyz自己了,直接从缓冲区拿。34、String 和 StringBuffer 的区另1JAVA平台提供了两个类:St ring和St ringBu ffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个St ring类提供了数值不可改变的字符串。而这 个St ringBu ffer类提供的字符串进行修改。当你知道字符数据要改变的时候你就可 以使用Sl nngBu fTer。典型地,你可以使用Sl ringBu l Ters来动态构造字符数据。另 夕卜,St ring 实现了 equ a l s 方法,new St ring(a b c)e qu a l s(ne w St ring(a b c”)的结果为 t ru e,而St ringBu ffer没有实现equ a l s方法,所以,new St r ingBu ffer(4a b c,5).equ a l s(new St ringBu ffer(a b c”)的结果为 fa l se,、接着要举一个具体的例子来说明,我们要把1至M00的所有数字拼起来,组成一 个串。St ringBu ffer sb f=new St ringBu ffer();for(int i=0;i100;i+)(sb f.a ppend(i);上面的代码效率很高,因为只创建了-一个St ringBu ffer对象,而下面的代码效率 很低,因为创建了 101个对象。St ring st r=new St ringQ;l or(inl i=0;i error和exception有什么区别?e rror表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。exce pt ion表示一种设计或实现问题。也就 是说,它表示如果程序运行正常,从不会发牛的情况。43、Java中的异常处理机制的简单原理和应用。异常是指*va程序运行时(非编译)所发生的非正常情况或错误,与现实生活 中的事件很相似,现实生活中的事件可以包含事件发生的时间、地点、人物、情 节等信息,可以用一个对象来表示,Ja va使用面向对象的方式来处理异常,它把 程序中发生的每个异常也都分别封装到一个对象来表示的,该对象中包含有异常 的信息。Ja va对异常进行了分类,不同类型的异常分别用不同的Ja va类表示,所有异常 的根类为ja va Ja ng.Th row a b l e,Th row a b- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 笔记 总结 java 笔试 试题
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【曲****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【曲****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【曲****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【曲****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文