Java基础

2019.7.16
1.当线程完成运行并结束后,将不能再运行。除线程正常运行结束外,还可用其他方法控制其停止。可以用stop()方法强行终止线程,但不提倡使用这种方法,容易造成线程的不一致。可以使用标志flag,通过设置flag通知一个线程应该结束。
2.本题考查的是线程的同步问题。 
    对象锁在如下几种情况下由持有线程返还:
    (1)当synchronized()语句块执行完后。
    (2)当在synchronized()语句块中出现例外(exception)。
    (3)当持有锁的线程调用该对象的wait()方法。此时该线程将释放对象的锁,而被放入对象的wait pool中,等待某事件的发生。
    而suspend()方法只是基本线程控制方法,在一个线程中调用t.suspend(),将使t暂停执行,要想恢复线程,必须由其他线程调用t.resume()恢复t的执行。
3.首先说明一点,在Java语言中,取模运算符%,其操作数可以为浮点数。
    对于二元算术运算符,其表达式结果的类型归纳为以下几类情况:
    (1)操作数全为整型,那么,只要其中有一个为long型,则表达式结果为long型。
    (2)两个操作数全是byte型或short型,表达式结果也为int型。
    (3)操作数为浮点型,只要其中有一个为double型,表达式结果就是double型。
    (4)两个操作数全是float型或其中一个是float型,而另外一个是整型,则表达式结果为float型。
4.Applet是一类非常重要的Java程序,一般来说其嵌入在HTML语言中,它与Application不同之处在于,它必须要通过其它程序调用执行,本身不能被直接解释执行,故A是错的。Applet是java.applet.Applet的子类,如果其采用了swing构件,则是javax.swing.JApplet的子类,在HTML中可以通过<PARAM>标记向Applet传递参数。
5.接口是不包含成员变量和方法实现的抽象类,它只包含常量和方法的定义。接口的主要功能是:
    (1)不管类的层次,可实现互不相关的类具有相同的行为。
    (2)通过接口说明多个类所需实现的方法。
    (3)通过接口可以了解对象的交互界面,无需了解对象所对应的类。
    所以选项A、B、C都是正确的叙述。另外,由于接口不包括任何实现,所以与存储空间没有任何关系。
6.windowOpened是打开窗体后将要执行的方法。windowClosed是关闭窗体后将要执行的方法,windowClosing是在关闭窗体时要执行的方法,该方法可以执行窗体的关闭功能。windowDeactivated是窗体处于非激活时将会执行该方法。因此windowClosing是可以实现窗口关闭操作的方法。
7.正则表达式必须对字符串进行匹配,因此选项A是错误的,对于任一二进制串,正则表达式也无法匹配,对于一个回文字串,正则表达式无法匹配,故选取项A、B、C也都是错误的,对于一个公式,由于其符合3型文法标准,故必能与正则表达式相匹配。
8.在Java1.0中,沙箱对Applet限制根本无法排除,而在Java2中可以通过策略文件来授予Applet所需的权限,该文件可以通过文本编辑器进行编辑,也可以通过图形化工具来编辑。
9.赋值运算符(=)把一个表达式赋给一个变量,在赋值运算符两侧不一致的情况下,如果左侧变量类型的级别高,则右侧的数据被转化为与左侧相同级别的数据类型后赋给左侧变量;否则,需要使用强制类型转换运算符。
    本题中选项D右侧433为int型,而左侧是比它级别低的byte型,且byte型的数据范围是-128~+127
10. Java中对共享数据操作的并发控制是采用传统的封锁技术。一个程序中单独的、并发的线程对同一个对象进行访问的代码段,称为临界区。在Java语言中,临界区可以是一个语句块或是一个方法,并且用"synchronized"关键字标识。
11.由于逻辑运算符"&&"采用的是"短路"方式进行计算的,即若左边表达式为false,则不会再对运算符右边的表达式求值,整个逻辑表达式的结果确定为false。所以对于a&&b,由于a的值为false,所以不需要考虑b的值,直接返回a&&b这个表达式的值为false;而对于整个表达式,又是一个关于&&的运算,所以对整个表达式的值的运算继续采用"短路"的方法,返回false,故布尔型变量c的值为false。
    对于result的结果,由于两个"&"运算符的两侧均为布尔值,故在这里"&"是布尔逻辑运算符,其与普通的逻辑运算符&&相比较,除了&&会发生短路外,其余功能都是相同的。在执行a&b操作时,false & true=false,!b=false,false & false=false,故reslut=false。
12.Java的线程调度策略是一种基于优先级的抢先式调度。这种调度策略的含义是:Java基于线程的优先级选择高优先级的线程进行运行。该线程(当前线程)将持续运行,直到它中止运行或其它更高优先级程成为可运行时。所以选项C的叙述是正确的。在线程的几种基本控制方法中,sleep()方法使比其低的优先级线程运行;yield()方法只让给同优先级运行。所以选项A、B的叙述均是正确的。
    抢先式调度可能是分时的,即每个池中的轮流运行;也可能不是,即线程逐个运行。所以即使具有相同优先级的多个线程的调度也不一定是分时的,它的运行方式是由具体JVM而定的。
13.在Applet程序序中有如下几个方法与其生命周期相关:init()方法用来在加载Applet时完成初始化工作;start()方法用来启动Applet的执行;stop()用来停止Applet的执行,例如,用户离开Applet页面或浏览器;destory()用来完成撤消清理工作,准备卸载。因此在与Applet生命周期相关的方法的数量为四个。
14. Frame继承自java.awt.window类,它们都在java.awt包中,对于Frame而言,其默认的布局管理器为BorderLayout。采用FlowLayout时,当容器内一行中构件布满后,将自动从下行开始;采用BorderLayout,将窗体分成东、南、西、北、中五个部分,在每个部分中可以放置一个构件;采用GridLayout布局时,将以m*n的网格的形式来显示容器中的构件,每个网格中可以放置一个构件;采用CardLayout时将为构件提供卡式界面。另外还有GridBag Layout布局管理器。
15.线性结构与非线性结构都可以是空的数据结构,一个空的数据结构究竟是属于线性结构还是属于非线性结构,这要根据具体情况来确定,所以D选项错误;二叉树是非线性结构中的一种常见结构。二叉树有两个特点:①非空二叉树只有一个根结点,所以C选项错误;②每一个结点最多有两颗子树,且分别称为该结点的左子树与右子树,只有一个根结点和一个叶子结点可以构成一个二叉树,因此它可能是非线性结构,所以B选项错误。
16. 根据数据结构中各数据元素之间前后件关系的复杂程度,一般将数据结构分为两大类型:线性结构与非线性结构。一个非空的数据结构满足下列两个条件:①有且只有一个根结点;②每一个结点最多有一个前件,也最多有一个后件。则该数据结构为线性结构。如果一个数据结构不是线性结构,则称之为非线性结构,所以A选项错误。
    有一个以上根结点的必定是非线性结构。
    有一个以上叶子结点的必定是非线性结构。
17.栈是一种特殊的线性表,是按照"先进后出,后进先出"的原则组织数据的。链式结构则把每一个存储结点分两部分:一部分用于存储数据元素的值,称为数据域;另一部分用于存放下一个元素的序号,称指针域。带链的栈则可以通过指针域的变化改变原有的栈的组织数据原则;而顺序栈的栈底指针不变,栈顶指针改变
    带链栈的栈底指针在操作过程中是有可能改变的。
    顺序栈的栈底指针在操作过程中是固定不变的
18.二叉树的前序遍历步骤为首先访问根结点,然后前序遍历左子树,最后前序遍历右子树。中序遍历步骤为首先中序遍历左子树,然后访问根结点,最后中序遍历右子树。若前序遍历和中序遍历相同,则说明此二叉树每个结点均缺失了左结点,故二叉树每一层均有一个结点存在,所以深度为n。
19.public修饰的方法可被其它类访问或引用。
    2、abstract修饰的方法是抽象方法,抽象方法没有方法体,要使用抽象方法,必须先实现此抽象方法。
    3、final修饰的方法不能被继承。
    4、static修饰的方法为静态方法,静态方法不需要类的实例化就可以被类直接调用。
    故要使得类名AB可以直接调用method()方法,则必须在method()前用static来修饰。
20. 1、Java的源程序代码的扩展名为.java。
    2、Java的编译器和解释器的扩展名为.exe,他们分别是javac.exe、java.exe。
    3、通过Java编译器编译生成的是二进制字节码文件,其扩展名为.class。
    4、调用applet小程序的HTML文件的扩展名为.html或.htm。
