欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    Java基础简答试题.docx

    • 资源ID:68227117       资源大小:114.02KB        全文页数:39页
    • 资源格式: DOCX        下载积分:12金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要12金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Java基础简答试题.docx

    Java基础简答题:1 .个“.Java”源文件中是否可以包括多个类(不是内部类)?有什么限制?答:可以有很多个类,但只能有一个public的类,并且public的类名必须与文件名一致2 . Java 有没有 goto?答:Java中的保留字,Java现在没有在Java中使用。3 .说说&和&&的区别答:&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时, 整个运算结果为true,否则,只要有一方为false,则结果为false。&&还具有短路的功能,即如果第一个表达式为false,则不在计算第二个表达式,例如,对于!f (str! =null&&! Str. equals ( "")表达式,当str为null时,后面的表达式不会执行,所以不会出现 Nu 11 PointerException 如果将&&改为&,则会抛出 NulIPointerException 异常。if (x=33&+y>0)y 会增 长,f(x=33&&+y>0)y 不会增长。&还可以用作位运算符,当&操作符两边的表达式不是Boolean类型时,&表示按位与操作,我们通常 使用OxOf来与一个整数进行&运算,来获取该整数的最低4个bit位,例如:0x31 &OxOf的结果为0x01。 4.在Java中如何跳出当前的多重嵌套循环?答:加break5. switch语句能否作用在byte上,能否用在long上,能否作用在String上?答:在switch (exprl)中,exprl只能是一个整数表达式或者枚举数量(更大字体),整数表达式可以是 int基本类型或Integer包装类型,由于,byte, short, char都可以隐含转换为int,所以,这些类型以 及这些类型的包装类型也是可以的。显然,long和String类型都不符合switch的语法规定,并且不能隠 含式转换成int类型。所以,它们不能用作switch语句中。6. short si = l;sl = sl+1;有什么错? short si = l;sl+=l:有什么错?答:对于short si = 1; si = sl+1;由于si +1运算时会自动提升表达式的类型,所以结果是int型,在 赋值给short类型si时,编译将报告需要强制转换型的错误。对于short si = 1; si = sl+1;由于+=是Java语言规定的运算符,Java编译器会对它进行特殊处 理,因此可以正确编译。7. char型变量中能不能存储一个中文汉字?为什么?答:char型变量用来存储Unicode编码字符集中包含了汉字,所以,char型变量中当然可以存储汉字。但 是,如果某个特殊的汉字没有包含在Unicode编码字符集中,那么,这个char型变量中就不能存储这个特 殊汉字。Unicode编码占两个字节,char类型也是占两个字节。8. 用最有效率的方法算出2乘以8等于多少?答:inta = 2<<3;System, out. println(a);9. 使用final关键字修饰个变量时,是引用不能变,还是引用的对象不能变?答:使用final关键字修饰个变量时,是指引用变量不能变,引用变量所指的对象中的内容还是可以改 变的。1 0."="和 equals 的区别?答:值类型是存储在内存中的堆栈,而引用类型的变最在栈中仅仅是存储引用类型变量的地址,而其本身 则存储在堆中。=操作比较的是两个变量的值是否相等,对于引用型变鼠表示的是两个变量在堆中存储的地址是否 相同,即栈中的内容是否相同。=比较的是两个对象的地址equals操作表示的两个变量是否对同一个对象的引用,即堆中的内容是否相等。equals比较的是两个对象的内容。equals 为 true 时,=不一定为 true。答:在语法定义上的区别:静态变量前要加static关键字,而实际变量前则不加。在程序运行时的区别:实际变量属了某个对象的属性,必须创建了实例对象,其中的实际变量会被 分配空间,才能使用这个实际变量。静态变量不属于某个实例对象,而是属于类,所以也成为类变量,只 要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以使用。总 之,实例变量必须创建对象可以通过这个对象来使用,静态变量则可以直接使用类名来引用。11 .是否可以从个static方法内部发出对非static方法的调用?答:不可以。因为非static方法是要与对象关联在起的,必须创建一个对象后,可以在该对象上进行 方法调用,而static方法调用时不需要创建对象,可以直接调用。也就是说,当个static方法被调用 时,可能还没有创建任何实例对象,如果从个static方法中发出对非static方法的调用,那个非static 得到是关联到哪个对象上的呢?这个逻辑无法成立,所以,一个static方法内部发出对非static方法的 调用。12 . Integer 和 int 的区别答:int是Java提供的8种原始数据类型之一。Java为每个原始类型提供了封装类,Integer是Java为 int提供的封装类。Int默认值为0, Integer的默认值为null,即Integer可以区分出未赋值和值为的 区别,int则无法表达出未赋值的情况。例如:要想表达没有参加考试和考试成绩为的区别,则只能使 用Integer。在jsp开发中,Integer的默认值为null,所以用el表达式在文本框中显示时,值为空白字 符串,而int默认的值为,所以用el表达式在文本框中显示时,结果为0,所以,int不适合作为web 层的表单数据的类型。13 . Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?答:Overload是:重载:的意思,Override是覆盖的意思,也就是重写。重载Overload表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参 数个数或类型不同)。重写Override表示子类中的方法可以与父类中的某个方法的名称和参数完全相同,通过子类创建的 实例对象调用这个方法时,将调用子类中的定义方法,这相当于把父类中定义的那个完全相同的方法给覆 盖了,这也是面向对象编程的多态性的种表现.子类覆盖父类的方法时,只能比父类抛出更少的异常, 或者是抛出父类抛出的异常的子异常,因为子类可以解决父类的些问题,不能比父类有更多的问题。子 类方法的访问权限只能比父类的更大,不能更小。如果父类的方法是private类型,那么,子类则不存在 覆盖的限制,相当于子类中增加了一个全新的方法。至于Overloaded的方法是否可以改变返回值的类型这个问题,要看你倒底想问什么呢?这个题目很 模糊。如果几个Overloaded的方法的参数列表不一样,它们的返冋者类型当然也可以不一样。但我估计你 想问的问题是:如果两个方法的参数列表完全样,是否可以让它们的返回值不同来实现重载Overload。 这是不行的,我们可以用反证法来说明这个问题,因为我们有时候调用一个方法时也可以不定义返回结果 变量,即不要关心其返回结果,例如,我们调用map. remove (key)方法时,虽然remove方法有返回值,但 是我们通常都不会定义接收返回结果的变量,这时候假设该类中有两个名称和参数列表完全相同的方法, 仅仅是返回类型不同,java就无法确定编程者倒底是想调用哪个方法了,因为它无法通过返回结果类型来 判断。override可以翻译为覆盖,从字面就可以知道,它是覆盖了一个方法并且对其亜写,以求达到不同的 作用。对我们来说最熟悉的覆盖就是对接口方法的实现,在接口中一般只是对方法进行了声明,而我们在 实现时,就需要实现接口声明的所有方法。除了这个典型的用法以外,我们在继承中也可能会在子类覆盖 父类中的方法。在覆盖要注意以下的几点:1、覆盖的方法的标志必须要和被覆盖的方法的标志完全匹配, 才能达到覆盖的效果;2、覆盖的方法的返冋值必须和被覆盖的方法的返冋一致;3、覆盖的方法所抛出的异常必须和被覆盖方法的所抛出的异常一致,或者是其子类:4、被覆盖的 方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行覆盖。overload对我们来说可能比较熟悉,可以翻译为重我,它是指我们可以定义些名称相同的方法,通 过定义不同的输入参数来区分这些方法,然后再调用时,VM就会根据不同的参数样式,来选择合适的方法 执行。在使用重载要注意以下的几点:1、在使用重裁时只能通过不同的参数样式。例如I,不同的参数类型,不同的参数个数,不同的参数 顺序(当然,同一方法内的几个参数类型必须不一样,例如可以是fun (int, float),但是不能为 fun(int, int);2、不能通过访问权限、返回类型、抛出的异常进行重载;3,方法的异常类型和数冃不会对重载造 成影响;4、对于继承来说,如果某一方法在父类中是访问权限是priavte,那么就不能在子类对其进行重载, 如果定义的话,也只是定义了一个新方法,而不会达到重裁的效果。15.分层设计的好处?答;1,实现了软件之间的解耦;2.便于进行分3.便于维护4,提髙软件组件的重用5.便于替换某种产品,比如持久层用的是hibernate,需要更换产品用toplink,就不用该其他业务代码, 宜接把配置改。6.便于产品功能的扩展。7。便于适用用户需求的不断变化 16.面向对象的特征有哪些方面。答;面向对象的编程语言有封装、继承、抽象、多态等4个主要的特征。!封装:封装是保证软件部件具有优良的模块性的基础,封装的目标就是耍实现软件部件的“髙内聚、低耦合”, 防止程序相互依赖性而带来的变动影响。在面向对象的编程语言中,对象是封装的最基本单位,面向对象 的封装比传统语言的封装更为淸晰、更为有力。面向对象的封装就是把描述个对象的属性和行为的代码封装在个“模块”中,也就是个类中,属性用变量定义,行为用方法进行定义,方法 可以直接访问同一个对象中的属性。通常情况下,只要记住让变量和访问这个变量的方法放在起,将 个类中的成员变量全部定义成私有的,只有这个类自己的方法可以访问到这些成员变量,这就基本上实 现対象的封装,就很容易找出要分配到这个类上的方法了,就基本I:算是会面向对象的编程了。把握个 原则:把对同一事物进行操作的方法和相关的方法放在同一个类中,把方法和它操作的数据放在同一个类 中。例如,人要在黑板上画圆,这共涉及三个对象:人、黑板、圆,画圆的方法要分配给哪个对象呢?由于 画圆需要使用到圆心和半径,圆心和半径显然是圆的属性,如果将它们在类中定义成了私有的成员变量, 那么,画圆的方法必须分配给圆,它才能访问到圆心和半径这两个属性,人以后只是调用圆的画圆方法、 表示给圆发给消息而已,画圆这个方法不应该分配在人这个对象上,这就是面向对象的封装性,即将对象 封装成一个高度自治和相对封闭的个体,对象状态(属性)由这个对象自己的行为(方法)来读取和改变。个更便于理解的例子就是,司机将火车刹住了,刹车的动作是分配给司机,还是分配给火车,显然,应 该分配给火车,因为司机自身是不可能有那么大的气将一个火车给停下来的,只有火车自己才能完成这动作,火车需要调用内部的离合器和刹车片等多个器件协作才能完成刹车这个动作,司机刹车的过程只 是给火车发了一个消息,通知火车要执行刹车动作而已。抽象:抽象就是找出一些事物的相似和共性之处,然后将这些事物归为个类,这个类只考虑这些事物的相似和 共性之处,并且会忽略与当前主题和目标无关的那些方面,将注意力集中在与当前F1标有关的方面。例如, 看到只蚂蚁和大象,你能够想象出它们的相同之处,那就是抽象。抽象包括行为抽象和状态抽象两个方 面。例如,定义一个Person类,如下:class Person String name; int age; 人本来是很复杂的事物,有很多方面,但因为当前系统只需要了解人的姓名和年龄,所以上面定义的类中 只包含姓名和年龄这两个属性,这就是种抽像,使用抽象可以避免考虑些与冃标无关的细节。我对抽 象的理解就是不要用显微镜去看个事物的所有方面,这样涉及的内容就太多了,而是要善于划分问题的 边界,当前系统需要什么,就只考虑什么。继承:在定义和实现个类的时候,可以在个已经存在的类的基础之上来进行,把这个已经存在的类所定义的 内容作为自己的内容,并可以加入若干新的内容,或修改原來的方法使之更适合特殊的需耍,这就是继承。 继承是子类自动共享父类数据和方法的机制,这是类之间的种关系,提高了软件的可重用性和可扩展性。多态:多态是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定, 而是在程序运行期间确定,即个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用 到底是哪个类中实现的方法,必须在由程序运行期间才能决定。因为在程序运行时确定具体的类,这样, 不用修改源程序代码,就可以让引用变量绑定到各种不同的类实现上,从而导致该引用调用的具体方法随 之改变,即不修改程序代码就可以改变程序运行时所绑定的具体代码,让程序可以选择多个运行状态,这就是多态性。多态性增强了软件的灵活性和扩展性。例如,下面代码中的UserDao是个接口,它定义引用变量userDao指向的实例对象由daofactory. getDao()在执行的时候返回,有时候指向的是UserJdbcDao这个实现,有时候指向的是 UserHibernateDao这个实现,这样,不用修改源代码,就可以改变userDao指向的具体类实现,从而导致 userDao. insertUserO方法调用的具体代码也随之改变,即有时候调用的是UserJdbcDao的insertUser方 法,有时候调用的是UserlIibernateDao的insertUser方法:UserDao userDao = daofactory. getDaoO ; userDao. insertUser (user);比喻:人吃饭,你看到的是左手,还是右手?17. java中实现多态的机制是什么?答:靠的是父类或接口定义的引用变量可以指向子类或具体实现类的实例对象,而程序调用的方法在运行 期动态绑定,就是引用变量所指向的具体实例对象的方法,也就是内存里正在运行的那个对象的方法, 而不是引用变量的类型中定义的方法。18. abstract class 和 interface 有什么区别?答:含有abstract修饰符的class即为抽象类,abstract类不能创建的实例对象。含有abstract方法的 类必须定义为abstract class, abstract class类中的方法不必是抽象的。abstract class类中定义抽 象方法必须在具体(Concrete)子类中实现,所以,不能有抽象构造方法或抽象静态方法。如果的子类没有 实现抽象父类中的所有抽象方法,那么子类也必须定义为abstract类型。接口(interface)可以说成是抽象类的种特例,接口中的所有方法都必须是抽象的。接口中的方法定义 默认为public abstract类型,接口中的成员变量类型默认为public static final.下面比较一下两者的语法区别:1.抽象类可以有构造方法,接口中不能有构造方法。2.抽象类中可以有普通成员变量,接口中没有普通成 员变量3 .抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。4 .抽象类中的抽象方法的访问类型可以是public, protected和(默认类型,虽然eclipse下不报错,但应该也不行),但接口中的抽象方法只能是public类型的,并且默认即为public abstract 类型。5 .抽象类中可以包含静态方法,接口中不能包含静态方法6 .抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定 义的变量只能是public static final类型,并且默认即为public static final类型。7.个类可以 实现多个接口,但只能继承一个抽象类。19. jdk中哪些类是不能继承的?答:不能继承的是类是那些用final关键字修饰的类。一般比较基本的类型或防止扩展类无意间破坏原来 方法的实现的类型都应该是final的,在jdk中System, String, StringBuffer等都是基本类型。20. String是最基本的数据类型吗?答:基本数据类型包括 byte、int、char、!ong, float、double, boolean 和 short。java. lang. String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间, 我们应该用StringBuffer类21. 运行时异常与一般异常有何异同?答:异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异 常,是种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必 须声明抛出未被捕获的运行时异常。22. 同步和异步有何异同,在什么情况下分别使用他们?举例说明.答:如果数据将在线程间共享。例如正在写的数据以后可能被另个线程读到,或者正在读的数据可能已 经被另个线程写过了,那么这些数据就是共享数据,必须进行同步存取。当应用程序在对象上.调用了一 个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多 情况下釆用异步途径往往更有效率。23. 多线程有几种实现方法?同步有几种实现方法?答:多线程有两种实现方法,分别是继承Thread类与实现Runnable接口同步的实现方面有两种,分别是 synchronized, wait 与 notifywait。:使个线程处丁等待状态,并且释放所持有的对象的lock.sleep。:使一个正在运行的线程处于睡眠状态,是个静态方法,调用此方法要捕捉InterruptedException 异常。notify。:唤醒个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤醒某个等待状 态的线程,而是由JVM确定唤醒哪个线程,而且不是按优先级。AllnotityO:唤醒所有处入等待状态的线 程,注意并不是给所有唤醒线程一个对象的锁,而是让它们竞争。24. 启动个线程是用run()还是start ()?答:启动个线程是调用start。方法,使线程就绪状态,以后可以被调度为运行状态,个线程必须关 联些具体的执行代码,run。方法是该线程所关联的执行代码。25. List 和 Map 区别?答:个是存储单列数据的集合,另个是存储键和值这样的双列数据的集合,List中存储的数据是有顺 序,并且允许車复:Map中存储的数据是没有顺序的,其键是不能重复的,它的值是可以有重复的。26. List, Set, Map 是否继承自 Collection 接口?答:List, Set 是,Map 不是。27. List、Map、Set三个接口,存取元素时,各有什么特点?答:首先,List与Set具有相似性,它们都是单列元素的集合,所以,它们有一个功共同的父接口,叫 Collection. Set里面不允许有重复的元素,所谓重复,即不能有两个相等(注意,不是仅仅是相同)的 对象,即假设Set集合中有了一个A对象,现在我要向Set集合再存入一个B对象,但B对象与A对象 equals相等,则B对象存储不进去,所以,Set集合的add方法有一个boolean的返回值,当集合中没有 某个元素,此时add方法可成功加入该元素时,则返回true,当集合含有与某个元素equals相等的元素 时,此时add方法无法加入该元素,返回结果为false。Set取元素时,没法说取第几个,只能以Iterator 接口取得所有的元素,再逐一遍历各个元素。List表示有先后顺序的集合,注意,不是那种按年龄、按大小、按价格之类的排序。当我们多次调用add (Ob j e)方法时,每次加入的对象就像火车站买票有排队顺序一样,按先来后到的顺序排序。有时候,也可以插 队,即调用add(int index, Obj e)方法,就可以指定当前对象在集合中的存放位置。个对象可以被反复 存储进List中,每调用一次add方法,这个对象就被插入进集合中一次,其实,并不是把这个对象本身存 储进了集合中,而是在集合中用个索引变量指向这个对象,当这个对象被add多次时,即相当于集合中 有多个索引指向了这个对象,如图x所示。List除了可以以Iterator接口取得所有的元素,再逐一遍历 各个元素之外,还可以调用get (index i)来明确说明取第几个。Map与List和Set不同,它是双列的集 合,其中有put方法,定义如下:put (ob j key, ob j value),每次存储时,要存储一对key/value,不能 存储重复的key,这个重复的规则也是按equals比较相等。取则可以根据key获得相应的value,即 get (Object key)返回值为key所对应的value。另外,也可以获得所有的key的结合,还可以获得所有的 value的结合,还可以获得key和value组合成的Map. Entry对象的集合。List以特定次序来持有元素,可有重复元素。Set无法拥有重复元素,内部排序。Map保存key-value值, value可多值。HashSet按照hashcode值的某种运算方式进行存储,而不是直接按hashCode值的大小进行存储。例如, "abc” -> 78, "def”> 62, "xyz" > 65在hashSet中的存储顺序不是62, 65, 78,这些问题感谢 以前一个叫崔健的学员提出,最后通过査看源代码给他解群淸楚,看本次培训学员当中有多少能看懂源码。 LinkedHashSet按插入的顺序存储,那被存储对象的hashcode方法还有什么作用呢?学员想想!hashset集 合比较两个对象是否相等,首先看hashcode方法是否相等,然后看equals方法是否相等。new两个Student 插入到HashSet中,看HashSet的size,实现hashcode和equals方法后再看size。同一个对象可以在Vector中加入多次。往集合里面加元素,相当于集合里用根绳子连接到了 口标对象。 往HashSet中却加不了多次的。28. Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用=还是equals()?它们有何区 别?答:Set里的元素是不能重复的,元素重复与否是使用equals。方法进行判断的。equals。和=方法决定 引用值是否指向同一对象equals。在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回 真值。29. 说出些常用的类,包,接口,请各举5个.答:常用的类:BufferedReader BufferedWriter FileReader FileWirter String Integer java. util.Date, System, Class, List, HashMap常 用 的 包: java, langjava, iojava, utiljava, sql , javax. servlet, org. apache, strtuts. action, org. hibernate常 用 的 接 口: RemoteListMapDocumentNodeList ,Servlet, HttpServ1etRequest, HttpServletResponse, Transaction(Hibernate)Session(Hibernate), HttpSession30. java中有几种类型的流? JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类? 答:字节流,字符流。字节流继承于InputStream Outputstream,字符流继承于!nputStreamReader OutputStreamWriter.在java, io包中还有许多其他的流,主:要是为了提高性能和使用方便31. super。和 thisO 的区别?答:Super。指父类的无参构造方法,this。指当前类的无参构造方法,两者都必须写在构造方法的第句32. 写出下面代码的输出结果Package test;Public class OuterClassPrivate class InterClass Public InterClassSystem, out. println( MinterClass create" ); Public OuterClass () InterClass ic= new InterClass();System, out. println( *outerclass create" ); Public static void main(String args) OuterClass oc=new OuterClass(); 输出:interClass create Outerclass create33. 如何获取个目录下有多少个文件?答:File f=new File( *'D:/");Int count=f. list(). length;34. Switch能否用string做参数?答:在Java7前,switc只能支抒byte, short, char, int或拧式对应的封装类以及Enum类型。在JAVA 7 中,String支持被加上了。35. Object有哪些公用方法?答:、方法equals测试的是两个对象是否相等、方法clone进行对象拷贝、方法getClass返回和当前对象相关的Class对象、方法notify,notifyall,wait都是用来对给定对象进行线程同步的36. String、String Buffer 与 StringBuilder 的区别答:.String类型和StringBuffer类型的主要性能区别其实在于String是不可变的对象.StringBuffer 和 StringBuilder 底层是 char口数组实现的©.StringBuffer是线程安全的,而StringBuilder是线程不安全的37 .抽象类和接口的区别答:.个类只能继承单个类,但是可以实现多个接口.接口强调特定功能的实现,而抽象类强调所属关系.抽象类中的所有方法并不一定耍是抽象的,你可以选择在抽象类中实现些基本的方法。而接口要求 所有的方法都必须是抽象的38 .解析XML的几种方式的原理与特点:DOM、SAX、PULL答:QOM:消耗内存:先把xml文档都读到内存中,然后再用DOM API来访问树形结构,并获取数据。这个写起来很简单,但是很消耗内存。要是数据过大,手机不够牛逼,可能手机直接死机.SAX:解析效率高,占用内存少,基于事件驱动的:更加简单地说就是对文档进行顺序扫描,当扫描 到文档(document)开始与结束、元素(element)开始与结朿、文档(document)结束等地方时通知事件处 理函数,由事件处理函数做相应动作,然后继续同样的扫描,直至文档结束。.PULL:与SAX类似,也是基于事件驱动,我们可以调用它的next 方法,来获取下个解析事 件(就是开始文档,结束文档,开始标签,结束标签),当处于某个元素时可以调用XmlPullParser的 getAttributte。方法来获取属性的值,也可调用它的nextText()获取本节点的值。39 .wait()和 sleep。的区别答:.sleep来自Thread类,和wait来自Object类.调用sleep。方法的过程中,线程不会释放对象锁。而调用wait方法线程会释放对象锁.sleep睡眠后不出让系统资源,wait让出系统资源其他线程可以占用CPU.sleep(milliseconds)需要指定一个睡眠时间,时间一到会门动唤醒40 .JAVA中堆和栈的区别,说下java的内存机制答:.基本数据类型变量和对象的引用都是在栈分配的.堆内存用来存放由new创建的対象和数组.类变量(static修饰的变量),程序在加我的时候就在堆中为类变量分配内存,堆屮的内存地址存 放在栈中.实例变量:当你使用java关键字new的时候,系统在堆中开辟并不一定是连续的空间分配给变量, 是根据零散的堆内存地址,通过哈希算法换算为长串数字以表示这个变量在堆中的“物理位置”,实例变 量的生命周期当实例变量的引用丢失后,将被GC (垃圾回收器)列入可回收“名单”中,但并不是马上 就释放堆屮内存.局部变量:由声明在某方法,或某代码段里(比如for循环),执行到它的时候在栈中开辟内存,当 局部变量一但脱离作用域,内存立即释放41 .AVA多态的实现原理答:.抽象的来讲,多态的意思就是同一消息可以根据发送对象的不同而采用多种不同的行为方式。(发 送消息就是函数调用).实现的原理是动态绑定,程序调用的方法在运行期动态绑定,追溯源码可以发现,JVM通过参数 的自动转型来找到合适的办法。42 .JAVA垃圾回收机制1 .什么是垃圾回收机:答:释放那些不再持有引用的对象的内存2 .怎么判断个对象是否需要收集?.引用计数(最简单古老的方法):指将资源(可以是对象、内存或磁盘空间等等)的被引用次数保存 起来,当被引用次数变为零时就将其释放的过程.对象引用遍历(现在大多数jvm使用的方法):对象引用遍历从组对象开始,沿着整个对象图I: 的每条链接,递归确定可到达(reachable)的对象。如果某对象不能从这些根对象的个(至少个) 到达,则将它作为垃圾收集3 .几种垃圾回收机制.标记回收法:遍历对象图并且记录可到达的对象,以便删除不可到达的对象,一般使用单线程工作 并且可能产生内存碎片.标记压缩回收法:前期与第种方法相同,只是多了 步,将所有的存活对象压缩到内存的端, 这样内存碎片就可以合成一大块可再利用的内存区域,提高了内存利用率.复制回收法:把现有内存空间分成两部分,gc运行时,它把可到达对象复制到另一半空间,再清 空正在使用的空间的全部对象。这种方法适用于短生存期的对象,持续复制长生存期的对象则导致效率 降低。.分代回收发:把内存空间分为两个或者多个域,如年轻代和老年代,年轻代的特点是对象会很快被回 收,因此在年轻代使用效率比较高的算法。当一个对象经过几次回收后依然存活,对象就会被放入43 .请写出Eclipse常用的5个快捷键(复制粘贴不算),并阐述其作用。1 .Ctrl+1 快速导包和抛异常2 . Alt+shif t+s+r 快速生成 get 和 set3 . Alt+shif t+s+o 快速生成构造4 .Alt+shift+s 快速导包5 .Ctrl+z 撤销6 .Ctrl+D 删除当前行7 .Ctrl+shirt+/注释多行8 . Alt+shif t+s+v 快速重写方法44.请谈谈什么是对象的序列化与反序列化,如何使用?使用的注意事项?答:序列化:把对象转换为字节的过程。反序列化:把字节转换为对象的过程。使用:如果这个接口相要实现序列化必须要SerializableObjectInputstream对以前使用ObjectOutputStream写入的基本数据和対象进行反序列化注意事项:1.当个对象被序列化时,值保存对象的非静态成员变量,不能保存任何的成员方法2.如果 个可序列化的对象包含对某个不可序列化的对象的引用,那么整个序列化操作将会失败,并且会抛出 个NotSerializableException。可以将这个引用标记transient,那么对象仍然可以序列化选择题:1 .下列关于栈的描述中错误的是(B)A.栈是先进后出的线性表B栈只能顺序存储 C栈具有记忆作用D对栈的插入弓删除操作中,不需耍改变栈底指针分析:栈是链式存储的2 . Java中,所有类的根类是(A)A. java. lang. Object B. java. lang. Class C. java, applet. Applet D. java. awt. Frame3 .下列属于合法的Java标识符是(A )A _cat B 5books C +static D -3.141594 .下列叙述中,正确的是(A )A Java语言的标识符是区分大小写的 B源文件名与public类名可以不相同C源文件扩展名为.jar D源文件中public类的数目不限5 . char类型的取值范围是(A )。A 2-7 27-1B 216T C -2152151 D 28T6 .在Java中,能实现多重继承效果的方式是(C )A内部类B适配器 C接口 D同步7 .下列方法中可以用来创建一个新线程的是(C )。A 实现 java. lang. Runnable 接 口并重写 start。方法 B 实现 java. iang. Runnable 接口并重写 runO 方 法 C继承java. lang. Thread类并重写run。方法 D继承java. lang. Thread类并重写slarlO方法 8.下列关于线程优先级的说法中,正确的是(C )A.线程的优先级是不能改变的B.线程的优先级是在创建线程时设置的C.在创建线程后的任何时候都可以设置D. B和C9 .阅读下列代码后public class Personint arr=new int10;public static void main(String args )System, out. println(arrl);)正确的说法是(A )A编译时将产生错误B编译时正确,运行时将产生错误C输出零 D输出空10 .下列哪些语句关于内存回收的说明是正确的?( B )A,程序员必须创建一个线程来释放内存 B,内存回收程序负责释放无用内存C,内存回收程序允许程序员直接释放内存I),内存回收程序可以在指定的时间释放内存对象11 .下列程序段的输出结果是:(B )Void complicatedexpression_r()int x=20, y=30;boolean b;b=x>50&&y>60|x>50&&y<-60|x<-50&&y>60|x<-50&&y<-60;System, out. println(b);A, ture B,

    注意事项

    本文(Java基础简答试题.docx)为本站会员(文***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开