翻到了之前准备计算机二级的笔记,现在给大家分享出来。
一、基本知识:
- 计算机把完成一条指令所花费的时间称为一个指令周期
- 结构化程序设计强调的是程序的易读性
- boolean类型不能转为其他基本类型数据
- 表达式是由运算符和运算对象构成的,#不是运算符
- a的ASCII码是97,以此类推
- 理论上计算机的虚拟内存最大容量取决于计算机地址位数
- 构造方法不一定要有返回值
- I/0方式中使计算机系统并行工作程度最高的是通道
- Java的反汇编命令是javap
- 运算符优先级参照
- double转int会丢失小数点后面的数值
- switch中只允许表达式是int、byte、short、char、String
- 结构图是描述软件系统结构的图形工具
- public可以被所有的类访问、private只能被本类访问、protected可以被本类和同一个包中的类及其子类访问,default不是权限修饰符。
- Jvm运行java代码的执行顺序是加载、校验、执行
- java标识符不能是数字开头
- SequencelInputStream表示其他输入流的逻辑串联。它从输入流的有序集合开始,并从第一个输入流开始读取,直到到达文件末尾,接着从第二个输入流读取,依次类推,直到到达包含的最后一个输入流的文件末尾为止。
- 内部类可以使用外部类的静态成员变量;内部类可以使用外部类的实例成员变量;内部类不可以使用外部类的方法中的局部变量;内部类可以声明为abstract抽象类。
- 扇出指由一个模块直接调用的其他模块个数。
- 数据流图图形
- 过程控制系统属于实时系统
- 动态地址重地位不再要求程序装入固定的内存空间
- 立即寻址(所需的操作数由指令的地址码部分直接给出)、 直接寻址(指令的地址码部分给出操作数在存储器中的地址)、隐含寻址(操作数的地址隐含在指令的操作码或者某个寄存器中)
- 执行指令的过程中,cpu不经过总线能够直接访问寄存器
- java虚拟机执行的任务有加载、校验、执行
- 带符号的定点数中,正数的原码、反码、补码均相同;负数的反码是对该数的原码除符号位外各位取反,补码是在该数的反码的最后(即最右边) -位上加1
- 不管是正数还是负数,其补码的符号位取反即是偏移码
- Serializable接口主要用来处理对象流进行序列化和反序列化,里面没有抽象方法。
- 对象中需要进行并发操作保护的共享数据必须是private的
- java没有提供避免死锁的机制
- break、continue、return属于跳转语句
- 一元运算符 sizeof + - ++ – , ~
- 集成测试是为了发现概要设计的错误
- 软件设计准则:①提高模块独立性:②模块规模应该适中,③深度、宽度、扇出和扇入都应适当;④模块的作用域应该在控制域之内,⑤降低模块之间接口的复杂程度;⑥设计单入口和单出口的模块,不要使模块间出现内容耦合;⑦模块功能应该可以预测
- 与信息隐蔽概念直接有关的概念是模块的独立性
- 分时操作系统特点:交互性、独立性、及时性、同时性
- 软件设计的文档有:概要设计说明书、详细设计说明书、测试计划初稿
- 对类-对象的主要特征描述的是:对象的唯一性
- 同一个关系模型的任意两个元组值不能全相同
- 在关系数据库中,描述全局数据逻辑结构的是概念模式
- 软件设计的常用工具有:结构图、程序流程图、N-S图、PAD图、HIPO图、PDL图
- 机器周期的同步标准是CPU访问存储器一次的所需时间
- 事件保护是事件处理过程的应用,不是事件处理过程涉及的对象
- 机器码补码的符号位取反既是偏移码
- Java的特点为:简单性、面向对象、分布式、健壮性、安全性、体系结构中立、可移植性、解释型、高性能、多线程、动态性。
二、集合
- 在vector类中,在集合的最后增加一个元素的方法是addElement()
三、异常
- catch中的对象类型是try中可能抛出的异常或其父类
- try后可能有多个catch
四、数据库
- 数据库系统中支持安全性定义和检查的语言是数据控制语言
- 在数据库中存储的是数据以及数据之间的联系
五、软件测试
- 软件测试的实施过程主要有4个步骤:单元测试、集成测试、确认测试(验收测试)和系统测试
- 黑盒测试方法和技术有等价类划分法、边界值分析法、错误推测法和因果图等。白盒测试的主要技术有逻辑覆盖测试、基本路径测试
- 与确认测试有关的文档是需求规格说明书
- 软件危机有:开发进度难以预测、开发成本难以控制、用户对产品功能难以满足、软件质量无法保证、软件产品难以维护、软件缺少文档资料
六、文件操作
reader和writer结尾都是字符流,以stream结尾的都属于字节流
- 向文件写入int类型用writeInt()方法
- 查找文件名用File类,读写数据用FileInputStream、FileOutputStream等流
- 所有的字符输出流都从OutputStreamWriter类继承
- java.io提供了ByteArrayOutputStream、ByteArrayInputStream和StringBufferInputStream类可直接访问内存。
- ByteArrayInputStream可以从字节数组读取数据; ByteArrayOutputStream可以向字节数组(缓冲区)写入数据
- Reader/Writer处理的是字符流,IntputStream/OutputStream处理的是字节流,这几个都是抽象类
- RandomAccessFile是直接继承了java.lang.Object类
- 不能处理Unicode的类是字符流的类
- DMA 直接内存存取,是I/O设备与主存储器之间由硬件组成的直接数据通路,用于成组的数据传送
- Java对输入/输出访问提供同步处理机制是过滤流
- DeflaterOutputStream类的作用是对输出文件进行过滤和压缩
七、线程/进程
- 重写Runnable接口中的run方法不能有参数
- 如果线程正处于运行状态,则它可能到达的下一个状态有:可运行状态、阻塞状态、终止状态
- 多线程并发能给对象加锁的语句是 synchronized(x)
- 当一个进程在运行过程中释放了系统资源后要调用唤醒原语
- 进程调度只对CPU负责
- 实现线程同步,建议使用wait()和notify()
- 一个线程的代码可以被其他线程共享
- 可以调用wait()和join()方法让线程进入阻塞状态
- join()是把指定线程加入到当前线程,isAlive()是判断当前线程是否处于活动状态、sleep()是让线程进行休眠,yield()是让运行状态的线程退回可运行状态
- 类继承了Thread类后,可以调用Thread的getName()和setName
- 线程模型包括:虚拟的CPU、代码所操作的数据、该CPU执行的代码
- 进程属性:动态性、共享性、独立性、制约性、并发性
- 一个进程在运行过程中释放了系统资源后要调用唤醒进程源语而不是阻塞进程源语
八、XML
- Applet用来获取参数
九、事件
- keyPressed()为按下某个键时调用的方法、keyRelesed()为释放某个键是调用的方法、keyTyped()为键入某个键是调用的方法
- ActionEvent回车事件,ButtonEvent按钮事件,FocusEvent鼠标聚焦事件,MouseEvent鼠标拖动事件
十、Swing
- Swing构件是以J开头的
- 获取构件前景色的方法是 getForetground()
- Swing与AWT相比新增的布局管理器是BoxLyout
- 对点击按钮操作所产生的事件进行处理的接口是ActionListener
- WindowListener接口包括以下方法: windowActivated、windowDeactivated、 windowClosing、 windowClosed、 windowlconified、windowDeiconified、 windowOpened方法
- 根面板是由一个玻璃面板,一个内容面板,和一个可选的菜单条组成
- Swing顶层容器共四个: JWindow、JFrame、 JDialog和JApplet、 其他三个是中间容器。
- 当按钮被按下的时候,执行actionPerformed(ActionEvent e)方法
- JRadioButton是单选组件,JComboBox是下拉组件,JList可以作为多项选择组件
- 在JFrame中添加菜单的方法是JMenu()
- setJMenuBar()是用来创建菜单条,add可以向菜单添加指定的选项
- JPanel不属于容器类
- 一个监听器只能监听一个组价的一种事件
- JFrame的默认布局容器是流布局 FlowLayout
- Swing不可以直接把组件加到顶层容器中
十一、Applet
- 如果Applet要在浏览器中显示一个字符串, 则需要重写的方法是paint()
- applet的main方法不由浏览器调用,由java虚拟机调用
- applet支持外部参数
- applet不能通过java命令运行,它是在web浏览器运行
- Applet中可以重写Applet类中的paint()方法
- Applet的间接父类才是Object
- Applet中支持与Application相同的GUI事件响应机制
- Applet可以用javac编译,但不可以用java命令运行
十二、 数据结构
12.1 基本知识
- 循环链表是一种链式存储结构,循环队列是队列的一种顺序存储结构,属于线性结构。
- 多重链表可以有多个指针域
- 循环链表的存储空间可能是不连续的
- 最坏情况下时间复杂度:有序表的二分查找为O(log2n),寻找最大项为0(n-1), 顺序查找为O(n),堆排序为O(nlog2n)。 故最坏情况下时间复杂度最低的是有序表的对分查找
- 向量是顺序存储的线性结构
- 对数据进行压缩存储会降低算法的空间复杂度
- 线性表特征:表中所有元素所占的存储空间是连续的,每一个数据元素所占的字节相同、表中个数据元素在存储空间中按逻辑顺序依次存放
- 链式存储比顺序存储更浪费空间
- 带链栈的栈底指针是随栈的操作而动态变化的
- 二叉树属于非线性结构
12.2 树
-
前序遍历:根节点-左节点-右节点
-
中序遍历:左节点-根节点-右节点
-
后序遍历:左节点-右节点-根节点
-
树的总的节点数为树中所有节点的度数之和再加一
-
度为0的结点(即叶子结点)总是比度为2的结点多一个
-
二叉树 第 k 层 最多有 2的k-1次方 个节点
-
深度为 k 的满二叉树 有 2的k次方 -1 个节点
-
设某棵树的度为3,其中度为3,2,1的结点个数分别为3,0,4。则该树中的叶子结点数为7
解析:
设叶子节点数为N,这棵树的总结点数为3+0+4+n,再根据树的性质树的总的节点数为树中所有节点的度数之和再加一,则总结点数为 总度数+1 = 节点数 3X3+2X0+1X4+0Xn+1 = 3+4+n 解得N=7
-
某二叉树共有399个结点,其中有199个度为2的结点,则该二叉树中的叶子结点数为200
解析:根据二叉树的性质:对任何一棵二叉树,度为0的结点(即叶子结点)总是比度为2的结点多一个。本题中,度为2的结点个数为199,则叶子结点数为199+ 1=200。199+ 200= 399,即这棵二叉树中只存在度为0和度为2的结点,不存在度为1的结点。
-
度为3的一棵树共有30个结点,其中度为3, 1的结点个数分别为3,4。则该树中的叶子结点数为 15
解析:
设叶子节点个数为M,度为2的节点个数为N个,树的总结点数=所有节点的度数之和+1,则3X3+2XN+1X4+0XM+1=30 N=8,树的总结点数=3+8+4+M = 30,则叶子节点数为15
12.3 数组
- 获取数组长度用length
- 除数为0会抛出ArithmeticException除数不能为0的异常
- 对长度为N的线性表进行快速排序,最坏的的情况下需要n(n-1)/2次
- 对长度为N的线性表进行二分查找,最坏的的情况下需要log2n次
12.4 栈和队列
- 带链的栈是具有栈属性的链表。链表的存储单元是不连续的,由于是不连续的存储空间,所以指针将不会有规律地连续变化。当top=bottom=NULL时,为栈空;当top= bottom且不等于NULL时,栈中存在一个元素, 其他情况无法判断。
- 带链的队列是采用链式存储结构表示的队列。链式存储的存储单元是不连续的,因为是不连续的存储空间,所以指针将不会有规律地连续变化。当front=rear=NULL时, 为队空;当front=rear且不等于NULL时, 队列中存在一个元素, 其他情况无法判断。
- 循环队列长度为m,初始状态为front=rear=m, 此时循环队列为空。现经过一系列入队与退队运算后,front=rear且不为m,此时循环队列为队满或队空,循环队列中的元素个数为0或m。
若循环队列的存储空间为(1:m),在循环队列运转起来后,如果front rear,则队列中的元素个数为rear-front+m - 设栈的存储空间为S(1:50),初始状态为top=51。现经过一系列正常的入栈与退栈操作后,top=50,则栈中的元素个数为1个
解析:栈的存储空间为S(1:50),初始状态为top=51,即栈的初始状态为空。当第一个元素进栈后,top=50, 第二个元素进栈后, top=49,第三个元素进栈后,top=48,以此类推;若第三E个元素出栈后,top=48, 第二个元素出栈后,top=50。即每进栈一个元素, top-1; 每出栈一个元素,top+1。 当top= 50时,栈中只有一个元素。 本题答案为1个 - 若循环队列的存储空间为(1:m),在循环队列运转起来后,如果front rear,则队列中的元素个数为rear-front+ m
- 设循环队列的存储空间为Q(1:m),当front=rear=m时, 循环队列为空;当front=rear且不等于m时,循环队列可能为空,也可能为满。当为空时,可以插入元素;当为满时,插入元素会发生"上溢”错误。
十三、操作题
- 创建ActionListener对象必须重写其中的actionPerformed(ActionEvent e)抽象方法
- WindowEvent处理窗口事件,点击窗口会触发该事件,System.exit(0)方法为退出该系统
- 实现接口用implements
- 抽象类定义用abstract
- java涉及鼠标点击事件需要继承MouseAdapter
- applet在指定位置绘制字符串用drawString()
- 遍历字符charAt(String s)
- JOptionPane.showMessageDialog()
- setLayout(new BorderLayout())
- swing使窗口隐藏或消除frame.dispose()
- Integer.parseInt()
- 获得JFrame面板 getContentPane()
- setText(String s) 设置文本
- frane.setVisible(true) 控制显示窗口
- import java.awt.event.*;
- Container contentPane = getContentPane();
- xVal = JOptionPane.showInputDialog(“输入1个整数:” ); 显示输入框