21.对程序语言而言,编写程序时出现错误是不可避免的,一般有编译错和运行错两类。Java语言认为那些可预料和不可预料的编译和运行时的出错称为异常。在Java语言中,把异常也作为一种对象,它在程序运行出错时被创建,异常控制是Java语言处理程序出错的有效机制。
22.Applet类提供了生命周期不同阶段响应主要事件的4种方法:
    ①void init(),在Applet被下载时调用,一般用来完成所有必需的初始化操作。
    ②void start(),在Applet初始化之后以及Applet被重新访问时调用。
    ③void stop(),在Applet停止执行时调用。一般发生在Applet所在的Web页被其他页覆盖时调用。
    ④void destroy(),在关闭浏览器Applet从系统中撤出时调用。stop()总是在此前被调用。
23. 在Java语言中,有时一个方法生成一个异常,但该方法并不能确定如何处理此异常,如找不到文件之类的异常,必须将异常传递给调用方法,由调用它的方法来处理,这种时候方法用声明异常抛出,让异常对象可从调用栈向后传递,直至有相应的方法捕获它为止。所以当方法遇到异常又不知如何处理时,应声明异常。
24.增量运算符"++"是将操作数加1。对++x与x++的运算结果均为x=x+1,但若将增量运算表达式再作为其他表达式的操作数使用时,i++与++i是有区别的:i++在使用i之后,使i的值加1,因此执行表达式时是以i的值参加表达式的运算的,执行完后,i本身的值变为i+1;而++i是在使用i之前,使i的值加1,因此执行表达式时是以i+1的值参加运算的,执行完后i自身的值也为i+1。
    另外,对于二元算术运算符"/",其表达式结果的类型归纳为以下几类情况:
    (1)操作数全为整型,那么,只要其中有一个为long型,则表达式结果为long型。
    (2)两个操作数全是byte型或short型,表达式结果也为int型。
    (3)操作数为浮点型,只要其中有一个为double型,表达式结果就是double型。
    (4)两个操作数全是float型或其中一个是float型,而另外一个是整型,则表达式结果为float型。
    对一个复杂表达式进行运算时,要按运算符的优先顺序从高到低进行,同级的运算符则按照在表达式中出现的位置从左到右的方向进行。
    本题y+=z--/++x由于++的运算优先级高于/,所以表达式即为y=2+3/2,固表达式值为3。
25.一个Java Application运行后在系统中作为一个独立的进程参与系统调度,但在该进程中可以通过创建Thread类的实例的方法来创建多个线程。在一个进程中的各个线程之间拥有共同的上下文环境。
26.流,最早从C语言中引入的。其可以看成是一个流动的数据缓冲区。数据从数据源方向经过缓冲区流向数据的目的地。在传送的过程中,其传送方式是串行的。在Java中的java.io包中定义了Java中常见流的接口与类。其中包括两个最基本的流的抽象类,它们分别是OutputStream与InputStream。其余的流都分别从这两个基本类中继承而来。
27. 标识符命名规则为:
    1、标识符是以字母、下划线、美元符($)作为首字符的字符串序列。在首字符后面可以跟字母、下划线、美元符和数字。
    2、标识符区分大小写。
    3、标识符的字符数目没有限制,但为便于阅读和记忆,不宜太长。
    另外要注意的是Java中有一些标识符是具有专门意义和用途的,不允许作为一般的标识符用,它们是保留字。例如本题中的super。
28.Java中常量null,false,true,new,this,const,break都是小写。
29.Applet显示相关的3个方法:
    1、paint()方法:Applet的paint()方法具体执行Applet的绘制,该方法定义如下:
    public void paint(Graphics g)
    paint()方法有一个参数g是Graphics类的实例,该实例对象由浏览器生成,它包含了Applet的图形上下文信息,通过它向Applet中显示信息,该对象相当于Applet的画笔。在调用paint()方法时,由浏览器将该对象传递给paint()方法。
    2、update()方法:
    public void update(Graphics g)
    用于更新Applet的显示。该方法将首先清除背景,再调用paint()方法完成Applet的具体绘制。
    3、repaint()方法:
    public void repaint()
    repaint()方法主要用于Applet的重新显示,它调用update()方法实现对Applet的更新。
30. 随着发展的需要,Swing出现了,Swing组件几乎都是轻量组件,与重量组件相比,没有本地的对等组件,不像重量组件要在它们自己的本地不透明窗体中绘制,轻量组件在它们的重量组件的窗口中绘制。
    Swing是由100%纯Java实现的,Swing组件是用Java实现的轻量级( light-weight)组件,没有本地代码,不依赖操作系统的支持,这是它与AWT组件的最大区别。

11:59 2019/7/20
1.软件测试是为了发现错误而执行程序的过程;在对程序进行了成功的测试之后将进入程序调试(通常称Debug,既排错)。程序调试的任务是诊断和改正程序中的错误。
2.计算机软件(Software)是计算机系统中与硬件相互依存的另一部分,是包括程序、数据及相关文档的完整集合。
3.当switch后面表达式的值与任一case子句中的值都不匹配时,程序执行default后面的语句;break语句用来在执行完一个case分支后,使程序跳出switch语句;若没有break语句,当程序执行完匹配的case语句序列后,继续向下执行,向下执行时,并不与case后面的数据进行比较,而是直接执行下面的所有语句,直到遇到break语句为止。
    switch (m)
{
case 0: System.out.println("Condition 0");
case 1: System.out.println("Condition 1"); 
case 2: System.out.println("Condition 2");
case 3: System.out.println("Condition 3");break;
default: System.out.println("Other Condition"); 
}
当m 的值为______时,下列哪个选项中的所有值都能引起"Condition 1"的输出。
本题中当m的值为0时,输出"Condition 0Condition 1Condition 2Condition 3";当m的值为1时,输出"Condition 1Condition 2Condition 3";当m的值为2时,输出"Condition 2Condition 3";当m的值为3时,输出"Condition 3";当m的值为4时,输出"Other Condition"。
4.Unicode字符集中对一些字符必须用转义字符。转义字符以反斜杠(\)开头,如"\n"表示换行符,"\\"表示反斜杠。
5.1、算术右移运算符>>
    用来将一个数的二进制位序列右移若干位。
    2、算术左移运算符<<
    用来将一个数的二进制位序列左移若干位。
    3、逻辑右移运算符>>>
    用来将一个数的各二进制位添零右移若干位。
6.将Java程序中的对象保存在外存中,称为对象永久化。对象永久化的关键是将它的状态以一种串行格式表示出来,以便以后读该对象时能够把它重构出来。
7.    本题中选项B,C无关键字class,故它们不是类声明。选项A中的两个修饰符不能同时用于修饰同一个类,因为abstract类自身没有具体对象,需要派生出子类后再创建子类的对象;而final类不可能有子类,这样abstract final类就无法使用,也就没有意义了。
8.对JFrame添加构件有两种方式:
    1、用getContentPane()方法获得JFrame的内容面板,再对其加入构件frame.getContentPane().add(childComponent)。
    2、建立一个Jpanel或JDesktopPane之类的中间容器,把构件添加到容器中,再用setContentPane()方法把该容器置为JFrame的内容面板:
    Jpanel contentPane=new Jpanel();
    …//把其他构件添加到Jpanel中
    frame.setContentPane(contentPane);//把contentPane对象设置成为frame的内容面板。
9.在Java中提供了结构化的异常处理功能,其主要是通过try...catch语句来实现的。在Java中可以将可能产生异常的代码放入到try子句中,如果产生异常,将会执行catch子句。如果有多个异常,则应先处理子类异常,再处理父类异常,否则后面的异常处理,将得不到执行。
10.1、public指明变量为公有。
    2、protected指明变量为保护访问。可被同一个包中其他类、不同包中该类的子类以及该类自己访问和引用。
    3、final指明变量为常量。
    4、默认(friendly)即无访问控制符,表示只能被同一个包中的类访问和引用。
11. 在Java中,输入一个字节流时,要实现DataInput接口。该接口定义在java.io包中。处理字节流的DataInputStream类实现了该接口。同时,DataOutput接口提供了字节输出流的功能,RandomAccessFile类实现了DataInput与DataOutput这两种接口。
12.在Java语言中,用abstract修饰符定义的类称为抽象类,在其中的方法称为抽象方法。abstract类必须被继承,abstract方法必须被重写,abstract类不能实例化。
13.Java有两类应用程序,Java Application和Java Applet。它们编译源代码时运用应用程序相同,即javac.exe。
    java.exe是用于Java Application程序解释执行的,若执行成功,显示结果;若执行有错,则显示错误报告。
14. 字符输出流类都是Writer抽象类的子类。
15.Circle类继承Shape类,父类和子类中都只有一个构造方法,公共类Test中的语句"Shape d=new Circle();",表示父类引用d指向子类对象,创建对象时则自动调用构造方法,在调用子类构造方法前先调用父类构造方法,在父类构造方法中执行输出语句输出Shape,然后在子类构造方法中执行输出语句输出Circle。
16.Java的字符类型采用的是Unicode编码方案
ASCII是用8位表示一个字符。
    unicode是用16位表示一个字符,因此unicode中汉字和英文字母占用的空间是一样的
