Java模拟试题刷题日记,20201207
虽然我什么都不会,但不妨碍我在比赛中抱着大佬的大腿躺~
开篇语
因为试题量[1]过大,因此只记录自己做错的试题,所以有一些会试题量特别大有些试题量特别小,但每一道都尽量带有解析。
在每一次的刷题日记结束后,还会做一次今日的刷题总结,反馈一次今天的题目整体难度感知以及感觉自己对知识点的掌握程度。
在多天刷题日记后,会有一天不做新题,回顾旧题,但每天都会有一次更新。
PS.但可能会有一天各种原因没有做或者就是我偷懒了,会在第二天的刷题总结中进行反思。
题目
1.第一题:
ByteArrayOutputStream bout=new ByteArrayOutputStream(); ObjectOutputStream out=new ObjectOutputStream(bout); out.writeObject(this); out.close();
以上代码段的作用是______。
A、将对象写入内存
B、将对象写入硬盘
C、将对象写入光盘
D、将对象写入文件
ByteArrayOutputStream,字节数组输出流。这个类将一个字节数组作为输出流。这个用于存储输出数据的内部字节数组长度可以按照需要增长。
ObjectOutputStream既继承了OutputStream抽象类,又实现了ObjectOutput接口,这是Java用接口技术代替双重继承例子,其构造方法参数是串行化了的对象。
在java.io中,ByteArrayOutputStream是OutputStream的子类,可以直接访问内存。用ByteArrayOutputStream可以向字节数组(缓冲区)写入数据。
2.第二题:
-下列不属于Swing构件的是______。
A、JMenu
B、JApplet
C、JOptionPane
D、Panel
-Swing中的大多数构件都是AWT构件名前面加了一个"J"。
Swing构件分类(从功能上):
1、顶层容器,JFrame、JApplet、JDialog和JWindow共4个。
2、中间容器,JPanel、JScrollPane、JSplitPane、JToolBar。
3、特殊容器,在GUI上起特殊作用的中间层,如JInternalFrame、JLayeredPane、JRootPane。
4、基本控件,实现人机交互的构件,如Jbutton、JComboBox、JList、JMenu、JSlider、JtextField。
5、不可编辑信息的显示,向用户显示不可编辑信息的构件,例如JLabel、JProgressBar、ToolTip。
6、可编辑信息的显示,向用户显示能被编辑的格式化信息的构件,如JColorChooser、JFileChooser、JFileChooser、JTable、JTextArea。
3.第三题:
-阅读下面实现堆栈类并发控制的部分代码
public class DataStack{ private int idx=0; private int[] data=new int[8]; public void push(int i){ ______{ data[idx]=i; idx++; } } … … }
-在程序下划线处填入正确选项是______。
A、synchronized
B、synchronized(this)
C、synchronized()
D、synchronized(idx)
+一个程序中单独的、并发的线程对同一个对象进行访问的代码段,称为临界区(Critical Sections)。在Java语言中,临界区可以是一个语句块或是一个方法,并且用"synchronized"关键字标识。Java平台将每个由synchronized(Object)语句指定的对象设置一个锁,成为对象锁(monitor),其是一种独占的排他锁(exclusive locks),这种锁的含义是,当一个线程获得了对象锁后,便拥有该对象的操作权,其他任何线程不能对该对象进行任何操作。
4.第四题:
-阅读下面Applet程序
import javax.swing.*; import java.awt.*; public class SwingApplet extends JApplet{ JLabel l=new JLabel("This is a Swing Applet."); public void init(){ ______ } }
-在程序下划线处填入正确选项是______。
A、Container contentPane=getContentPane(); contentPane.add(l);
B、JPanel contentPane=new JPanel(); contentPane.add(l);
C、contentPane.add(l);
D、add(l);
-JApplet是顶层的Swing容器,其内部用一个隐含的根面板(JRootPanel)作为惟一的直接后代,而根面板中的内容面板(Content Pane)才是JApplet除菜单条外所有构件的双亲。由于内容面板的存在,通常对JApplet添加构件有两种方式:
1、用getContentPane()方法获得JApplet的内容面板,再向内容面板中添加构件:
Container contentPane=getContentPane(); contentPane.add(SomeComponent);
2、建立一个JPanel之类的中间容器,把构件添加到容器中,再用setContentPane()方法把该容器置为JApplet的内容面板:
JPanel contentPane=new JPanel(); contentPane.add(SomeComponent); setContentPane(contentPanel);
5.第五题:
-Swing与AWT相比新增的布局管理器是______。
A、CardLayout
B、GridLayout
C、GridBagLayout
D、BoxLayout
-Swing继续沿用AWT中的布局管理器,包括FlowLayout、BorderLayout、CardLayout、GridLayout、GridBagLayout,另外Swing新增加了一个BoxLayout布局管理器。
6.第六题:
-阅读下面程序
public class Test2 ______{ public static void main(String[] args){ Thread t=new Test2(); t.start(); } public void run(){ System.out.println("How are you."); } }
-在程序下划线处填入正确选项是______。
A、implements Thread
B、extends Runnable
C、implements Runnable
D、extends Thread
-该程序实现了线程的创建。
在JAVA中,创建线程的方法有两种:一种是通过创建Thread类的子类来实现,另一种方法是通过实现Runnable接口的类来实现。
通过继承Thread类实现多线程的方法是首先设计Thread的子类,然后根据工作需要重新设计线程的run方法,再使用start方法启动线程,将执行权转交到run。
通过Runable接口实现多线程的方法是首先设计一个实现Runnable接口的类,然后根据工作需要重新设计线程的run方法;再建立该类的对象,以此对象为参数建立Thread类的对象;调用Thread类对象的start方法启动线程,将执行权转交到run方法。
根据语句"Thread t=new Test2();"可以判断出下划线处填入"extends Thread"。
7.第七题:
-下列关于对象串行化的说法中错误的是______。
A、Java中,默认所有类的对象都可串行化
B、在对象串行化时,不保存对象所属类的构造方法
C、在实现Serializable接口的类中,用transient关键字可使某些数据不被串行化
D、ObjectInputStream和ObjectOutputStream类都支持对象的读和写
-一个类只有实现了Serializable接口,它的对象才是可串行化的。
8.第八题:
-接口中,除了抽象方法之外,还可以含有______。
A、变量
B、常量
C、成员方法
D、构造方法
-接口是一种只含有抽象方法或常量的一种特殊的抽象类,它不包含成员变量和方法实现。
9.第九题:
-StringBuffer类字符串对象的长度是______。
A、固定
B、必须小于16个字符
C、可变
D、必须大于16个字符
- 在Java中,字符串是作为对象出现的,由java.lang.String和java.lang.StringBuffer定义,分别用来处理长度不变和长度可变的字符串。
10.第十题:
-阅读下面求质数的程序
import java.lang.Math.*; public class MorePrimesTest{ public static void main(String[] args){ long[] primes=new long[20]; primes[0]=2L; primes[1]=3L; long number=5L; outer: for(int count=2;count<primes.length;number+=2L){ long limit=(long)Math.ceil(Math.sqrt((double)number)); for(int i=1;i<count&&primes[i]<=limit;i++){ if(number ______ primes[i]==0L){ continue outer; } } primes[count++]=number; } for(int j=0;j<primes.length;j++){ long n=primes[j]; System.out.println(n); } } }
-在程序下划线处填入的正确选项是______。
A、&
B、*
C、/
D、%
-所谓质数或称素数,就是一个正整数,除了本身和1以外并没有任何其他因子。任何一个整数,可以写成一串质数相乘的积。
程序中首先定义了包含有20个元素的长整型数组,为数组的第一,第二个元素赋值,并且还定义了一个长整型变量"long number=5L;",然后进入循环,该循环的作用是判断当前变量number的值是否为质数,其中Math.sqrt(double x)方法的作用是求x的平方根,而Math.ceil()方法的作用是求最小的整数但不小于本身(例如:Math.ceil(3.14)则返回4),在本次循环中,需要判断变量number与primes[i]的取余操作,如果变量number与小于自己的平方根取整且小于count的数取余数为0,则跳出循环,将number的值写入数组中,当20个元素填满后,程序依次输出数组元素。
总题目数量 | 错误数量 | 错误率 |
---|---|---|
30 | 10 | 33.33% |
今日小结/刷题总结
错了十道题,相较于昨天貌似是进步了,但实际上也有题目随机分布被我捡漏了的情况,主要是今天错误的还是那么一些知识点,如布局管理器,接口,甚至还有一些我本应该掌握的,本不应该错的题目,这些都是问题,还需要在今后的学习中去发现并弥补不足。
-
试题量--主要为Java语言特点和实现机制 ↩
网友评论