Java二级选择题部分补充总结2
关系模式
课程关系模式中,存在传递依赖时,所指是受前一个值的变化而变化的变量.
部分主属性依赖是非主属性依赖,也就是非主键与其他元组之间的关系.
主键: 表中的一个或者多个字段,它的值用于唯一的标识表中的某一条记录.
关系模式中:
- 1.第一范式: 每个属性都不再分为简单项
- 2.第二范式: 首先得是第一范式,其次包含两个部分.其一是数据表必须有一个主键,二是没有包含主键中的属性必须完全依赖于主键,而不是只依赖于主键的一部分
- 第三范式: 首先得是第二范式,另外非主键属性必须直接依赖于主键,而不存在传递依赖.
一个学员不可能只选修一门课程,需要学号和课程号两个属性才能唯一的标识一条记录.
案例:
- 第三范式: 首先得是第二范式,另外非主键属性必须直接依赖于主键,而不存在传递依赖.
数据结构
- 数据库具有共享性高,可以减少相同数据重复存储的特点.
- 规范化主要为克服数据库逻辑结构的插入异常,删除异常和冗余度大的问题.
- 数据不一致是指数据的矛盾性,不相容性
产生数据不一致的原因主要有以下三种:
1.数据冗余(根本原因)
2.并发控制不当
3.各种故障,错误
关系型数据库至少满足属性不可再拆分,表与表之间通过外键进行关联. 故至少为 1NF.
主属性直接依赖:课程号----教师名 ,教师名---教师地址
案例:
Java Applet与Java Application区别
Java Application本身是一个类,该类必须要有个main方法,不能重载,Java Applet本身不能独立运行,必须由支持Applet的浏览器或者其他软件加载运行.但是Java Application 和Java Applet 都是通过Javac编译的.
public类定义
Java源文件名必须要和public类的名相同,且一个文件下有且仅有一个public类
能够支持javadoc命令的注释语句是:/*.../
构造方法用来初始化对象,其方法名与类名相同且只能通过new 自动调用
- 1.在java中,java.lang包封装了所有基本类.
- 2.由Java编译器自动导入,而无需在程序中用import导入的包是java.lang下的包.
如果发生以下情况时,线程将进入阻塞状态:
- 1.线程调用了sleep()方法
- 2.线程调用了join()方法
- 3.线程调用了wait()方法时,线程由可运行状态进入阻塞状态
- 4.线程调用了synchronized()来请求对象的锁未获得时,进入阻塞状态.
yeild()可唤醒线程,进入可运行状态.
布局管理器
- GridLayout:布局管理器使容器中各个构件呈网格布局.
- BorderLayout是Window,Frame和Dialog的默认布局管理器
- FlowLayout是Panel和Applet的默认布局管理器
- CardLayout布局管理器能够帮助用户处理两个或者多个成员共享同一显示空间,即可以把容器分层.,每层的显示空间占据整个容器的大小,但是每层只允许放置一个构件。
public Thread(ThreadGroup group,Runnable target,String name)
创建线程的方法有两种:
- 1.实现Runnable接口的类的实例作target参数生成Thread类的实例,并实现run()方法
- 2.编写继承Thread类的子类,并重写@Override run()方法
负责对字节码(Byte Code)解释执行的是Java虚拟机(JVM)
线程并发控制:
用synchronized保护的共享数据必须是私有的,将共享数据定义为私有的,使线程不能直接访问这些数据,必须通过对象的方法。
继承
能实现多重继承的效果的方式是接口,Java中类只能实现单继承。
Applet调度
启动Applet程序时,从加载到卸载,其被调用的方法顺序如下:
init() , start() ,stop() ,destory().
数组的实例化不能在主方法外,不然无法编译通过.
Java语言中现成的优先级是用一个介于MIN_PRIORITY和MAX_PRIORITY之间的整数来表示的.可以在线程创建后的任何时候修改线程的优先级.
Applet自身不能运行,必须嵌入到其他应用程序(如浏览器)中运行.Applet可以使用Graphics类提供的方法满足显示的需求,drawImage()方法来显示图像.
Java Applet通过命令行将参数传递给main()方法,而Applet获取的参数是通过在HTML文件中采用<PRAM>标记定义参数.
JApplet是顶层的Swing容器,其内部用一个隐含的根面板(JRootPanel)作为唯一的直接后代,而根面板中的内容面板(ContentPane)才是Japplet除菜单条所有构件的双亲.
为JApplet添加构件有两种方式
- 1.用getContentPane()方法获取JApplet获取内容面板,再使用add()方法向内容中添加构件
- 2.建立一个JPanel之类的中间容器, 把构件添加到容器中,再讲setContentPane()方法把该容器置为JApplet的内容面板.
Java中没有CharInputStream
有CharArrayInputStream
char类型的取值范围是0~(2^16 -1)
getName()方法的使用
1.线程中如果是使用继承Thread方法来创建线程时,获取线程名字时只需要直接调用getName()就行.
2.而使用实现Runnable接口时需要使用Thread.currentThread().getName()来获取线程名
setText()方法设置文本
1.getText()方法获取文本信息,这两个方法必须熟练使用掌握
2.actionPerformed(ActionEvent e)方法下是设置内容的地方。
栈和队列
栈:特殊的线性表,这种线性表只能在固定的一端插入和删除操作(栈顶),另一端为栈底。
入栈退栈(压栈弹栈):先进后出,或者说是 后进先出
队列:
- 允许在一端插入,一端删除的线性表。
最先插入的元素将最先能被删除,反之最后插入的元素最后才能被删除。
入队退队:先进先出,或者 后进后出
案例:
设栈与队列初始状态为空。将元素A,B,C,D,E,F,G,H依次轮流入队和入栈,然后依次退队和出栈,则输出顺序为_________。
循环队列
- 循环队列:将存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用。
案例:
循环队列的存储空间为(0:59)初始状态为空,经过一些列正常的入队退队操作后,front=25,rear=24.循环队列中的元素个数为__________。
分析:
经过一系列的入队和退队操作后,头指针(front=25)尾指针(rear=24)说明入队24次,退队25次,已经形成了循环效果。
解析
循环队列的存储空间为(0:59),可以存放60个元素,所以公式为:最后元素个数=存储容量+入队次数(front)-退队次数(rear)==60+24-25=59
结构化程序
- 结构化程序设计是程序设计的先进方法和工具。
- 采用结构化程序设计方法编写程序,可使结构化程序良好、易读、易理解、易维护。
- 结构化程序设计放啊的主要原则是可以概括为自顶向下,逐步求精,模块化,限制使用goto语句。且与程序执行效率无关。
面向对象
面向对象最基本的概念是对象
它得基本特点有:
标识唯一性、抽象性、继承性、多态性、封装性、和模块独立性好。
Java关键字
- final:表示不可改变的,效率比较高,修饰的常量 所有字母大写
- default:标记switch语句的默认分支
- private:表示私有的,访问控制修饰符,用于类,方法,或字段(在类中声明的变量)
- transient:可以应用于类的成员变量,以便指出该成员变量不应该在包含它的类的实例已序列化时被序列化。(保护成员变量不被序列化)
布局管理器
swing 继续沿用awt中的布局管理器,包括FlowLayout,BorderLayout,CardLayout,GridLayout,GridBagLayout。
另外swing新增加了一个BoxLayout布局管理器
目录的概念
在Java中作为一种特殊文件,即文件名的列表。
对象的串行化
- 一个类只有实现了Serializable接口,它的对象才可以串行化。
- 当对象串行化时,不保存对象所属类的构造方法。
字符串
java.lang下的String类是长度不可变的,但是java.lang下的StringBuffer类是可变的。
数组
public static void main(String [] args){}创建一个名为main的方法,但是其中的String args [ ] 只是表明有一个字符串的参数,并不能用作输出数组的定义。
随机访问文件流
- 文件操作中经常需要的是随机访问,Java中的RandomAccessFile类
- ByteArrayInputStream 字节数组的输入流
- PipedInputStream 是实现线程间通信的一个类
- FilterInputStream过滤器输入流本身也是一个抽象类,是过滤器输入流的一个基类
多分支语句
switch语句支持:int ,byte, short,char
不支持boolean和String
软件工程
软件按照功能可分为:
- 应用软件:为解决特定领域的应用而开发的软件 如数据库管理系统,财务管理系统
- 系统软件:计算机管理自身资源,提高计算机使用效率并为计算机用户提供各种服务的软件。如操作系统
- 支撑(工具)软件:介于系统软件和应用软件之间,协助用户开发软件的工具软件,比如一些设计工具软件,编码工具软件,测试工具软件,维护工具软件等 比如 Word,excel,ppt
数据模型
- 数据模型的三个要素:数据结构,数据操作,数据约束
- 关系的完整性:实体完整性,参照完整性,用户自定义完整性
- 数据库系统的三级模式:外模式,概念模式,内模式
系统结构图的宽度与深度
-
软件的宽度是指软件结构同一层次上的模块的总个数的最大值。
-
软件的深度表示控制的层数。同一层上所有的结点的所有子节点都在下一层。
扇出是指模块直接调用下级模块的个数,扇出大表示模块复杂度高,需要控制和协调过多的下级模块
最大扇出数<==>扇出的最大值
顺次表的存储结构查找
最坏的打算需要比较n次,平均下来也要(n+1)/2
算法的时间复杂度
- 对于各种特定的输入,算法的时间复杂度是变化的。
- 算法的时间复杂度与计算机本身无关
- 算法的时间复杂度与使用程序设计语言无关
- 算法的时间复杂度与实现算法中具体细节无关
- 算法的时间复杂度算法本身的执行过程时间次数及其工作量有关
Applet事件处理
Applet事件处理机制与Java Appliciation相同,采用监听方式与JApplet相同。 - javaprof.exe ,Java剖析工具,提供解释器剖析信息
- javap.exe,Java类分解器,对.class 文件提供字节码反汇编,并打印.
JDK工具
- -D : 定义属性名
- -debug : 将程序连接到调试器
- -verbosegc : 无用单元收集器释放一次内存,打印一条信息
- -mx : 分配最大内存值.
StringBuffer类被设计用于创建和操作动态字符串信息.
为该对象分配内存自动扩展以容纳新增的文本,首先使用初始化字符串的方法创建一个StringBuffer对象sb,其对应的值为字符串"test",方法length()的功能是返回字符串的长度,返回值的数据类型为int,运行程序后,输出的是字符串的长度。
- 按钮是一个常用构件,swing的按钮(JButton)和标签可显示图标和文本,而AWT的按钮(Button)和标签只能显示文本.
- 在构件方面:swing构件不能直接添加到顶层容器中,必须添加到一个与swing顶层容器相关的内容面板上,比如JPanel.
Java对文件类提供了许多操作方法,能获得文件对象父路径名的方法是getParentFile()
- getAbsolutePath(): 找到一个文件的绝对路径
- getAbsoluteFile()等价于(new File(this.getAbsolutePath())
- getName()得到一个不包含路径的文件名
java命令
- javah生成C头文件和Stup文件命令
- javap Java类文件解析器,用于解析文件/*.../
- Jar,Java类文件归档命令,可将多个文件合并为单个Jar归档文件.
- java,Java语言的解释器,解释运行Java字节码.class文件
Java对I/O访问所得提供的同步管理机制是过滤流
- 一般,使用一个过滤流要求首先把过滤连接到某个I/O流上,在通过构造方法的参数去指定连接的I/O流.
Java中没有检测与避免死锁的专门机制
- 为避免死锁,应用程序一般是:如果程序要访问多个共享数据,则首先要考虑从全局定义一个获得锁的顺序,并且在整个程序中都遵循这个顺序,解锁时,要按加锁的反序释放.
Applet安全限制
- 1.Applet不能运行任何本地可运行程序
- 2.禁止加载本地库或方法
- 3.禁止读,写本地计算机的文件系统
- 4.禁止向提供Applet之外的任何主机建立网络连接
不能获取某些系统信息,除了Java版本号,操作系统名或版本号,文件分隔符,路径分隔符以及分隔符之外,Applet不能获取本地计算机有管的任何信息,如用户名,电子邮件地址等.
-由一个Applet弹出的窗体外观上与一个Application弹出的窗口不同.