17.Object类是Java程序中所有类的直接或间接父类,也是类库中所有类的父类,处在类层次的最高点。所有其他的类都是从Object类派生出来的。
18.按值传递:指每次传递参数时,把参数的原始数值拷贝一份新的,把新拷贝出来的数值传递到方法内部,在方法内部修改时,修改的是拷贝出来的值,而原始的值不发生改变。
    在Java语言中,对于基本数据类型是按值传递的。在本题中变量percent类型是int,属于按值传递,所以在tripleValue方法内部修改参数的值时percent的原始的值不发生改变。main函数中的输出语句"System.out.println(percent);"输出的是main函数为变量percent的定义的初值,即:10。
19.逻辑右移运算符>>>用来将一个数的各二进制位添零右移若干位,注意它的最高位补的是0,因此本题8>>>2的结果是2。
20.短整型的数据类型的长度是16bits,有符号。另外需要说明的是Java中所有的整(Integer)数(包括byte,short,int,long)全是有符号的。 
21.长整形的表示范围-2^31至2^31-1 Int32
22.选项A、B、C都属于java.io包中的抽象类,其中InputStream是用于处理字节流的抽象类;FilterOutputStream是用于处理过滤流的抽象类;Reader类是用于处理字符流的抽象类;而Serializable是一个接口,用来处理对象流。
23.十六进制数以0x开头,long型数以L(大小写均可,一般使用大写,因为小写的l和数字1不易区分结尾。

18:14 2019/7/21
1.本题考查的是程序的结构中Java Application和Java Applet的区别。
Java语言是一种半编译半解释的语言。Java的用户程序分为两类:Java Application和Java Applet。这两类程序在组成结构和执行机制上都有一定的差异,主要体现在以下几方面:
(1)运行方式不同。Java Application是完整的程序,可以独立运行;Java Applet程序不能单独运行,它必须嵌入到用HTML语言编写的Web页面中,通过与Java兼容的浏览器来控制执行。
(2)运行工具不同。Java Application程序被编译以后,用普通的Java解释器就可以使其边解释边执行,而Java Applet必须通过网络浏览器或者Applet观察器才能执行。
(3)程序结构不同。每个Java Application程序必定含有一个并且只有一个main方法,程序执行时,首先寻找main方法,并以此为入口点开始运行。含有main方法的那个类,常被称为主类,也就是说,Java Application程序都含有一个主类。而Applet程序则没有含main方法的主类,这也正是Applet程序不能独立运行的原因。尽管Applet没有含main方法的主类,但Applet一定有一个从java.applet.Applet派生的类,它是由Java系统提供的。
(4)受到的限制不同。Java Application程序可以设计成能进行各种操作的程序,包括读/写文件的操作,但是 Java Applet 对站点的磁盘文件既不能进行读操作,也不能进行写 操作。然而,由于Applet的引入,使Web页面具有动态多媒体效果和可交互性能,这使由名为超文本、实为纯文本的HTML语言编写成的Web页面真正具有了超文本功能,不但可以显示文本信息,而且还可以有各种图片效果和动态图形效果,从而使页面显得生动美丽;另外,Applet使Web页面增加了按钮等功能,从而增加了交互性。
2.Java Applet的字节码文件必须嵌入HTML的文件中并由负责解释HTML文件的WWW浏览器充当解释器来解释运行。因此Applet不需要main方法,但必须继承java.awt.Applet类或javax.swing.JApplet,因为这两个类实现了Applet程序于浏览器的通讯。
    为了系统的安全,一般情况下Applet程序不能访问本地文件,只有通过授权后才能读写。
3.paint()方法:Applet的paint()方法具体执行Applet的绘制,该方法定义如下:
    public void paint(Graphics g)
paint()方法只有一个参数g是Graphics类的实例,该实例对象由浏览器生成,它包含了Applet的图形上下文信息,通过它向Applet中显示信息,该对象相当于Applet的画笔。在调用paint()方法时,由浏览器将该对象传递给paint()方法。
4.javadoc.exe是Java文档生成器,对Java源文件和包以MML格式产生AP文档。执行命令的格式:javadoc[选项]包名或javadoc[选项]文件名。
5.类加载器(class loader)加载程序运行所需要的所有类,它通过区分本机文件系统的类和网络系统导入的类增加安全性,这可以限制任何的特洛伊木马程序,因为本机类总是先被加载,一旦所有的类被加载完,执行文件的内存划分就固定了,在这个时候特定的内存地址被分配给对应的符号引用,查找表(lookup table)也被建立,由于内存划分发生在运行时,解释器在受限制的代码区增加保护防止未授权的访问;然后字节码校验器(byte code verifier)进行校验,主要执行下面的检查:类符合JVM规范的类文件格式,没有违反访问限制,代码没有造成堆栈的上溢或者下溢,所有操作代码的参数类型都是正确的,没有非法的数据类型转换(例如将整型数转换成对象类型)发生;校验通过的字节码被解释器(interpreter)执行,解释器在必要时通过运行时系统执行对底层硬件的合适调用。
6.public class Example{ 
  String str=new String("good"); 
  char[]ch={'a','b','c'}; 
public static void main(String args[]){ 
  Example ex=new Example(); 
  ex.change(ex.str,ex.ch); 
  System.out.print(ex.str+" and "); 
  System.out.print(ex.ch); 
  } 
public void change(String str,char ch[]){ 
  str="test ok"; 
  ch[0]='g'; 
  } 
}
答案:good and abc
Java语言中,原始数据类型变量是按值传递的,引用类型变量是按地址传递的。
7.在方法中定义的局部变量在方法退出时被自动撤消,只有静态变量不会被撤消。如果未对变量指定修释符,在JAVA中将自动将其设置为局部变量,局部变量也叫自动变量,对于方法外面的变量,将在对象被创建时一起被创建,其初值可通过构造函数对其进行初始化。如果方法中是一个简单类型的形参,由于其是按值传递,在编译时会占用存储空间,直到该对象释放时为止。如果形参为一个类类型,其参数是按地址传递,编译时不会为其分配空间,因此该参变量不会存在于方法中。
8.执行switch开关语句时,将变量逐个与case后的常量进行比较,若与其中一个相等,则执行该常量下的语句,直到遇到break语句才退出switch语句,执行其它的语句。若不与任何一个常量相等,则执行default后面的语句。 
    注意: 
    1、switch中变量可以是数值,也可以是字符。 
    2、可以省略一些case和default。 
    3、每个case或default后的语句可以是语句体,但不需要使用"{"和"}"括起来。
    本题在执行时,第一个遇到的是default语句,即执行它,输出default,再继续向下执行,直到遇到break为止,在继续向下执行的过程中,并不与case后面的数值进行比较。实际上,switch相当于一个开关语句,即遇到与自己匹配的数值就一直向下执行,相当于打开开关,直到遇到break为止,而default语句就相当i==i的一个语句,所以一遇到default语句就会执行。
9.由于Java是强类型语言,String不能和char,int类型变量直接进行对比。但如果char和int两类型在同一个表达式中运算,系统是可以进行自动类型转换的,因此这两个类型的变量可以比较。
10.在java.applet、java.awt、java.awt.image包中,包含了许多图象支持的类和方法。在程序中图像由一个java.Image类的对象来表示。目前Java所支持的图像格式有:GIF、JPEG、和PNG3种。其中PNG格式是JDK1.3以上版本支持的一种光栅图像格式,它的显示方法与其他两格式相同。
11.由于Java在数据类型中,浮点数类型的数据分为float和double两种类型。当数据的末尾加f或F表示float型,当在数据的末尾加d或D时,此数表示double型,若两都不加的话,则默认为double型。
本题中由于0.0是double型的数据,而f是float型的变量,在Java中,优先级高的数据类型不能直接赋值给优先低的数据类型,必须要强制类型转换。这种错误将在程序编译时发现。
12.位运算符包括:>>,<<,>>>,&,︱,^,~。
    "!"是布尔逻辑运算符。
13.由图1可知,异或运算(^)的规则是
0⊕0=0,0⊕1=1
1⊕0=1,1⊕1=0 
13.import javax.swing.*;
     import java.awt.*;
14. 内模式又称为物理模式,它是数据库中全体数据的内部表示或底层描述,它是唯一的,而建立在数据库系统之上的应用则是非常广泛的、多样的,因此外模式不是唯一的,也不可能是唯一的。
15.数据库(Database,简称DB)是数据的集合,它具有统一的结构形式并存放于统一的存储介质内,是多种应用数据的集合,并可被各个应用程序所共享。
长期储存在计算机内、有组织的、可共享的大量数据的集合是数据库;
16.Java Application本身是一个类,该类必须有且只有一个main()方法(不能多载);Java Applet本身不能独立运行,必须由支持Applet的浏览器或其它软件加载运行。但Java Application和Java Applet都是通过javac编译的。
17.Java的单行注释符为//,多行注释符有/*...*/和/**...*/(javadoc能够利用该注释符自动生成帮助文档)。18. java.lang包封装了所有基本类。由Java编译器自动导入。因此,编程时使用该包中的类,可省去import导入。但使用其它包中的类,必须用import导入。
19.如果发生下面几种情况时,线程就进入阻塞状态:线程调用了sleep()方法、join()方法时,线程进入阻塞状态;线程调用wait()方法时,线程由运行状态进入阻塞状态;如果线程中使用synchronized来请求对象的锁未获得时,进入阻塞状态;如果线程中有输入输出操作,也将进入阻塞状态,待输入输出操作结束后,线程进入可运行状态。
20.1、GridLayout布局管理器使容器中各个构件呈网格状布局,平均占据容器的空间。即使容器的大小发生变化,每个构件还是平均占据容器的空间。构件在往容器中放置的时候,是按照从上到下、从左到右的规律进行的。
    2、BorderLayout是Window,Frame和Dialog的默认布局管理器。BorderLayout布局管理器把容器分成5个区域:North,South,East,West和Center,每个区域只能放置一个构件。
    3、FlowLayout是Panel和Applet的默认布局管理器。构件在容器中的放置规律是从上到下、从左到右进行放置,如果容器足够宽,第一个构件先添加到容器中第一行的最左边,后续的构件依次添加到上一个构件的右边,如果当前行已放置不下该构件,则放置到下一行的最左边。构件的大小不随容器的大小改变而改变。
    4、CardLayout布局管理器能够帮助用户处理两个以至更多的成员共享同一显示空间,它把容器分成许多层,每层的显示空间占据整个容器的大小,但是每层只允许放置一个构件
21.synchronized关键字可用来检测和获得对象锁,并设定临界区。为了防止对共享数据的访问发生错误,应该将访问共享数据的代码使用synchronized关键字设置成临界区。这样加锁进行保护。
    用synchronized保护的共享数据必须是私有的,将共享数据定义为私有的,使线程不能直接访问这些数据,必须通过对象的方法。
22. 由于数组arr声明时未用static关键字,而main()方法直接引用arr(而非通过Person的实例引用),将产生"非静态变量不能从静态上下文中引用"(non-static variable cannot be referenced from a static context)的编译错误。
23.Java语言中线程的优先级是用一个介于MIN_PRIORITY 和MAX_PRIORITY之间的整数来表示的。可以在创建线程后的任何时候修改线程的优先级。
    故本题答案为C。
线程的优先级是在创建线程时设置的是不对的
24.char类型数据是用无符号16位二进制表示的,故其取值范围为0~216-1。
25.length不是方法,是属性,数组的属性;
     length()是字符串String的一个方法;
     size()方法,是List集合的一个方法;


13:31 2019/7/24
1.文件操作中经常需要的是随机访问,Java中的RandomAccessFile类提供随机访问文件的功能,其中的seek方法实现了查找随机文件记录的功能,格式如下:
    void seek( long pos ); //用于移动文件指针到指定的位置
2.Java平台为了防范恶意程序的攻击,使用了安全管理器,安全管理器执行系统资源的访问控制。许多浏览器为了保护本地主机,对Applet作了如下安全限制:
    1)Applet不能运行任何本地可运作程序。
    2)禁止加载本地库或方法。Applet只能使用自身的代码或Applet浏览器提供的Java API。
    3)禁止读、写本地计算机的文件系统。
    4)禁止向提供Applet之外的任何主机建立网络连接等等。
