java笔试题专项练习【※※】
1,以下关于java封装的描述中,正确的是:(A)
A,封装的主要作⽤在于对外隐藏内部实现细节,增强程序的安全性
B,封装的意义不⼤,因此在编码中尽量不要使⽤
用css和js实现下拉菜单C,如果⼦类继承⽗类,对于⽗类中进⾏封装的⽅法,⼦类仍然可以直接调⽤
js 创建数组D,只能对⼀个类中的⽅法进⾏封装,不能对属性进⾏封装
解析:
关于封装:封住、继承、多态是⾯向对象的三⼤特征,其重要性与使⽤频率不⾔⽽喻。封装就是将属性私有化,提供公有的⽅法访问私有属性。通过封装,可以实现对属性的数据访问限制,同时增加了程序的可维护性。由于取值⽅法和赋值⽅法隐藏了实现的变更,因此并不会影响读取或修改该属性的类,避免了⼤规模的修改,程序的可维护性增强
2,java7后关键字switch⽀不⽀持字符串作为条件:(A)
A,⽀持
B,不⽀持
解析:
switch(exp),在JDK7之前,只能是byte、short、char、int或者对应的包装类,或者枚举常量(内部也是由整型或字符类型实现)。
为什么必须是这些呢,因为其实exp只是对int型⽀持的,其他都是因为可以⾃动拆卸或者⾃动向上转型到int,所以才可以。
到了JDK7的时候,String被引⼊了,为什么String能被引⼊呢?
bootstraptable onloadsuccess其实本质上还是对int类型值得匹配。
原理如下,通过对case后⾯得String对象调⽤hashCode⽅法,得到⼀个int类型得hash值,然后⽤这个hash值来唯⼀标识这个case。那么当匹配时,⾸先调⽤exp的hashCode,得到exp的hash值,⽤这个hash值来匹配所有case,如果没有匹配成功,就说明不存在;如果匹配成功了,接着会调⽤字符串的equals⽅法进⾏匹配。(hash值⼀致,equals可不⼀定返回的就是true)。所以,exp不能为null,case⼦句使⽤的字符串也不能为null,不然会出现空指针异常。
3,定义:String s1 = “uml”; String s2 = “uml”; String s3= new String(“uml”); String s4= new String(“uml”);那
么,s1==s2;s3 == s4;s1.equals(s3); 判断正确与否()
A, T,F,T
B, F,T,F
解析:
==:⽐较两个引⽤的地址和值
equals:⽐较两个引⽤的值
s1==s2 true s1和s2指向字符串常量池中同⼀个地址
s3 和 s4 都显⽰使⽤了new,是不同的对象, 当然不相等
s1 和 s3 的值都是 “uml”,当然相等
4,javac的作⽤是( )。
正确答案: A
A,将源程序编译成字节码
B,将字节码编译成源程序
C,解释执⾏Java字节码
D,调试Java代码
javac是将源程序.java编译成.class⽂件
java是将字节码转换为机器码⽂件执⾏
java常见笔试题5,下列代码的执⾏结果是:( )miui13消息不提醒
也就是说反射机制让我们可以先拿到java类对应的字节码对象,然后动态的进⾏任何可能的操作,包括:
在运⾏时判断任意⼀个对象所属的类
在运⾏时构造任意⼀个类的对象
在运⾏时判断任意⼀个类所具有的成员变量和⽅法
在运⾏时调⽤任意⼀个对象的⽅法
这些都是反射的功能。使⽤反射的主要作⽤是⽅便程序的扩展。
14,java运⾏时内存分为“线程共享”和“线程私有”两部分,以下哪些属于“线程共享”部分
正确答案: B D
A, 程序计算器
B, ⽅法区
C, java虚拟机栈
D, java堆
解析:共享的资源有:
1,堆,由于堆是在进程空间中开辟出来的,所以它是理所当然地被共享的;因此new出来的都是共享的(16位平台上分全局堆和局部堆,局部堆是独享的)
2,全局变量,它是与具体某⼀函数⽆关的,所以也与特定线程⽆关;因此也是共享的
3,静态变量,虽然对于局部变量来说,它在代码中是“放”在某⼀函数中的,但是其存放位置和全局变量⼀样,存于堆中开辟的.bss和.data段,是共享的
⽂件等公⽤资源 这个是共享的,使⽤这些公共资源的线程必须同步。Win32提供了⼏种同步资源的⽅式,包括信号、临界区、事件和互斥体。
独享的资源有
1,栈,栈是独享的
2,寄存器,这个可能会误解,因为电脑的寄存器是物理的,每个线程去取值难道不⼀样吗?其实线程⾥存放的是副本,包括程序计数器PC
15,以下说法错误的是()
正确答案: B C D
A, 其他选项均不正确
B, java线程类优先级相同
C, Thread和Runnable接⼝没有区别
D, 如果⼀个类继承了某个类,只能使⽤Runnable实现线程
解析:
B选项,在java中线程是有分优先等级的所以优先级不能相同,错误
C选项,Thread实现了Runnable接⼝是⼀个类不是接⼝,错误
D选项,实现多线程的三种⽅式,⼀种是继承Thread类使⽤此⽅式就不能继承其他的类了。还有两种是实现Runnable接⼝或者实现Callable接⼝,所以D错误。
addressing是什么意思A选项,综上A说其余三项都是错误的,所以A选项所述为真,不是错误的。
说明:解析来源于⽜客⽹Java试题后⾯的优质评论,我只是将这些优质评论收集过来,如果有错误的地⽅欢迎指出。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论