3.Java的图形用户界面的最基本的组成部分就是构件(Component),构件是一个可以以图形化的方式显示在屏幕上并能与用户交互的对象,但构件不能独立地显示出来,必须将构件放在一定的容器中才可以显示出来。
    容器Container是一个类,因为容器本身也是一个构件,具有构件的所有性质,因此继承之Component类。
4. Java中的线程是有优先级的,选项A正确。新建线程将继承创建它的父线程的优先级,选项B正确。Java的线程调度策略是一种基于优先级的抢先式调度,这种调度策略的含义是:Java基于线程的优先级选择高优先级的线程进行运行。该线程(当前线程)将持续运行,直到它终止运行,或其他高优先级线程成为可运行的。在后一种情况,低优先级线程被高优先级线程抢占运行。选项C正确。
5. InputStreamReader是字节流通向字符流的桥梁,它的构造方法:InputStreamReader(InputStream in),创建一个使用默认字符集的InputStreamReader。
    FileInputStream的构造方法:FileInputStream(File file),用来从文件中读取字节流。
    因此,创建一个InputStreamReader对象为"new InputStreamReader(new FileInputStream("hello.txt"));"。
6.文件File是java.io包中的一个重要的非流类,以一种系统无关的方式表示一个文件对象的属性。通过File所提供的方法,可以得到文件或文件夹的描述信息(包括名字、路径、长度、可读、可写等),也可以生成新文件、文件夹,修改文件和文件夹,查询文件属性,重命名文件或者删除文件。File描述了文件本身的属性,File类中封装了对文件系统进行操作的功能。简单说,File类所关心的是文件在磁盘上的存储,而要对文件进行读写,就是流类所关心的文件内容,应该掌握相关概念以及相关方法。
7. FlowLayout是java.applet.Applet、java.awt.Panel 和javax.swing.JPanel的缺省布局管理器;而BorderLayout是Window、Frame和Dialog的默认布局管理器。
8. Java中的流分为两种,一种是字节流,另一种是字符流,分别由四个抽象类来表示(每种流包括输入和输出两种,所以一共四个):InputStream,OutputStream,Reader,Writer。Java中其他多种多样变化的流均是由它们派生出来的。
    在这其中InputStream和OutputStream在早期的Java版本中就已经存在了,它们是基于字节流的,而基于字符流的Reader和Writer是后来加入作为补充的。在这四个抽象类中,InputStream和Reader定义了完全相同的接口:
9. 在Swing中用轻量级的构件替代了AWT中的重量级的构件,而且Swing的替代构件中都包含有一些其他的特性。与AWT构件不同,Swing构件不能直接添加到顶层容器中,它必须添加到一个与Swing顶层容器相关联的内容面板(contentPane)上。
10.新线程态(New Thread):产生一个Thread对象就生成一个新线程,当线程处于"新线程"状态时,仅仅是一个空线程对象,它还没有分配到系统资源,因此只能启动或终止它,任何其他操作都会引发异常。 
  可运行态(Runnable):start()方法产生运行线程所必须的资源,调度线程执行,并且调用线程的run()方法,在这时线程处于可运行态,该状态不称为运行态是因为这时的线程并不总是一直占用处理机。特别是对于只有一个处理机的PC而言,任何时刻只能有一个处于可运行态的线程占用处理机。Java通过调度来实现多线程对处理机的共享。
11. 1)Java中对共享数据操作的并发控制是采用传统的封锁技术。一个程序中单独的、并发的线程对同一个对象进行访问的代码段,称为临界区。在Java语言中,临界区可以是一个语句块或是一个方法,并且用"synchronized"关键字标识。Java平台将每个由synchronized(Object)语句指定的对象设置一个锁,称为对象锁。
    2)共享数据的所有访问都必须作为临界区,使用"synchronized"进行加锁控制。用"synchronized"保护的数据也必须是私有的,使线程不能直接访问这些数据,必须通过对象的方法。
    3)Java中没有检测与避免死锁的专门机制,因此完全由程序进行控制,防止死锁的发生。
    4)有时,某个线程进入"synchronized"块后,共享数据的状态并不一定满足线程的需要,它要等待其他线程将共享数据改变为它需要的状态后才能继续执行,但由于此时它占有了该对象的锁,其他线程无法对共享数据进行操作,为此Java引入wait()和notify(),这两个方法使java.lang.object类的方法,使实现线程通信的两个方法
12. 自定义表格类中的model部分应实现接口AbstractTableModel。
13. 表达式expression只能返回这个几种类型的值:int、byte、short和char。多分支语句把表达式返回的值依次与每个case子句中的值相比较,如果遇到匹配的值,则执行该case子句后的语句序列。
double不行
14.详细设计使用的工具主要有:程序流程图,N-S图,PAD,HIPO。
    结构化分析的常用工具有:数据流图(DFD)、数据字典(DD)、判定树和判定表等。
15.详细设计使用的工具主要有:程序流程图,N-S图,PAD,HIPO。
    结构化分析的常用工具有:数据流图(DFD)、数据字典(DD)、判定树和判定表等。
16.由于公共变量在获取与设置时,不能够进行有效的安全性检查,在java中的一般做法是将其设置成私有变量,然后通过接口方法对这些变量进行读取或赋值,这样就可以检查用户所赋的值或在返回用户所需要的值时执行必要的代码。
17.本题考察的是APPLET标记。
    PARAM:在HTML文件中定义参数;
    CODEBASE=codebaseURL:这个可选的属性指定Applet的URL地址,该URL是包含了Applet代码的目录。如果这个属性没有给出,就采用<APPLET>标记所在的HTML文件URL地址;
    ALT=alternateText。这个可选属性指定了一些文字,当浏览器能够理解<Applet>标记但不能运行Java Applet时,将显示这些文字。
18.J2ME是为嵌入式和移动设备提供的Java平台,它的体系结构由Profiles 、Configuration 和 Optional Packages组成。
19.算术右移运算符">>"用来将一个数的二进制位序列右移若干位,移到右端的低位被舍弃,最高位则移入原来高位的值。右移一位相当于除2取商。本题要求将89右移一位,用除法方法即为89/2,取其商44,用二进制位移的方法则先将89转换为二进制数,结果为:0101 1001,将结果进行右移一位操作,得到结果:0010 1100,将其转换成十进制数得到答案:44。

19:47 2019/8/3
1.白盒测试把测试对象看作一个打开的盒子,允许测试人员利用程序内部的逻辑结构及有关信息来设计或选择测试用例,对程序所有的逻辑路径进行测试。白盒测试从检查程序的逻辑着手,可以把白盒测试理解为"内行人"进行软件测试。逻辑覆盖是泛指一系列以程序内部的逻辑结构为基础的测试用例技术,程序中的逻辑表示有判断、分支、选择等。等价类划分法、因果图法和错误推测法是对软件已经实现的功能是否满足需求进行测试和验证,属于黑盒测试。
2.软件测试是保证软件质量的重要手段,其主要过程涵盖了整个软件生命期的过程。
    软件测试的目的:1)软件测试是为了发现错误而执行程序的过程;2)一个好的测试用例是指很可能找到迄今为止尚未发现的错误的用例;3)一个成功的测试是发现了至今尚未发现的错误的测试。
    软件测试的准则:1)所有的测试都应追溯到需求;2)严格执行测试计划,排除测试的随意性;3)充分注意测试中的群集现象;4)程序员应避免检查自己的程序;5)穷举测试不可能;6)妥善保存测试计划、测试用例、出错统计和最终分析报告,为维护提供方便。
3.java.lang包:封装所有编程应用的基本类。
    java.util包:提供实用程序类和集合类。
    java.applet包:为Applet提供执行需要的所有类,主要是访问Applet内容的通信类。
    java.rmi包:提供程序远程方法调用所需的类。
4.  FileInputStream可对一个磁盘文件涉及的数据进行处理。处理二进制数据不可以使用BufferedReader,否则提取的数据将不会保持原样。所以,此时需要FileInputStream类。
5.对于复合数据类型数据的"=="运算,其作用是比较两个操作数是否是同一个对象,在题目中就是要比较s1和s2是否为同一个对象,虽然s1和s2的值都是"how are you",但是它们却是不同的对象,因此"=="运算后的结果是flase。如果需要比较两个对象的值是否相同,则可以调用equals()方法。
6.布尔型数据只有两个值:true(真)和false(假),它不对应任何数值,因此,它不能与数字进行相互转换。
    布尔型变量定义举例如下:
    boolean value = true;    //定义value变量为布尔型,初值为true
7.通过AppletContext的showDocument()方法,Applet可以通知浏览器在哪个窗口中显示哪个URL中的文件。
8. Java的命名约定的基本原则如下:
    (1)_、$不作为变量名、方法名开头。
    (2)变量名、方法名首单词小写,其余单词只有首字母大写。如myVariable,myMethod。
    (3)接口名、类名的单词首字母大写。如MyInterface,MyClass。
    (4)常量名的每个字母都大写。
    (5)Java包的名字都是由小写单词组成。
9.在init()方法完成后,将调用start()方法,使Applet成为激活状态。Applet的生命周期中各方法的调用次序为:init()、start()、stop()、destroy()(其中start()和stop()可重复执行)。
10.Applet的安全限制:
    1)Applet不能运行任何本地可运行程序;
    2)禁止加载本地库或方法。Applet只能使用自身的代码或Applet浏览器提供的Java API;
    3)禁止读、写本地计算机的文件系统;15
    4)禁止向提供Applet之外的任何主机建立网络连接;
    5)不能读取某些系统信息;(通常情况下,禁止Applet读取系统信息这个说法不对错在进制)
    6)由一个Applet弹出的窗口外观上与一个Application弹出的窗口不同,Applet弹出的窗口中将会有警告提示信息,以帮助用户区分Applet窗口与可信的Application窗口。
11.-g:输出文件中加行号及局部变量信息,为调试程序时用;
    -d:指定存放生成的类(.class)文件的位置;
    -verbose:显示源代码文件和字节码文件的相关信息;
    -nowarn:关闭警告信息,只显示错误信息。
12.单行文本输入区(TextField)是AWT构件库中的基本构件之一,ActionListener、FocusListener、MouseMotionListener都属于AWT事件监听器,而ChangeListener属于Swing事件监听器。
    ChangeListener事件监听器可以处理的事件源有AbstractButton、DefaultCaret、JProgessBar、JSlider、JTabbedPane、JViewport
13.yield():调用该方法后,可以使具有与当前线程相同优先级的线程有运行的机会。
14. bin目录下有编译器、解释器和许多工具(如服务器工具、IDL、package工具和jdb等)。
    demo目录下有各种演示例子。
    lib目录下都是库文件。
    jre目录是Java程序运行用环境的根目录,它下面有bin子目录,包括平台所用工具和库的可执行文件和DLL文件;lib子目录,包括java运行环境的代码库、属性设置和资源文件,默认安装目录,安全管理。
15.Applet是能够嵌入HTML语言中,并能够在浏览器中运行的类。Applet的运行环境是Web浏览器,所以必须建立HTML文件,告诉浏览器如何加载与运行Applet。因此Applet是不能直接通过Java命令行启动运行的。
-----------------Java Application与Applet所用编译命令相同------------------------
16.线程与进程在概念上是相关的。进程是由代码、数据、内核状态和一组寄存器组成,而线程是由表示程序运行状态的寄存器,如程序计数器、栈指针以及堆栈组成,线程不包含进程地址空间中的代码和数据。
    多个线程之间可共享数据,例如:当两个线程访问同一对象时,将共享数据。
    线程创建有两种方法:1、通过实现Runnable接口创建线程;2、通过继承Thread类创建线程。
    当多个线程并发执行时,虽然各个线程中语句的执行顺序是确定的,但线程的相对执行顺序是不确定的,在有些情况下,如多线程对共享数据操作时,这种线程运行顺序的不确定性将会产生执行结果的不确定性,使共享数据的一致性被破坏,因此在某些应用程序中必须对线程的并发操作进行控制。

22:12 2019/8/4
1.软件根据应用目标的不同,是多种多样的。软件按照功能可以分为:应用软件、系统软件、支撑软件(工具软件)。应用软件是为解决特定领域的应用而开发的软件。如:数据库管理系统、财务管理系统;系统软件是计算机管理自身资源,提高计算机使用效率并为计算机用户提供各种服务的软件。如:操作系统;支撑软件是介于系统软件和应用之间,协助用户开发软件的工具性软件,包括辅助和支持开发和维护应用软件的工具软件,如需求分析工具软件,设计工具软件,编码工具软件,测试工具软件,维护工具软件等,也包括辅助管理人员控制开发进程和项目管理的工具软件。
2.数据模型的三个要素是数据结构、数据操作、数据约束。
    关系的完整性包括实体完整性、参照完整性、用户自定义完整性。
    数据库系统的三级模式包括外模式、概念模式、内模式
3.结构图的深度表示控制的层数。同一层上所有结点的所有子结点都在下一层,该系统结构共三层,系统深度就为3。
4.算法的时间复杂度,是指执行算法所需要的计算工作量。在度量一个算法的工作量时,不仅应该与所使用的计算机、程序设计语言以及程序编制者无关,而且还应该与算法实现过程中的许多细节无关。为此,可以用算法在执行过程中所需基本运算的执行次数来度量算法的工作量。对于一个固定的规模,算法所执行的基本运算次数还可能与特定的输入有关。
5.算法的时间复杂度,是指执行算法所需要的计算工作量。在度量一个算法的工作量时,不仅应该与所使用的计算机、程序设计语言以及程序编制者无关,而且还应该与算法实现过程中的许多细节无关。为此,可以用算法在执行过程中所需基本运算的执行次数来度量算法的工作量。对于一个固定的规模,算法所执行的基本运算次数还可能与特定的输入有关。
6.Applet事件处理机制与Java Application相同,采用监听器方式,JApplet也是采用相同的技术。
7.javac.exe:Java编译器,能将源代码编译成字节码,以.class扩展名存入java工作目录中。
    javadoc.exe:Java文档生成器,对Java源文件和包以MML格式产生AP文档。
    javaprof.exe:Java剖析工具,提供解释器剖析信息。
    javap.exe:Java类分解器,对.class文件提供字节代码反汇编,并打印。
8.Applet是工作在图形方式下的,向Applet中绘图、显示字符串,都要用paint()方法,paint()方法具体执行Applet的绘制功能。init()方法实现设置布局管理器、数据初始化、放置一些构件等功能,该方法在Applet运行时首先由浏览器调用,使Applet执行一些基本初始化。start()方法使Applet成为激活状态,该方法在Applet每次显示时都要调用。paintComponent()方法位于JComponent类,该方法与paint()方法类似,但通常在Swing中使用其绘图。
9.  -D:定义属性名;
    -debug:将程序连接到调试器;
    -verbosegc:无用单元收集器每释放一次内存,打印一条信息;
    -mx:分配最大内存值。
10.按钮是一个常用构件,Swing的按钮(JButton)和标签可显示图标和文本,而AWT的按钮(Button)和标签只能显示文本。在构件方面,与AWT构件不同,Swing构件不能直接添加到顶层容器中,它必须添加到一个与Swing顶层容器相关联的内容面板上。
11.FlowLayout是Panel和Applet的默认布局管理器。
12.向JApplet中增加构件,是把构件添加到Swing Applet的内容面板中;对JApplet设置布局管理器,是对Swing Applet的内容面板进行设置,Swing Applet的内容面板的默认布局管理器是BorderLayout,所以,JApplet的内容面板的默认布局管理器是BorderLayout;而Applet的默认布局管理器是FlowLayout。
13.先将a自动转换为int类型后再运算,在ASCII码中,a对应的值是97,字符型的a转换为整型为97,所以aa=197;然后再将aa转为long类型后再运算,得出yy=456-197=259。
14.Javah,生成C头文件和Stub文件;
    Javap,Java类文件解析器,用于解析类文件;
    Jar,Java类文件归档命令,可将多个文件合并为单个JAR归档文件;
    Java,Java语言的解释器,解释运行Java字节码。
15.Java对I/O访问所提供的同步处理机制是过滤流。一般,使用一个过滤流要求首先把过滤流连接到某个I/O流上,再通过构造方法的参数去指定连接的I/O流
16.如果程序中多个线程互相等待对方所持有的锁,而在得到对方锁之前都不会释放自己的锁,这就造成了双方都无法得到想得到资源,线程不能继续运行,这就是死锁。Java中没有检测与避免死锁的专门机制,为了避免死锁,应用程序可以采用的一般做法是:如果程序要访问多个共享数据,则首先要从全局考虑定义一个获得锁的顺序,并且在整个程序中都遵守这个顺序。解锁时,要按加锁的反序释放。
17.本题考的是Java与C++的比较。
    在不同的平台上,Java有不同的JVM,使Java字节码可以跨越平台的限制,在不同的平台上运行。但C++程序不具备平台独立性。
18.本题考的是Applet的安全限制。
    许多浏览器为了保护本地主机,对Applet作了如下安全限制:
    1、Applet不能运行任何本地可运行程序;
    2、禁止加载本地库或方法;
    3、禁止读、写本地计算机的文件系统;
    4、禁止向提供Applet之外的任何主机建立网络连接;
    5、不能读取某些系统信息,除了Java版本号、操作系统名或版本号、文件分隔符、路径分隔        符以及行分隔符之外,Applet不能获得与本地计算机有关的任何信息,如:用户名        、电子邮件    地址等;
    6、由一个Applet弹出的窗口外观上与一个Application弹出的窗口不同,Applet弹出的窗口中        将会有警告提示信息,以帮助用户区分Applet窗口与可信的Application窗口。
19.public class Person{
   int[] arr=new int[9];
   public static void main(String[] args){
     System.out.println(arr[10]);
   }
}
该程序编译时将产生错误。本题main方法是静态方法,静态方法只可以访问这个类中的静态成员,而数组arr是非静态成员。如果要在静态方法中,访问动态成员,那么首先要在这个方法中进行实例化,然后通过具体的对象来访问。
15:46 2019/8/5
1.完全二叉树的结点总数为2n,是偶数。可知该完全二叉树并不是满二叉树,即度为1的结点数为1。由二叉树的性质3可知,叶子结点n0总是比度为2的结点n2多一个,所以2n=n0+n2+1=n0+(n0-1)+1=2n0,所以叶子节点数为n。
2.在长度为n的顺序表中查找一个元素,假设需要查找的元素有一半的机会在表中,并且如果元素在表中,则出现在表中每个位置上的可能性是相同的。则在平均情况下需要比较的次数大约为______。
因为需要查找的元素有一半机会在表中,所以二分之一的情况下平均比较次数为n/2,另二分之一的情况下平均比较次数为n。总的平均比较次数为(n/2+n)/2=3n/4。
3.队列的顺序存储结构一般采用循环队列的形式。线性链表的插入删除运算过程中,对于空表和对第一个结点的处理必须单独考虑,使空表与非空表的运算不统一。为了克服这个缺点,可以采用另一种链接方式,即循环链表。
4.在一个类的内部嵌套定义的类称为内部类(Inner Class)。与普通类一样,内部类也具有自己的成员变量和成员方法。同样可以通过建立内部类的对象,去访问其他成员变量和调用其他成员方法。但是不同的是:
    (1)内部类的类名只能在定义它的类、程序段或在表达式内部匿名使用,外部使用他时必须给出类的全名。而且,内部类的类名不允许与包含它的类名相同。
    (2)内部类可以使用它所在类的静态成员变量和实例成员变量,也可以使用它所在类的方法中的局部变量。
    (3)内部类可用abstract修饰定义为抽象类,也可用private或protected定义。
    (4)内部类可作为其他类的成员,而且可访问它所在类的成员。
    (5)除static内部类外,不能在类内声明static成员。一旦内部类声明为static,就变成顶层类,不能再使用局部变量。这时可声明static成员。
5.如果用户定义的Applet类中没有init()方法,则该程序______。可以通过编译,并且能够正常运行
Applet的关键方法init(),Applet运行时,首先由浏览器调用init()方法,通知该Applet已被加载到浏览器中,使Applet执行一些基本初始化。该方法经常被重写,实现设置布局管理器、数据初始化、放置一些构件等功能。但是,每个Applet必须至少实现init()、start()和paint()中的一个方法。
6.将Applet嵌入在htm1文件中,必须使用特殊的htm1标记<Applet>,实现Applet的运行。该标记中必须定义CODE、WIDTH和HEIGHT三个属性。CODE属性指定包含Applet字节码的文件名;WIDTH和HEIGHT属性定义了Applet显示区以像素为单位ide高度和宽度。
7. yield()方法:调用该方法后,可以使具有与当前线程相同优先级的线程有运行的机会。如果有其他的线程与当前线程具有相同的优先级并且是可运行的,该方法将把调用yield()方法的线程放入可运行的线程池,并允许其他线程运行。所以A选项不正确。
    start()方法不会自动运行,它是在新进程创建后调用的,所以也不选B。
    wait()方法和notify()方法在线程交互时使用,线程调用wait()方法时,线程由运行状态进入阻塞状态;当线程调用notify()方法时,则对象的wait pool中的一个线程将移入lock pool,在lock pool中线程将等待锁,一旦获得便可运行。
8.Applet除了java程序的文件外,还有嵌入的Web页的HTML文件,其中关键是在<APPLET>和</APPLET>标记中的CODE:指明要嵌入HTML中的java字节码文件名以及Web页窗口的宽和高的尺寸。public void paint(Graphics g)是方法声明,Applet程序通过paint()方法向窗口输出,它要求g为参数。
<APPLET CODE="______" WIDTH=150 HEIGHT=25>
9.System类是一个final类,它不能被继承,同时它又是一个抽象类,所以也是一个不能被实例化的类,它主要提供标准输入输出、错误输出流、对外部定义的属性及环境变量的访问、加载文件和库的方法、还有快速复制数组的一部分的实用方法。
10.在Java语言中,有时一个方法生成一个异常,但该方法并不能确定如何处理异常,如找不到文件之类的异常,必须将异常传递给调用方法,由调用它的方法来处理,这时候方法用声明异常抛出,让异常对象可从调用栈向后传递,直到有相应的方法捕获它为止。
    sleep()方法是使一个线程暂停运行一段固定的时间。在休眠时间内,线程将不运行。当一个线程正在等待、休眠或暂停了较长时间,而另一个线程用Thread类中的interrupt方法中断它时抛出该异常。 
11.线程的生命周期主要分为如下几个状态:新建状态、可运行状态、运行状态、阻塞状态、终止状态。
    假设当前线程处于运行状态,则会改变线程当前状态的操作总结如下:
    (1)当前线程执行了yield(),或当前线程因调度策略(执行过程中,有一个更高优先级的线程进入可运行状态,这个线程立即被调度执行,当前线程占有的CPU被抢占;或在分时方式时,当前执行线程执行完当前时间片)从而导致当前线程进入可运行状态。
    (2)线程调用了sleep()方法、join()方法、wait()方法时,线程进入阻塞状态。
    其中yield()方法的作用是暂停当前线程的执行,从而允许与它具有相同优先级的线程执行,如果不存在可执行且与它同优先级的线程,则继续执行当前线程。
    当某线程需要在synchronized块中等待共享数据状态改变时,调用wait()方法,这样该线程等待并暂时释放共享数据对象的锁,其它线程可以获得该对象的锁,并进入synchronized块对共享数据进行操作,而此线程则放入wait pool中,转入阻塞状态,当其它线程对共享数据操作完后,只要调用notify()方法就可以通知正在等待的线程重新占有锁,并运行。
    sleep方法的作用是让当前线程处于休眠状态,并持续一定的时间,该时间的长短由sleep()方法的参数决定。sleep()方法结束后,线程将进入可运行状态。
    而isAlive()方法的作用是测试线程,以确定线程是否活着。此方法并不会改变线程生命周期中的状态。
下列方法调用后,将会改变线程生命周期状态的是______。 join() 和sleep()
12.paint()方法有一个参数g是Graphics类的实例,该实例对象由浏览器生成,它包含了Applet的图形上下文信息,通过它向Applet中显示信息,该对象相当于Applet的画笔。在调用paint()方法时,由浏览器将该对象传递给paint()方法。
    update()方法格式:public void update(Graphics g)
用于更新Applet的显示。该方法将首先清除背景,再调用paint()方法完成Applet的具体绘制。用户定义的Applet一般不用重写该方法。
    drawString()方法格式:public abstract void drawString(String str,int x,int y),此方法是Graphics类显示文本方法的一种。
    drawLine画线:此方法是Graphics类绘制图形方法的一种。
13.Java语言为一些Listener接口提供适配器(Adapter)类。可以通过继承事件所对应的Adapter类,重写需要的方法,无关方法不用实现。
    事件适配器--EventAdapter。
    java.awt.event包中定义的事件适配器包括以下几个:
    ComponentAdapter:构件适配器
    ContainerAdapter:容器适配器
    FocusAdapter:焦点适配器
    KeyAdapter:键盘适配器
    MouseAdapter:鼠标适配器
    MouseMotionAdapter:鼠标运动适配器
    WindowAdapter:窗口适配器
14.只要是一个类而且继承自object,那么这个类就会继承Object的toString方法,功能是将类型转换为其字符串表示形式,使它适合于显示,重写一个类的toString方法,在实例化这个方法时,System.out.println(实例对象的引用);就会按照重写的toString方法展示这个对象的信息(执行重写的toString,也就相当于System.out.println(实例对象的引用.toString()))

14:46 2019/8/7
1.栈是限定在一端进行插入与删除的线性表。栈有向上生长堆栈和向下生长堆栈之分,当栈是倒着压的时候,存放一个元素之后 ,top=m+1-1=m,存两个元素之后,top=m+1-2=m-1,因此当top=0时,栈中有m+1个元素,而栈的顺序存储空间为 S(1:m),最多只能存放m个元素。
2.在初始状态为front=rear=NULL的带链队列入队时,如果插入的结点既是队首结点又是队尾结点,则rear和front同时指向这个结点;否则在循环队列的队尾加入一个新元素,rear指向新增结点的数据域,rear+1,front不变。退队时,在循环队列的排头位置退出一个元素并赋给指定的变量,front指向第二个结点的数据域,front+1,rear不变。当front=rear=10时,front和rear同时指向这个唯一元素,所以该队列中的元素个数为1。
3.法的时间复杂度,是指执行算法所需要的计算工作量。不仅应该与所使用的计算机、程序设计语言以及程序编制者无关,而且还应该与算法实现过程中的许多细节无关。为此,可以用算法在执行过程中所需基本运算的执行次数来度量算法的工作量。
    算法的空间复杂度,一般是指执行这个算法所需要的内存空间。一个算法所占用的存储空间包括算法程序所占的空间,输入的初始数据所占的存储空间以及算法执行过程中所需要的额外空间。在许多实际问题中,通常采用压缩存储技术,以便尽量减少不必要的额外空间。
4.如果一个非空的数据结构满足下列两个条件:1)有且只有一个根节点;2)每一个结点最多有一个前件,也最多有一个后件。则称该数据结构为线性结构。如果一个数据结构不是线性结构,则称之为非线性结构。
    数据结构B=(D, R)中,每一个结点均有一个前件,不符合“有且只有一个根节点”的条件,所以为非线性结构。
5.堆排序在最坏的情况下需要比较nlog2n次,快速排序在最坏情况下需要比较n(n-1)/2,顺序查找在最坏的情况下需要比较n次;在长度为n的顺序表中寻找最大项时,比较次数最少为1,最多为n-1。
6.Swing继续沿用AWT中的布局管理器,包括FlowLayout、BorderLayout、CardLayout、GridLayout、GridBagLayout,另外Swing新增加了一个BoxLayout布局管理器。
7.接口是一种只含有抽象方法或常量的一种特殊的抽象类,它不包含成员变量和方法实现。
8. 一个程序中单独的、并发的线程对同一个对象进行访问的代码段,称为临界区(Critical Sections)。在Java语言中,临界区可以是一个语句块或是一个方法,并且用"synchronized"关键字标识。Java平台将每个由synchronized(Object)语句指定的对象设置一个锁,成为对象锁(monitor),其是一种独占的排他锁(exclusive locks),这种锁的含义是,当一个线程获得了对象锁后,便拥有该对象的操作权,其他任何线程不能对该对象进行任何操作。
public void push(int i){
  synchronized(this){
    data[idx]=i;
    idx++;
  }
9.在对象串行化时,不保存对象所属类的构造方法
10.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);
11.包的名字应该都是由小写单词组成。它们全都是小写字母,即便中间的单词亦是如此,所以A选项错误。
    类名的第一个字母一定要大写,所以B选项错误;
    变量的第一个字母应该为小写,所以C选项错误;
    与属性相对应的get、set方法为:set(get)+属性名,属性名第一个字母为大写,所以D选项正确。
12.在Applet中有丰富的多媒体支持功能,主要包括显示图像、动画和声音。
    在程序中图像由一个java.Image类的对象来表示。在Applet中加载图像使用Applet类提供的getImage()方法,获得包含该图像的一个Image类的对象。显示图像使用的是Graphics类的drawImage()方法,Graphics类定义了4种drawImage()方法,它们都返回一个布尔值,如果图像完全加载并且显示出来返回true,否则返回false。
13.选项D中,变量b的数据类型为byte型,只有8位,能表示数据的范围为-128~+127,而257已超过byte型所能表示的数据范围,故D选项错误。
14.通过Runable接口实现多线程的方法是首先设计一个实现Runnable接口的类,然后根据工作需要重新设计线程的run方法;再建立该类的对象,以此对象为参数建立Thread类的对象;调用Thread类对象的start方法启动线程,将执行权转交到run方法。
    根据"public class Test implements Runnable"可以判断出下划线处填入"Thread t=new Thread(new Test());"。
15.19/3:该表达式中19与3都是整型,所以默认其运算结果也是整型,19除以3的结果取整数为6;
    (int)71.7-2*3:尽管该表达式中71.1是一个浮点数,但通过"(int)"强制转换,该表达式的结果为整型,答案为65;
    7%3:"%"为模数除,也就是求余,7除以3的余数为1;
    (double)1/8+3:该表达式中的三个数均为整型,但是通过"(double)"数据类型强制转换为双精度型,1/8=0.125,0.125+3=3.125,结果保留小数位,所以答案为:3.125。
16.Java中如果将一个浮点类型强制转换成整数时,Java是不会进行四舍五入的操作的,而是直接将浮点数的小数部分全部删除。

20:09 2019/8/9
1.short类型数据存储时占16位bit,表示的数据范围是-32768 ~ +32767。
2. 在JDK目录结构中,lib目录下存放的都是库文件,而bin目录下有编译器、解释器和许多工具(如服务器工具、IDL、package工具和jdb等)。
3.public class Test implements Runnable{
  public void run(Thread t){
    System.out.println("Running.");
  }
public static void main(String[] args){
  Thread tt=new Thread(new Test());
    tt.start();
  }
}
代码运行结果是______。
程序第2行将出现一个编译错误,程序运行提示:Test不是抽象类,并且未覆盖java.lang.Runnable中的抽象方法run()。
4.接口是一种只含有抽象方法或常量的一种特殊的抽象类,因为接口不包括任何实现,所以与存储空间没有任何关系。
5.AWT布局管理器的相关类主要包括:FlowLayout、GridLayout、CardLayout、GridBagLayout等。BoxLayout是Swing新增加的一个布局管理器。
6.当浏览器重新返回Applet所在页面时,Applet类的start()方法将被调用。
7.本题考查的是线程间的交互。
    Java引入的wait()和notify(),是Java.lang.object类的方法,是实现线程通信的两个方法。
8.组件.addActionListener()方法是用来注册监听器的,根据组件.addActionListener(this)可知应该
是public class Java_3implements ActionListener{
    
    //ActionListener这个接口的抽象方法是
public void actionPerformed(ActionEvent e){
}
}

17:31 2019/8/10
1.如果一个非空的数据结构满足下列两个条件:1)有且只有一个根节点;2)每一个结点最多有一个前件,也最多有一个后件。则称该数据结构为线性结构。如果一个数据结构不是线性结构,则称之为非线性结构。
    在链式存储结构中,每个结点指针域中的指针用于指向该结点的前件或后件。在用链式结构表示非线性结构时,其指针域的个数要多一些。并不能确定有多个指针域的链表是线性结构还是非线性结构。
具有两个根结点的数据结构一定属于非线性结构
具有两个以上叶子结点的数据结构一定属于非线性结构
具有一个根结点且只有一个叶子结点的数据结构也可能是非线性结构
2. 循环链表有一下两种特点:
    (1)增加了一个表头结点,其数据域为任意或者根据需要来设置,指针域指向线性表的第一个元素的结点。循环链表的头指针指向表头结点。
    (2)循环链表种最后一个结点的指针域不是空,而是指向表头结点。
3.冒泡排序中,在互换两个相邻元素时只能消除一个逆序。快速排序中,一次交换可以消除多个逆序。
4. Java中的线程模型包含3部分:
    1、一个虚拟的CPU。
    2、该CPU执行的代码。
    3、代码所操作的数据。
5.短路:在逻辑表达式中,如果能通过逻辑运算符左边表达式的值就能推算出整个表达式的值,那么将不再执行逻辑运算符右边的表达式。
    Java中的&&、||运算采用"短路"方式进行计算,先求出运算符左边的表达式的值,如果该值为true,对于||运算来说,则整个布尔逻辑表达式的结果必然为true,从而不再对||运算符右边的表达式进行运算;同样,对&&运算,如果左边表达式的值为false,则不会再对运算符右边的表达式求值,整个布尔逻辑表达式的结果为false。
6.FlowLayout是Panel和Applet的默认布局管理器。构件在容器中的放置规律是从上到下、从左到右进行放置,如果容器足够宽,第一个构件先添加到容器中第一行的最左边,后续的构件依次添加到上一个构件的右边,如果当前行已放置不下该构件,则放置到下一行的最左边。构件的大小不随容器的大小改变而改变。
7. Applet获取参数是通过在HTML文件中采用<PARAM>标记定义参数。
8.Java语言的执行模式是半编译和半解释型。Java编写好的程序首先由编译器转换为标准字节代码,然后由Java虚拟机去解释执行。
    Java虚拟机(JVM)是可运行Java代码的假想计算机。只要根据JVM规格描述将解释器移植到特定的计算机上,就能保证经过编译的任何Java代码能够在该系统上运行。
    字节代码也是一种二进制文件,但不能直接在操作系统上运行,它可看作虚拟机的机器码。运行JVM字节码的工作是由解释器来完成的。解释执行过程分三步进行:代码的装入、代码的校验和代码的执行。
9.若希望类定义中的数据成员被该类所有的对象共享,则需要用到的修饰符是__static____。
10.class Test implements Runnable{
    public int run(){
        int i = 0;
        while (true){
            i++;
            System.out.println("i="+i);
        }
    }
}
程序不能通过编译,因为run()方法的返回值类型不是void
run()方法必须是public访问权限,返回值类型为void。相当于没有实现Runnable中的抽象方法
11.repaint()方法主要用于Applet的重新显示,它调用update()方法实现对Applet的更新。Applet程序可以在需要显示更新时调用该方法,通知系统刷新显示。
12.public class Person{
    static int arr[ ] = new int[10];
    public static void main(String args){
        System.out.println(arr[9]);
    }
}
编译时正确,运行时将产生错误
"public static void main(String args[])"(也可以写作"public static void main(String[] args)")

18:47 2019/8/13
1.所有的线性结构都可以采用顺序存储结构
2.循环队列是队列的顺序存储结构(需要进行取模运算)
3.向量是线性结构
4.软件按功能可以分为:应用软件、系统软件、支撑软件(或工具软件)。应用软件是为解决特定领域的应用而开发的软件。例如,事务处理软件,工程与科学计算软件,实时处理软件,嵌入式软件,人工智能软件等应用性质不同的各种软件。系统软件是计算机管理自身资源,提高计算机使用效率并为计算机用户提供各种服务的软件。如操作系统,编译程序,汇编程序,网络软件,数据库管理系统等,所以选项B属于系统软件。
5.try-catch-finally语句.
将可能发生异常的程序代码放置在try程序块中。程序运行过程中,如果该块内的代码没有出现任何异常,将正常执行,后面的各catch块不起任何作用。但如果该块内的代码出现了异常,系统将终止try块代码的执行,自动跳转到所发生的异常类对应的catch块中,执行该块中的代码。
    2)其中的finally块是个可选项,如果包含有finally块,无论异常是否发生,finally块的代码必定执行。如果没有异常的出现,当执行完try块内的代码后,将执行finally块。如果出现了异常,执行完对应异常类的catch块后,将执行finally块。
    3)一个try块可以对应多个catch块,用于对多个异常类进行捕获。
6.Java中方法名的命名约定的基本原则如下:
    (1)_、$不作为方法名开头。
    (2)方法名首字母小写,每个后面连续的单词的首字母都大写。如myVariable,myMethod。
7.运行状态是线程占有CPU并实际运行的状态,此时线程状态的变迁有3种情况:终止状态、可运行状态、阻塞状态。
8.Java中对共享数据操作的并发控制是采用传统的封锁技术。一个程序中单独的、并发的线程对同一个对象进行访问的代码段,称为临界区。在Java语言中,临界区可以是一个语句块或是一个方法,并且用"synchronized"关键字标识。Java平台将每个由synchronized(Object)语句指定的对象设置一个锁,称为对象锁。
9.移位运算符包括三种:
1、算术右移运算符:>>
    用来将一个数的二进制位序列右移若干位,移到右端的低位被舍弃,最高位则移入原来高位的值。如选项A,8>>1,8的补码为00001000,所以8>>1=00000100,00000100转换为十进制为4。实际上,右移一位相当于除2取商。
2、算术左移运算符:<<
    用来将一个数的二进制位序列左移若干位,右补0。则选项C,8<<1,8的补码为00001000,所以8<<1=00010000,00010000转换为十进制为16。在不产生溢出的情况下,左移一位相当于乘2。
3、逻辑右移运算符:>>>
    用来将一个数的各二进制位添零右移若干位。与运算符>>的相同之处是,移出的低位被舍弃,不同之处是>>运算时,最高位则移入原来高位的值,而>>>运算时,最高位补0,所以逻辑右移也叫无符号右移。则选项B,4>>>2,4的补码为00000100,所以4>>>2=00000001,00000001转换为十进制为1。
10.MouseEvent:处理鼠标拖动、移动、单击、按下、释放或者进入、退出组件的事件。
    WindowEvent:处理窗口激活、失去活动窗口、最小化、打开、关闭或者退出的事件。
    ActionEvent:处理按钮、列表双击、单击菜单项目。
    KeyEvent:处理键盘的输入。
11.本题选项中的四个运算符优先级由高到低依次是:++、==、&&、+=。
12.自定义异常类可以通过继承Exception类来实现。其一般形式为:
class 自定义异常类名 extends Exception
{
  异常类体;
}
    自定义异常类将继承Exception类的所有方法,除此之外,还可以在类体中定义其他处理方法。
13.Class类的对象由  JAVA编译器  自动生成,隐藏在.class文件中,它在运行时为用户提供信息。
14. 本题考查的是在HTML页中包含Applet。
    将小应用程序HelloApplet嵌入在greeting.html文件中,必须使用特殊的HTML标记<APPLET>标记实现Applet或JApplet的嵌入运行。
    CODE=appletFile:这个属性指定包含Applet或JApplet字节码的文件名。
    WIDTH=pixels HEIGHT=pixels:这两个在<APPLET>标记中必须指定的属性,定义了Applet显示区以像素为单位的高度和宽度。但由Applet运行过程中所产生的任何窗口或对话框不受此约束。
15.public String getThreadName(){}定义了返回类型为String的函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值