找到
41
篇与
二级Java
相关的结果
- 第 5 页
-
Java字符串操作与 JOptionPane 应用详解(计算机二级真题解析) Java字符串操作与 JOptionPane 应用详解(计算机二级真题解析) 一、原题呈现 12.png图片 以下是计算机二级Java实操题的原题代码,包含三处需要填写的空白(标记为//*********Found**********): //*********Found********** import javax.________________.JOptionPane; public class Java_1{ public static void main( String args[] ){ String s1, s2, s3, s4, output; s1 = new String( "hello" ); s2 = new String( "good bye" ); s3 = new String( "Happy Birthday" ); s4 = new String( "happy birthday" ); output = "s1 = " + s1 + "\ns2 = " + s2 + "\ns3 = " + s3 + "\ns4 = " + s4 + "\n\n"; //测试字符串相等 if ( s1.equals( "hello" ) ) //*********Found********** output = output + "_________________________"; else output = output + "s1 does not equal \"hello\"\n"; //用==测试相等 if ( s1 == "hello" ) output += "s1 equals \"hello\"\n"; else output += "s1 does not equal \"hello\"\n"; //忽略字符格式测试相等 if ( s3.equalsIgnoreCase( s4 ) ) output += "s3 equals s4\n"; else output += "s3 does not equal s4\n"; //内容比较 output += "\ns1.compareTo( s2 ) is " + s1.compareTo( s2 ) + "\ns2.compareTo( s1 ) is " + s2.compareTo( s1 ) + "\ns1.compareTo( s1 ) is " + s1.compareTo( s1 ) + "\ns3.compareTo( s4 ) is " + s3.compareTo( s4 ) + "\ns4.compareTo( s3 ) is " + s4.compareTo( s3 ) + "\n\n"; //测试包含字符格式的域匹配 if ( s3.regionMatches( 0, s4, 0, 5 ) ) output += "First 5 characters of s3 and s4 match\n"; else output += "First 5 characters of s3 and s4 do not match\n"; //忽略字符格式的域匹配 if ( s3.regionMatches( true, 0, s4, 0, 5 ) ) output += "First 5 characters of s3 and s4 match"; else output += "First 5 characters of s3 and s4 do not match"; //*********Found********** JOptionPane.______________________( null, output, "字符串构造方法示例", JOptionPane.INFORMATION_MESSAGE ); System.exit( 0 ); } }二、空白处分析与解答 1. 第一处空白:导入JOptionPane类 //*********Found********** import javax.swing.JOptionPane;解析: JOptionPane是Swing组件库中的类,用于创建标准对话框,其完整包路径为javax.swing。因此需要导入javax.swing.JOptionPane才能使用该类。 2. 第二处空白:字符串相等判断的输出内容 //*********Found********** output = output + "s1 equals \"hello\"\n";解析: 此处是if (s1.equals("hello"))条件为true时的执行语句。根据程序逻辑的对称性(与else分支对比),当条件成立时应输出s1 equals "hello"。注意字符串中的双引号需要用转义字符\"表示,\n用于换行。 3. 第三处空白:JOptionPane的显示方法 //*********Found********** JOptionPane.showMessageDialog( null, output, "字符串构造方法示例", JOptionPane.INFORMATION_MESSAGE );解析: showMessageDialog是JOptionPane的静态方法,用于显示信息对话框。其参数含义如下: 第一个参数:父组件(null表示使用默认窗口) 第二个参数:要显示的消息内容 第三个参数:对话框标题 第四个参数:消息类型(此处为信息图标) 三、完整正确代码 隐藏内容,请前往内页查看详情 四、程序运行结果与知识点总结 运行结果说明 程序运行后会弹出一个对话框,显示以下内容: 四个字符串的初始值 s1.equals("hello")的结果为true(内容相等) s1 == "hello"的结果为false(引用不同) s3.equalsIgnoreCase(s4)的结果为true(忽略大小写相等) 字符串比较的compareTo结果(基于Unicode值的差值) 区域匹配的测试结果(区分大小写时不匹配,忽略大小写时匹配) 核心知识点 字符串比较的两种方式: equals():比较字符串内容是否相同 ==:比较对象引用是否指向同一个内存地址 字符串常用方法: equalsIgnoreCase():忽略大小写比较内容 compareTo():按字典顺序比较,返回差值 regionMatches():比较指定区域的子字符串 Swing对话框: JOptionPane.showMessageDialog():快速创建信息提示框 适用于简单的用户交互场景 五、备考建议 这道题考察了Java字符串操作的核心概念和Swing组件的基本使用,是计算机二级Java考试的重点内容。备考时应注意: 区分equals()和==在字符串比较中的不同作用 掌握字符串类的常用方法及其返回值含义 了解Swing基本组件的使用,尤其是对话框相关类 通过这类题目,可以加深对Java面向对象特性的理解,特别是字符串作为对象的特殊处理方式。实际编程中,正确使用字符串方法能有效避免常见的逻辑错误。
-
计算机二级Java语言程序设计第三批综合选择题 计算机二级Java语言程序设计第三批综合选择题 1. 关于Java包管理 下列哪个关于Java包的描述是错误的? A. 包声明语句必须是Java文件的第一行代码(注释除外) B. 使用不同包的类必须通过import导入 C. java.lang包会自动导入 D. 同一个包中的类可以直接访问彼此的private成员 答案:D 解析:private成员只能在定义它的类中访问,与是否同包无关。 2. 基本数据类型运算 下列代码的输出结果是: byte b1 = 10; byte b2 = 20; byte b3 = b1 + b2; System.out.println(b3); A. 30 B. 编译错误 C. 运行时异常 D. 0 答案:B 解析:byte类型运算会自动提升为int,需要强制类型转换才能赋给byte变量。 3. 方法重载 下列哪个方法签名与void test(int a)构成有效重载? A. void test(int b) B. int test(int a) C. void test(long a) D. void test(int a, int b) 答案:D 解析:方法重载要求参数类型或数量不同,仅返回值不同不构成重载。 4. 接口与抽象类 关于接口和抽象类的说法正确的是: A. 接口可以有构造方法 B. 抽象类可以实现接口 C. 接口可以定义实例变量 D. 抽象类不能有非抽象方法 答案:B 解析:抽象类可以实现接口但不必实现所有方法,可以有非抽象方法和成员变量。 5. 集合遍历 下列哪种方式可以正确遍历HashMap? HashMap<String, Integer> map = new HashMap<>(); // 添加元素... A. for(String key : map) { ... } B. for(Map.Entry<String, Integer> entry : map) { ... } C. for(Map.Entry<String, Integer> entry : map.entrySet()) { ... } D. for(Integer value : map.values()) { ... } 答案:C和D 解析:HashMap需要通过entrySet()或keySet()/values()方法遍历。 6. 日期时间API Java 8中获取当前日期应该使用: A. new Date() B. Calendar.getInstance() C. LocalDate.now() D. System.currentTimeMillis() 答案:C 解析:Java 8推荐使用java.time包中的LocalDate等新API。 7. 多线程同步 下列代码的输出可能是: class Counter { private int count = 0; public void add() { count++; } public int get() { return count; } } // 多个线程同时调用add()方法 A. 结果总是等于调用次数 B. 结果可能小于调用次数 C. 结果可能大于调用次数 D. 一定会抛出异常 答案:B 解析:count++不是原子操作,多线程环境下会出现丢失更新的情况。 8. 泛型使用 下列哪个泛型声明是正确的? A. List list = new ArrayList(); B. List<? extends Number> list = new ArrayList(); C. List<? super Integer> list = new ArrayList(); D. List<?> list = new ArrayList<?>(); 答案:B和C 解析:通配符? extends表示上界,? super表示下界,可以安全赋值。 9. 异常处理 下列代码的输出是: try { System.out.print("A"); throw new RuntimeException(); } catch (Exception e) { System.out.print("B"); } finally { System.out.print("C"); } A. A B. ABC C. AC D. AB 答案:B 解析:异常被捕获后finally块仍会执行。 10. JDBC操作 下列JDBC操作步骤的正确顺序是: 获取连接 创建Statement 执行查询 处理结果集 关闭资源 A. 1-2-3-4-5 B. 2-1-3-4-5 C. 1-3-2-4-5 D. 2-3-1-4-5 答案:A 解析:JDBC标准操作流程:获取连接→创建语句→执行SQL→处理结果→关闭资源。 附加解析技巧: 注意题目中的绝对性表述("必须"、"所有"等) 排除法优先排除明显错误的选项 关注Java版本特性(如Java 8的日期API) 多线程问题优先考虑同步和原子性 集合框架区分接口与实现类特性 1.png图片 本题的考查知识点是线性结构与非线性结构。 线性结构用图形表示更加直观,(1,3)图形表示为1->3,(4,1)图形表示为4->1,其余R中的元素图形表示以此类推。线性结构要求有且只有一个根结点,而且每一个结点最多有一个前件,也最多有一个后件。 所以本题答案为B。2.png图片 本题考查知识点是排序。 (1)冒泡排序法:是一种最简单的交换类排序法,它是通过相邻数据元素的交换逐步将线性表变成有序。假设线性表的长度为n,若初始序列为"正序"序列,则只需进行一趟排序,在排序过程中进行n-1次关键字间的比较,且不移动记录;反之,若初始序列为"逆序"序列,则需进行n-1趟排序,需进行n(n-1)/2次比较,并作等数量级的记录移动。因此冒泡排序总的时间复杂度为 。 (2)希尔排序:将整个无序序列分割成若干小的子序列分别进行插入排序。在最坏情况下,希尔排序所需的比较次数为 。 (3)快速排序:通常,快速排序被认为是,所有同数量级(O(nlogn))的排序方法中,其平均性能最好。但是,若初始记录序列按关键字有序或基本有序时,快速排序将蜕化为起泡排序,其时间复杂度为 。 (4)堆排序法:堆排序的方法为:①首先将一个无序序列建成堆。②然后将堆顶元素(序列中的最大项)与堆中最后一个元素交换(最大项应该在序列的最后)。堆排序在最坏的情况下,其时间复杂度为O(nlogn)。 所以本题答案为C。3.png图片 本题的考查知识点是软件结构。 软件的宽度是指软件结构同一层次上模块的总个数的最大值。图中第二层宽度是n,第三层宽度是5,取其中的最大值作为系统结构图的宽度。 所以本题答案为D。4.png图片 本题的考查知识点是软件生命周期。 软件生命周期可以分成项目可行性研究与规划、软件需求分析、软件设计、软件实现、软件测试、软件运行与维护等阶段。需求分析是从软件定义到软件开发的最关键步骤,其结论不仅是今后软件开发的基本依据,同时也是今后用户对软件产品进行验收的基本依据。 所以本题答案为A。5.png图片 本题的考查知识点是软件设计工具。 系统结构图,也称结构图或控制结构图。它表示了一个系统(或功能模块)的层次分解关系,模块之间的调用关系,以及模块之间数据流和控制流信息的传递关系,它是描述系统物理结构的主要图表工具。 数据字典(DD),是结构化分析方法的核心。数据字典的作用是对DFD中出现的被命名的图形元素的确切解释。 数据流图(DFD),是描述数据处理过程的工具,是需求理解的逻辑模型的图形表示,它直接支持系统的功能建模。 甘特图:以图示的方式通过活动列表和时间刻度形象地表示出任何特定项目的活动顺序与持续时间。它直观地表明任务计划在什么时候进行,及实际进展与计划要求的对比。管理者由此可便利地弄清一项任务(项目)还剩下哪些工作要做,并可评估工作进度。 所以本题答案为A。6.png图片 本题考查知识点是堆。 在用完全二叉树表示堆,树中所有非叶子结点值均不小于其左右子树的根结点值,因此,堆顶元素必为序列的n个元素中的最大项。 所以本题答案为C。7.png图片 本题考查知识点是完全二叉树的基本性质。 所谓完全二叉树是指这样的二叉树:除最后一层外,每一层上的结点数均达到最大值;在最后一层上只缺少右边的若干结点。所以,除却最后一层,前4层的结点总数为2^4-1,而在第5层至少要有一个结点,所以深度为5的完全二叉树的结点数>=16。 所以本题答案为A。8.png图片 本题考查知识点是二叉树的前序遍历。 所谓前序遍历是指在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历根结点,然后访问左子树,最后遍历右子树。 所以本题答案为A。9.png图片 本题考查知识点是对象的主要特征。 面向对象方法中最基本的概念是对象,它的基本特点有:标识唯一性、分类性、多态性、封装性和模块独立性好。 所以本题答案为A。10.png图片 本题考查知识点是基本运算的自然连接。 自然连接:是一种特殊的等值连接,它要求两个关系中进行比较的分量必须有相同的属性组,并且要在结果中把重复的属性去掉。 所以本题答案为A。11.png图片 本题考查的是Java虚拟机。 Java语言的执行模式是半编译和半解释型。Java编写好的程序首先由编译器转换为标准字节代码,然后由Java虚拟机去解释执行。字节代码也是一种二进制文件,但不能直接在操作系统上运行,它可看作虚拟机的机器码。虚拟机把字节代码程序与各操作系统和硬件分开,使Java程序独立于平台。 故本题答案为A。12、.png图片 本题考查的是垃圾回收机制。 Java语言不同于C++,它可以自动跟踪内存的使用情况,释放一些不再需要使用的空间,从而保证了不会由于程序的运行而生成大量无法释放的空间,该机置被称垃圾回收机制,由于这种机制的引入,从很大程度上减轻了程序员的负担。 故本题答案为B。13.png图片 本题考的是Java的简单数据类型。 整型常量分3种书写格式: (1)十进制整数,如189,-360。 (2)八进制整数,以0开头,如012表示十进制的10。 (3)十六进制整数,以0x或0X开头,如0x123表示十进制数291。 故本题答案为D。14.png图片 本题考查的是字符串的修改。 String提供concat(),replace(),substring(),toLowerCase(),toUpperCase()等方法。 public String concat(String str)//将当前字符串对象与指定str字符串相连; public String replace(char oldChar,char newChar)//用新字符替换老字符; public String substring(int beginIndex)//按指定的起始位置获得子字符串; public String substring(int beginIndex,int endIndex)//按指定范围去获得字符串中的子字符串; public String toLowerCase()//将字符串中所有字符变为小写; public String toUpperCase()//将字符串中所有字符变为大写。 故本题答案为B。15.png图片 本题考查的是修饰符的含义。 1、public指明变量为公有。 2、protected指明变量为保护访问。可被同一个包中其他类、不同包中该类的子类以及该类自己访问和引用。 3、final指明变量为常量。 4、默认(friendly)即无访问控制符,表示只能被同一个包中的类访问和引用。 故本题答案为A。16.png图片 本题考查的是表达式。 Java对"+"进行了扩展,不仅可以连接字符串,而且还能将字符串与其它类型数据进行连接,结果是字符串。 若"+"的第一个操作数是字符串,Java会自动将后面的操作数类型转换成字符串类型。例如本题选项A中,x+=y即x=x+y,则计算结果x的值为字符串Hello9;选项C与此类似,故此选项也是正确的;选项D主要考查的是条件运算符"?:",即把表达式(x!=null)&&(x.length()>0) ? x.length() : 0的值赋给整型变量y,运行结果y的值是0;而选项B是因为"=="两边的类型不匹配,无法比较,所以此表达式是错误的。 故本题答案为B。17.png图片 本题考查的是Java标识符。 标识符命名规则为: 1、标识符是以字母、下划线、美元符($)作为首字符的字符串序列。在首字符后面可以跟字母、下划线、美元符和数字。 2、标识符区分大小写。 3、标识符的字符数目没有限制,但为便于阅读和记忆,不宜太长。 另外要注意的是Java中有一些标识符是具有专门意义和用途的,不允许作为一般的标识符用,它们是保留字。 故本题答案为C。 18.png图片 本题考查的是转义字符。 Unicode字符集中对一些字符必须用转义字符。转义字符以反斜杠(\)开头,如"\n"表示换行符,"\\"表示反斜杠。 故本题答案为A。19.png图片 本题考查的是字符串对象的比较运算。 对于复合数据类型的数据的"=="运算,其比较目标是两个操作数是否是同一个对象。若需要比较两个对象的值是否相同,则用equals()方法,equals()是Object的方法,和"=="一样,功能是比较两个操作数是否是同一个对象,但类库中许多子类重写了equals()方法,使其变为比较两个操作数的内容是否一样。例如String类就对equals()方法进行了修改。 本题ss1与ss2并非是同一个对象,所以ss1==ss2的值为false;但对象ss1与ss2的值都为hello,所以表达式ss1.equals(ss2)的值为true。 故本题答案为C。20.png图片 本题考查的是类的声明。 类声明的格式如下: [修饰符]class 类名[extends 父类名][implements 类实现的接口列表]{ } 其中[]括起来的内容为可选项。关键字class是类定义的开始,类名应符合标识符命名规则,第一个字母大写。 本题中选项B,C无关键字class,故它们不是类声明。选项A中的两个修饰符不能同时用于修饰同一个类,因为abstract类自身没有具体对象,需要派生出子类后再创建子类的对象;而final类不可能有子类,这样abstract final类就无法使用,也就没有意义了。 故本题答案为D。 21.png图片 本题考查的是移位运算符。 1、算术右移运算符>> 用来将一个数的二进制位序列右移若干位。 2、算术左移运算符<< 用来将一个数的二进制位序列左移若干位。 3、逻辑右移运算符>>> 用来将一个数的各二进制位添零右移若干位。 故本题答案为A。22.png图片 本题考查的是do-while循环语句。 do-while循环又称"直到型"循环,它首先执行循环体,然后计算终止条件,若结果为true,则循环执行循环体,直到布尔表达式的结果为false。 另外,运算符"--"是将操作数减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。 本程序执行过程如下: i=5 执行System.out.println(i);,输出5;比较--i>4是否成立,因为"--i"在表达式中运算时是先让i减1,再进行运算。故此处比较时4>4不成立,循环结束。 故本题答案为B。23.png图片 本题考查的是多分支语句。 当switch后面表达式的值与任一case子句中的值都不匹配时,程序执行default后面的语句;break语句用来在执行完一个case分支后,使程序跳出switch语句;若没有break语句,当程序执行完匹配的case语句序列后,继续向下执行,向下执行时,并不与case后面的数据进行比较,而是直接执行下面的所有语句,直到遇到break语句为止。 本题中当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"。 故本题答案为A。 24.png图片 本题考查的是JScrollPane。 在JScroolPane类中,主要是通过JViewport(视口)类来实现内容的滚动的。JViewport是一种特殊的对象,用于查看基层构件,滚动条实际上就是沿着构件移动视口,同时描绘出它能看到的内容。 故本题答案为A。25.png图片 本题考查的是事件适配器。 Java语言为一些Listener接口提供了适配器(Adapter)类。可以通过继承事件所对应的Adapter类,重写需要的方法,无关方法不用实现。 java.awt.event包中定义的事件适配器类包括以下几个: 1、ComponentAdapter,构件适配器。 2、ContainerAdapter,容器适配器。 3、FocusAdapter,焦点适配器。 4、KeyAdapter,键盘适配器。 5、MouseMotionAdapter,鼠标运动适配器。 6、MouseAdapter,鼠标适配器。 7、WindowAdapter,窗口适配器。 故本题答案为C。26.png图片 本题考查的是Java的容器。 容器java.awt.Container是Component的子类,一个容器可以容纳多个构件,并使他们成为一个整体。 常用的容器有Frame(窗口容器),Panel(面板容器),Applet(java小程序的容器),Dialog(对话框容器)等。 而本题选项中的Scrollbar是滚动条,它是一个构件,并不是容器。 故本题答案为C。27.png图片 本题考查的是异常类。 Java语言的类库中提供一个Throwable类,所有的异常对象都必须是它的实例或它子类的实例。Throwable类又分为Error和Exception两子类,Error类包括动态连接失败、硬件设备和虚拟机出错等,通常的Java应用程序不会捕获和抛出这类异常,而是捕获和抛出Exception这类异常。 所以自定义的异常是从Exception及其子集继承的。 故本题答案为D。28.png图片 本题考查的是异常的捕获。 在Java中提供了结构化的异常处理功能,其主要是通过try...catch语句来实现的。在Java中可以将可能产生异常的代码放入到try子句中,如果产生异常,将会执行catch子句。如果有多个异常,则应先处理子类异常,再处理父类异常,否则后面的异常处理,将得不到执行。 故本题答案为B。29.png图片 本题考查的是字节流。 在Java中,输入一个字节流时,要实现DataInput接口。该接口定义在java.io包中。处理字节流的DataInputStream类实现了该接口。同时,DataOutput接口提供了字节输出流的功能,RandomAccessFile类实现了DataInput与DataOutput这两种接口。 故本题答案为A。30.png图片 本题考查的是流的概念。 过滤流为I/O访问提供了同步处理机制。保证在某时刻只能有一个线程访问一个I/O流。要保证读取的内容进行处理后能够正确的输出,要使用过滤流(Filter stream),否则不能保证输出数据的正确性。 故本题答案为D。31.png图片 本题考查的是JFrame框架。 对JFrame添加构件有两种方式: 1、用getContentPane()方法获得JFrame的内容面板,再对其加入构件frame.getContentPane().add(childComponent)。 2、建立一个Jpanel或JDesktopPane之类的中间容器,把构件添加到容器中,再用setContentPane()方法把该容器置为JFrame的内容面板: Jpanel contentPane=new Jpanel(); …//把其他构件添加到Jpanel中 frame.setContentPane(contentPane);//把contentPane对象设置成为frame的内容面板。 故本题答案为B。32.png图片 本题考查的是对象的永久化概念。 将Java程序中的对象保存在外存中,称为对象永久化。对象永久化的关键是将它的状态以一种串行格式表示出来,以便以后读该对象时能够把它重构出来。 故本题答案为C。33.png图片 本题考查的是线程的实现。 在Java中可通过两种方法来产生一个线程。在Java中,可以通过继承类Thread来构造线程,即通过继承Thread类并覆盖其中的run方法来生成一个线程。同时也可以通过建立一个实现了Runnable接口的对象,并以其作为线程的目标对象来建立一个线程,通过这种方法可以打破Java中单一继承类方式的限制,在这种方法中,所有实现了Runnable接口的对象都是以线程方式在运行。 故本题答案为C。34.png图片 本题考查的是Java运行过程。 Java有两类应用程序,Java Application和Java Applet。它们编译源代码时运用应用程序相同,即javac.exe。 java.exe是用于Java Application程序解释执行的,若执行成功,显示结果;若执行有错,则显示错误报告。 故本题答案为A。35.png图片 本题考查的是Java语言的特点。 面向对象的语言将客观世界看成由各种对象组成,对象客观实体可定义成大的结构-类(class),每个类有自己的特性(属性)和操作(方法)。面向对象技术使复杂的问题可以分解化,大大提高了软件的重用性。与其他面向对象语言相比,Java利用面向对象技术更彻底。它把所有的Java应用和Applet都看做对象,按类封装,其封装性实现了模块化和信息隐藏,继承性实现了代码重用,让用户可以自由地定义数据类型,建立自己的类库。 故本题答案为A。36.png图片 本题考查的是抽象类。 在Java语言中,用abstract修饰符定义的类称为抽象类,在其中的方法称为抽象方法。abstract类必须被继承,abstract方法必须被重写,abstract类不能实例化。 故本题答案为B。37.png图片 本题考查的是输入输出流。 字符输出流类都是Writer抽象类的子类。 故本题答案为A。38.png图片 本题考查的是类的继承。 继承性是面向对象方法的一个重要基本特征,它使代码可重用,可降低程序复杂性。 故本题答案为B。39.png图片 本题考查的是编写图形用户界面。 本题程序的功能是显示一个窗口,通过语句"f.setSize(200,200);"设置该窗口的大小为200×200,程序在顶层容器JFrame中加入面板JPanel,并将面板的背景色通过语句"p.setBackground(Color.blue);"设置为蓝色。 故本题答案为A。40.png图片 本题考查的是编写图形用户界面。 本题程序定义了一个标题为"Menus",大小为500*400的窗体,并在窗体上插入一个菜单"文件",菜单项为"打开"(本题程序中,菜单项为隐藏,在拖动窗口大小后显示)。Swing的菜单结构和AWT的类似,菜单容器是菜单条JMenuBar,菜单是JMenu,菜单项是JMenuItem,还有JCheckBoxMenuItem。Swing的菜单结构使用起来更加灵活,可以通过setJMenuBar将菜单条放置到容器中的任意地方。 根据语句"f.setJMenuBar(mb);"可知,程序中两处填空应填:JMenuBar。 故本题答案为D。
-
计算机二级Java语言程序设计第二批综合选择题 计算机二级Java语言程序设计综合选择题 1. 关于Java程序结构 下列哪个关于Java程序结构的描述是正确的? A. 一个Java源文件可以有多个public类 B. 类名必须与文件名相同 C. main方法必须声明为public static void D. 包声明语句可以放在类定义之后 答案:C 解析:一个Java源文件只能有一个public类且文件名必须与该类名相同,包声明必须放在文件开头。 2. 数据类型转换 下列代码片段的输出结果是: double d = 3.14; int i = (int)d; System.out.println(i); A. 3.14 B. 3 C. 编译错误 D. 运行时异常 答案:B 解析:强制类型转换会直接截断小数部分。 3. 循环结构 下列哪个循环结构至少会执行一次循环体? A. for循环 B. while循环 C. do-while循环 D. 增强for循环 答案:C 解析:do-while循环先执行循环体再判断条件。 4. 数组初始化 下列数组声明和初始化方式正确的是: A. int[] arr = new int[3]{1,2,3}; B. int arr[] = new int[]{1,2,3}; C. int[3] arr = {1,2,3}; D. int arr[] = new int[3]{1,2,3}; 答案:B 解析:数组声明时不能同时指定大小和初始化值。 5. 字符串操作 String对象的哪个方法可以比较字符串内容是否相同? A. == B. equals() C. compare() D. isEqual() 答案:B 解析:==比较引用地址,equals()比较内容。 6. 继承与多态 下列代码输出结果是: class Animal { void sound() { System.out.print("Animal"); } } class Dog extends Animal { void sound() { System.out.print("Dog"); } } public class Test { public static void main(String[] args) { Animal a = new Dog(); a.sound(); } } A. Animal B. Dog C. 编译错误 D. 运行时错误 答案:B 解析:这是多态的典型表现,运行时调用实际对象的方法。 7. 异常处理 下列哪个异常是受检异常(checked exception)? A. NullPointerException B. ArrayIndexOutOfBoundsException C. IOException D. ArithmeticException 答案:C 解析:IOException及其子类都是受检异常,必须处理。 8. 集合框架 下列哪个集合类允许null元素? A. TreeSet B. Hashtable C. HashMap D. ConcurrentHashMap 答案:C 解析:TreeSet不允许null,Hashtable和ConcurrentHashMap的key/value都不能为null。 9. 多线程同步 下列哪个关键字可以保证方法或代码块的线程安全? A. volatile B. static C. synchronized D. final 答案:C 解析:synchronized是实现线程同步的关键字。 10. 文件IO 读取文本文件内容最适合使用哪个类组合? A. FileInputStream + BufferedInputStream B. FileReader + BufferedReader C. FileOutputStream + PrintWriter D. RandomAccessFile + DataInputStream 答案:B 解析:文本文件读取推荐使用字符流Reader系列,BufferedReader可提高效率。 1.png图片 本题考查的是软件测试的目的。 关于软件测试的目的,GrenfordJ.Myers在《TheArtofSoftwareTesting》一书中给出了深刻的阐述:软件测试是为了发现错误而执行程序的过程;一个好的测试用例是指很可能找到迄今为止尚未发现的错误的用例;一个成功的测试是发现了至今尚未发现的错误的测试。整体来说,软件测试的目的就是尽可能多地发现程序中的错误。 故本题答案为C。 2.png图片 本题的考查知识点是栈。 栈是限定在一端进行插入与删除的线性表。栈有向上生长堆栈和向下生长堆栈之分,当栈是倒着压的时候,存放一个元素之后 ,top=51-1=50,存两个元素之后,top=51-2=49,因此当top=50时,栈中有51-50=1个元素。答案选C 3.png图片 软件工程包括3个要素,即方法、工具和过程。 本题答案为A。4.png图片 软件工程包括3个要素,即方法、工具和过程。 本题答案为A。5.png图片 软件测试过程一般按4个步骤进行,即单元测试、集成测试、验收测试(确认测试)和系统测试。 故本题答案为B。6.png图片 数据库系统的基本特点:1.数据的高集成性;2.数据的高共享性与低冗余性;3.数据高独立性;4.数据统一管理与控制。因此选项C不正确,其它选项的说法均正确。 故本题答案为C。 7.png图片 由程序调试的概念可知:程序调试活动由两部分组成,其一是根据错误的迹象确定程序中错误的确切性质、原因和位置。其二,对程序进行修改,排除这个错误。所以程序调试的目的就是诊断和改正程序中的错误。 故本题答案为D。8.png图片 黑盒测试方法主要有:等价类划分法、边界值分析法、错误推测法、因果图等,主要用于软件确认测试。 故本题答案为D。9.png图片 黑盒测试方法主要有:等价类划分法、边界值分析法、错误推测法、因果图等,主要用于软件确认测试。 故本题答案为C。10.png图片 若实体A和B是一对多的联系,实体A中的一条记录对应实体B中的多条记录,实体B和C是一对一的联系,实体B中的一条记录对应实体C中的一条记录,即实体C中的记录的一条记录对应实体A中的多条记录,即实体A和C的联系是一对多的联系。 故本题答案为B。11.png图片 本题考查的是应用程序的扩展名。 1、Java的源程序代码的扩展名为.java。 2、Java的编译器和解释器的扩展名为.exe,他们分别是javac.exe、java.exe。 3、通过Java编译器编译生成的是二进制字节码文件,其扩展名为.class。 4、调用applet小程序的HTML文件的扩展名为.html或.htm。 故本题答案为B。12.png图片 本题考查的是Java的关键字。 Java中常量null,false,true,new,this,const,break都是小写。 故本题答案为B。13.png图片 本题考查的是Java标识符。 标识符命名规则为: 1、标识符是以字母、下划线、美元符($)作为首字符的字符串序列。在首字符后面可以跟字母、下划线、美元符和数字。 2、标识符区分大小写。 3、标识符的字符数目没有限制,但为便于阅读和记忆,不宜太长。 另外要注意的是Java中有一些标识符是具有专门意义和用途的,不允许作为一般的标识符用,它们是保留字。例如本题中的super。 故本题答案为D。14.png图片 本题考查的是表达式。 选项A类型不一致,若此表达式改为s+="books"就对了; 选项B中s[1]表示数组,Java中数组是对象,它需通过new关键字来创建; 选项C中s的类型不确定,如果s定义的是数组的,则此表达式是合法的,因为数组中length是属性,而字符串中是通过length()方法获得字符长度的,故此表达式不合法。若把它改为int len=s.length();就对了; 选项D中toLowerCase()是String类提供的一个方法,作用是将字符串中所有字符变为小写。返回一个字符串值赋给t。 故本题答案为D。15.png图片 本题考查的是main()方法的组成。 main()方法是一个特殊的方法,它是所有的Java Application程序执行的入口点,所以任何一个Java Application方法必须有且只能有一个main()方法,而且这个main()方法的格式统一为: public static void main(String args[]) 故本题答案为C。16.png图片 本题考查的是if判断语句。 if-else结构:if(条件) statement1;或{block1}else statement2;或{block2} 在条件为真时,执行语句statement1(或代码块block1),然后跳过else和statement2(或代码块block2)执行下面的语句;在条件为假时,跳过语句statement1(或代码块block1)执行else后面的statement2(或代码块block2),然后继续执行下面语句。 本题中,条件m == false不成立,执行System.out.println("True");所以输出True。 故本题答案为B。17.png图片 本题考查的是Java的修饰符。 Java的修饰符包括public,private,protected,friendly,final等。 故本题答案为D。18.png图片 本题考查的是算术运算符。 首先说明一点,在Java语言中,取模运算符%,其操作数可以为浮点数。 对于二元算术运算符,其表达式结果的类型归纳为以下几类情况: (1)操作数全为整型,那么,只要其中有一个为long型,则表达式结果为long型。 (2)两个操作数全是byte型或short型,表达式结果也为int型。 (3)操作数为浮点型,只要其中有一个为double型,表达式结果就是double型。 (4)两个操作数全是float型或其中一个是float型,而另外一个是整型,则表达式结果为float型。 由于本题的操作数x,y全为整型,所以表达式结果也为int类型。 故本题答案为B。19.png图片 本题考查的是表达式的运算。 增量运算符"++"是将操作数加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。 故本题答案为A。20.png图片 本题考查的是修饰符的含义。 1、public修饰的方法可被其它类访问或引用。 2、abstract修饰的方法是抽象方法,抽象方法没有方法体,要使用抽象方法,必须先实现此抽象方法。 3、final修饰的方法不能被继承。 4、static修饰的方法为静态方法,静态方法不需要类的实例化就可以被类直接调用。 故要使得类名AB可以直接调用method()方法,则必须在method()前用static来修饰。 故本题答案为A。 21.png图片 本题考查的是成员变量的修饰符。 private修饰的变量说明变量为私有访问。只能被该类自己访问或调用,是对成员变量的高级保护。 故本题答案为C。 22.png图片 本题考查的是表达式的运算。 增量运算符"++"是将操作数加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。 故本题答案为C。 23.png图片 本题考查的是多分支语句switch。 当switch后面表达式的值与任一case子句中的值都不匹配时,程序执行default后面的语句;break语句用来在执行完一个case分支后,使程序跳出switch语句;若没有break语句,当程序执行完匹配的case语句序列后,后面的case子句起不到跳出switch语句的作用,这样,程序会继续执行后面的case语句序列,直到遇到break为止。 本题中当m的值为0的时候,会输出"case 0case 1case 2";当m的值为1时,输出"case 1case 2";当m的值为2时,输出"case 2";当m的值为3时,与前面所有case后面的值都不匹配,执行default语句,输出"default"。 故本题答案为D。24.png图片 本题考查的是多重循环。 首先介绍一下continue语句的功能:continue语句是跳过循环体中下面尚未执行的语句,回到循环体的开始,继续下一轮的循环。 本题程序运行过程如下: i=0: j=0 条件j==1不成立,输出j和i,即0 and 0; j=1 条件j==1成立,执行continue,跳过System.out.println(j+ "and "+i+";");执行下一轮循环j=2; j=2 条件j<2不满足,退出内层循环,继续外层循环。 i=1: j=0 条件j==1不成立,输出j和i,即0 and 1; j=1 条件j==1成立,执行continue,跳过System.out.println(j+ "and "+i+";");执行下一轮循环j=2; j=2 条件j<2不满足,退出内层循环,继续外层循环。 i=2: j=0 条件j==1不成立,输出j和i,即0 and 2; j=1 条件j==1成立,执行continue,跳过System.out.println(j+ "and "+i+";");执行下一轮循环j=2; j=2 条件j<2不满足,退出内层循环,继续外层循环。 i=3:条件i<3不满足,结束。 故本题答案为A。25.png图片 本题考查的是监听器。 每个事件都有自己的监听器,监听器本身是一种接口,该接口中的方法,返回值是void类型。当要为指定的类注册监听器时,就可以通过定在实现该接口的类中定义该方法,这样可以在某个事件发生后,将会自动执行相应方法中的代码。 故本题答案为C。26.png图片 本题考查的是Applet显示。 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的更新。 故本题答案为B。27.png图片 本题考查的是异常的概念。 对程序语言而言,编写程序时出现错误是不可避免的,一般有编译错和运行错两类。Java语言认为那些可预料和不可预料的编译和运行时的出错称为异常。在Java语言中,把异常也作为一种对象,它在程序运行出错时被创建,异常控制是Java语言处理程序出错的有效机制。 故本题答案为B。28.png图片 本题考查的是异常的声明。 在Java语言中,有时一个方法生成一个异常,但该方法并不能确定如何处理此异常,如找不到文件之类的异常,必须将异常传递给调用方法,由调用它的方法来处理,这种时候方法用声明异常抛出,让异常对象可从调用栈向后传递,直至有相应的方法捕获它为止。所以当方法遇到异常又不知如何处理时,应声明异常。 故本题答案为C。29.png图片 本题考查的是流的概念。 流,最早从C语言中引入的。其可以看成是一个流动的数据缓冲区。数据从数据源方向经过缓冲区流向数据的目的地。在传送的过程中,其传送方式是串行的。在Java中的java.io包中定义了Java中常见流的接口与类。其中包括两个最基本的流的抽象类,它们分别是OutputStream与InputStream。其余的流都分别从这两个基本类中继承而来。 故本题答案为D。30.png图片 本题考查的是压缩文件。 在java.io包中提供了对压缩文件进行操作的能力。它是通过压缩文件输入流与压缩文件输出流来实现的,其分别继承自InflaterInputStream与DeflaterOutputStream。在创建压缩文件输入流时,其初始化参数是一个FileInputStream类的实例。 故本题答案为B。31.png图片 本题考查的是布局管理器。 1、CardLayout布局管理器能够帮助用户处理两个以至更多的成员共享同一显示空间,它把容器分成许多层,每层的显示空间占据整个容器的大小,但是每层只允许放置一个构件,当然每层都可以利用Panel来实现复杂的用户界面。 2、GridLayout布局管理器使容器中各个构件呈网格状布局,平均占据容器的空间。即使容器的大小发生变化,每个构件还是平均占据容器的空间。构件在往容器中放置的时候,是按照从上到下、从左到右的规律进行的。 3、BorderLayout布局管理器把容器分成5个区域:North,South,East,West和Center,每个区域只能放置一个构件。 4、FlowLayout:构件在容器中的放置规律是从上到下、从左到右进行放置,如果容器足够宽,第一个构件先添加到容器中第一行的最左边,后续的构件依次添加到上一个构件的右边,如果当前行已放置不下该构件,则放置到下一行的最左边。 故本题答案为B。32.png图片 本题考查的是Java Application。 一个Java Application运行后在系统中作为一个独立的进程参与系统调度,但在该进程中可以通过创建Thread类的实例的方法来创建多个线程。在一个进程中的各个线程之间拥有共同的上下文环境。 故本题答案为B。33.png图片 本题考查的是对象的串行化。 对Java对象的读、写的过程被称为对象串行化。任何一个对象只有它所对应的类实现了Serializable接口时,才是可串行化的。因此如果要串行化某些类的对象,这些类就必须实现Serializable接口。 故本题答案为A。34.png图片 本题考查的是Swing构件。 随着发展的需要,Swing出现了,Swing组件几乎都是轻量组件,与重量组件相比,没有本地的对等组件,不像重量组件要在它们自己的本地不透明窗体中绘制,轻量组件在它们的重量组件的窗口中绘制。 Swing是由100%纯Java实现的,Swing组件是用Java实现的轻量级( light-weight)组件,没有本地代码,不依赖操作系统的支持,这是它与AWT组件的最大区别。 故本题答案为A。35.png图片 本题考查的是字符串对象的比较运算。 equals()是Object的方法,和"=="一样,功能是比较两个操作数是否是同一个对象,但类库中许多子类重写了equals()方法,使其变为比较两个操作数的内容是否一样,两串相等则返回ture,否则返回false。 故本题答案为B。36.png图片 本题考查的是动态数组。 Java动态数组是一种可以任意伸缩数组长度的对象,在Java中比较常用的是ArrayList,Vector等。 java.util.Vector提供了向量(Vector)类以实现类似动态数组的功能。 java.util.ArrayList(数组列表)在运行时能动态自动调整数组的大小。ArrayList类在定义数组时,不必限定数组的大小。在数组列表初始化时,可用add()方法将数组元素赋值。 故本题答案为A。37.png图片 本题考查的是异常处理。 在Java中提供了结构化的异常处理功能,其主要是通过try...catch语句来实现的。在Java中可以将可能产生异常的代码放入到try子句中,如果产生异常,将会执行catch子句。 在本程序执行过程中,由于找不到"test.dat",产生异常,转而执行catch子句,通过语句"System.out.println("exception");",输出:exception。 故本题答案为A。38.png图片 本题考查的是InputStreamReader类。 InputStreamReader和BufferedReader都是字符类输入流,都是抽象类Reader的子类。 本程序的作用是读取用户输入的一行字符,再输出,由于程序中同时用到InputStreamReader和BufferedReader类的对象,所以输入的字符将被输出两次。根据语句"InputStreamReader ir;"和语句"in=new BufferedReader(ir);"可知,下划线处填"InputStreamReader"。 故本题答案为B。39.png图片 本题考查的是Applet类的生命周期方法。 Applet类提供了生命周期不同阶段响应主要事件的4种方法: ①void init(),在Applet被下载时调用,一般用来完成所有必需的初始化操作。 ②void start(),在Applet初始化之后以及Applet被重新访问时调用。 ③void stop(),在Applet停止执行时调用。一般发生在Applet所在的Web页被其他页覆盖时调用。 ④void destroy(),在关闭浏览器Applet从系统中撤出时调用。stop()总是在此前被调用。 故本题答案为C。40.png图片 本题考查的是Applet程序设计。 Applet被下载时,在Applet的init()方法中使用getParameter()方法获取参数。getParameter()方法的入口参数是所取参数的名字(必须与<param>标记中的name指示的名字相同),返回值是参数的值。另外,JAVA是严格区分大小写的,所以参数"MESSAGE"和参数"message"不同。 故本题答案为A。
-
计算机二级Java语言程序设计第一批综合选择题 计算机二级Java语言程序设计基础选择题全面解析 一、Java基础语法选择题 1. Java标识符规则 题目:下列哪个是合法的Java标识符? A. 123var B. _name C. public D. class 解析: 正确答案:B Java标识符规则: 不能以数字开头(A错误) 不能是关键字(C、D错误) 可以包含字母、数字、下划线和$符号 建议采用驼峰命名法 2. 基本数据类型 题目:下列哪个不是Java的基本数据类型? A. int B. boolean C. String D. double 解析: 正确答案:C Java 8种基本数据类型: 整型:byte(1), short(2), int(4), long(8) 浮点:float(4), double(8) 字符:char(2) 布尔:boolean(1) String是引用类型,属于java.lang包 二、面向对象选择题 3. 类与对象 题目:关于类和对象,说法错误的是: A. 类是对象的模板 B. 对象是类的实例 C. 一个类只能创建一个对象 D. 类包含属性和方法 解析: 正确答案:C 类与对象关系: 类是蓝图,对象是具体实例 一个类可以创建多个对象 类包含成员变量(属性)和方法 4. 继承与多态 题目:关于继承说法正确的是: A. Java支持多重继承 B. 子类可以继承父类的私有成员 C. final类可以被继承 D. 子类可以重写父类非私有方法 解析: 正确答案:D 继承要点: Java只支持单继承(A错误) 私有成员不能被继承(B错误) final类不能被继承(C错误) 方法重写遵循"两同两小一大"原则 三、异常处理选择题 5. 异常分类 题目:下列哪个不是RuntimeException? A. NullPointerException B. ArrayIndexOutOfBoundsException C. IOException D. ArithmeticException 解析: 正确答案:C 异常体系: RuntimeException:运行时异常,不强制捕获 NullPointerException ArrayIndexOutOfBoundsException ArithmeticException Checked Exception:必须处理 IOException SQLException 6. try-catch-finally 题目:关于finally块说法错误的是: A. 无论是否发生异常都会执行 B. 通常用于释放资源 C. 可以没有catch块单独存在 D. finally中的return会覆盖try中的return 解析: 正确答案:C finally要点: 必须与try一起使用 System.exit(0)会阻止finally执行 返回值以finally中的为准 四、集合框架选择题 7. List与Set 题目:下列哪个集合允许重复元素? A. HashSet B. TreeSet C. ArrayList D. HashMap 解析: 正确答案:C 集合特性: List:有序可重复(ArrayList, LinkedList) Set:无序不重复(HashSet, TreeSet) Map:键值对(HashMap, TreeMap) 8. 泛型使用 题目:正确使用泛型的语句是: A. List list = new ArrayList(); B. List list = new ArrayList(); C. List list = new ArrayList(); D. List list = new ArrayList<>(); 解析: 正确答案:D 泛型规则: 前后泛型类型必须一致 Java 7+支持菱形语法(<>) 泛型擦除机制 五、IO流选择题 9. 字节流与字符流 题目:处理文本文件应该优先使用: A. FileInputStream B. FileOutputStream C. FileReader D. ObjectOutputStream 解析: 正确答案:C IO流选择: 字节流:InputStream/OutputStream(处理二进制) 字符流:Reader/Writer(处理文本) 缓冲流提高效率(BufferedReader) 10. 序列化条件 题目:要使类可序列化需要: A. 实现Cloneable接口 B. 实现Serializable接口 C. 实现Runnable接口 D. 实现Comparable接口 解析: 正确答案:B 序列化要点: 实现Serializable接口(标记接口) transient修饰的变量不被序列化 serialVersionUID用于版本控制 六、备考建议 重点掌握: Java基础语法(数据类型、运算符、流程控制) 面向对象特性(封装、继承、多态) 异常处理机制 集合框架使用 基础IO操作 做题技巧: 排除法优先 注意绝对化表述("必须"、"所有"等) 关注题目中的关键字 常见易错点: ==与equals的区别 基本类型与包装类 字符串不可变性 集合遍历时的并发修改 模拟练习: // 典型考题示例 String s1 = "hello"; String s2 = new String("hello"); System.out.println(s1 == s2); // false System.out.println(s1.equals(s2)); // true1.png图片 由于数据的集成性使得数据可为多个应用所共享,特别是在网络发达的今天,数据库与网络的结合扩大了数据关系的应用范围。数据的共享自身又可极大地减少数据冗余性,不仅减少了不必要的存储空间,更为重要的是可以避免数据的不一致性。所谓数据的一致性是指在系统中同一数据的不同出现应保持相同的值,而数据的不一致性指的是同一个数据在系统的不同拷贝处有不同的值。 本题答案是A。 2.png图片 本题考查的是数据模型。 层次模型是最早发展起来的数据库模型,它的基本结构是树形结构。 故本题答案为C。 3.png图片 E-R图中用矩形表示实体集,用椭圆表示属性,用菱形表示联系。正确答案是A 4.png图片 软件设计中通常采用结构化设计方法,模块的独立程度是评价设计好坏的重要度量标准。耦合性与内聚性是模块独立性的两个定性标准。内聚性是一个模块内部各个元素间彼此结合的紧密程度的度量;耦合性是模块间互相连接的紧密程度的度量。一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。正确答案是B 5.png图片 内聚性:内聚性是一个模块内部各个元素间彼此结合的紧密程度的度量。耦合性:耦合性是模块间互相连接的紧密程度的度量。因此选项C、D是错误的。在程序结构中,各模块的内聚性越强,则耦合性越弱。一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。因此选项A是错误的,应该降低耦性合提高内聚性,所以选项B是正确的。 故本题答案为B。 6.png图片 结构化程序设计方法的主要原则可以概括为自顶向下,逐步求精,模块化,限制使用goto语句。 故本题答案为A。 7.png图片 数据库管理系统是数据库的机构,它是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等。 故本题答案为B。 8.png图片 关于软件测试的目的,Grenford J. Myers在《The Art of Software Testing》一书中给出了深刻的阐述:软件测试是为了发现错误而执行程序的过程;一个好的测试用例是指很可能找到迄今为止尚未发现的错误的用例;一个成功的测试是发现了至今尚未发现的错误的测试。整体来说,软件测试的目的就是尽可能多地发现程序中的错误。 故本题答案为A。 9.png图片 关于软件测试的目的,Grenford J. Myers在《The Art of Software Testing》一书中给出了深刻的阐述:软件测试是为了发现错误而执行程序的过程;一个好的测试用例是指很可能找到迄今为止尚未发现的错误的用例;一个成功的测试是发现了至今尚未发现的错误的测试。整体来说,软件测试的目的就是尽可能多地发现程序中的错误。 故本题答案为D。 10.png图片 结构图的深度表示控制的层数。如图所示在系统中包含功能1、功能2……功能n,其中功能1又包含2个子功能。该系统结构共三层,系统深度就为3。 故本题答案为C。 11.png图片 本题考的是Java语言的特点。 过去的高级语言大多数是面向过程的语言,它的缺点是问题的解决与程序是一对一的关系,问题如有任何一点变更,程序也随之要修改。 而面向对象的语言将客观世界看成由各种对象组成,对象客观实体可定义成大的结构-类(class),每个类有自己的特性(属性)和操作(方法)。面向对象技术使复杂的问题可以分解化,大大提高了软件的重用性。与其他面向对象语言相比,Java利用面向对象技术更彻底。它把所有的Java应用和Applet都看做对象,按类封装,其封装性实现了模块化和信息隐藏,继承性实现了代码重用,让用户可以自由地定义数据类型,建立自己的类库。 故本题答案为A。 12.png图片 本题考查的是布局管理器。 Frame继承自java.awt.window类,它们都在java.awt包中,对于Frame而言,其默认的布局管理器为BorderLayout。采用FlowLayout时,当容器内一行中构件布满后,将自动从下行开始;采用BorderLayout,将窗体分成东、南、西、北、中五个部分,在每个部分中可以放置一个构件;采用GridLayout布局时,将以m*n的网格的形式来显示容器中的构件,每个网格中可以放置一个构件;采用CardLayout时将为构件提供卡式界面。另外还有GridBag Layout布局管理器。 故本题答案为B。 13.png图片 本题考的是Java语言的特点。 Java解释器采用生成与体系结构无关的字节代码指令的技术,只需安装Java运行系统,就可保证Java程序可以在网络的任何地方运行,即同一个Java程序可在不同的处理器上运行,这就是Java的跨平台的特点,此特点保证了软件的可移植性。 故本题答案为D。 14.png图片 本题考的是Java程序结构。 Java规定,源文件名与程序类名必须相同,其扩展名为.java,源文件中最多只能有一个public类,其他类的个数不限。且Java是区分大小写的。 故本题答案为B。 15.png图片 本题考的是Java的简单数据类型。 整型常量分3种书写格式: (1)十进制整数,如189,-360。 (2)八进制整数,以0开头,如012表示十进制的10。 (3)十六进制整数,以0x或0X开头,如0x123表示十进制数291。 另外选项B的书写格式表示科学计算,E是指数符。 故本题答案为D。 16.png图片 本题考的是运算符。 "?:"是条件运算符,条件运算符是三元运算符。 三元条件表达式的一般形式为: expressinon1?expression2:expression3 其中表达式expression1应该是关系或布尔表达式,其计算结果为布尔值。如果该值为true,则计算表达式expression2,并将计算结果作为整个表达式的结果;如果为false,则计算表达式expression3,将计算结果作为条件表达式的结果。 故本题答案为A。17.png图片 本题考查的是算术运算符。 首先说明一点,在Java语言中,取模运算符%,其操作数可以为浮点数。 对于二元算术运算符,其表达式结果的类型归纳为以下几类情况: (1)操作数全为整型,那么,只要其中有一个为long型,则表达式结果为long型。 (2)两个操作数全是byte型或short型,表达式结果也为int型。 (3)操作数为浮点型,只要其中有一个为double型,表达式结果就是double型。 (4)两个操作数全是float型或其中一个是float型,而另外一个是整型,则表达式结果为float型。 故本题答案为B。 18.png图片 本题考查的是赋值运算符。 赋值运算符(=)把一个表达式赋给一个变量,在赋值运算符两侧不一致的情况下,如果左侧变量类型的级别高,则右侧的数据被转化为与左侧相同级别的数据类型后赋给左侧变量;否则,需要使用强制类型转换运算符。 本题中选项D右侧433为int型,而左侧是比它级别低的byte型,且byte型的数据范围是-128~+127,所以此选项不正确。 故本题答案为D。19.png图片 本题考查的是条件语句。 if-else if结构: if(条件1) statement1;或{block1} else if(条件2) statement2;或{block2} …… else if(条件N) statementN;或{blockN}[else statementN+1;或{blockN+1}] 执行过程如下: 判断条件1:结果为真,执行statement1;或{block1},执行完直接跳到statementN+1;或{blockN+1}下面的语句继续执行;结果为假,判断条件2:结果为真,执行statement2;或{block2},执行完直接跳到statementN+1;或{blockN+1}下面的语句继续执行;结果为假,判断条件3……判断条件N:结果为真,执行statementN;或{blockN},否则执行statementN+1;或{blockN+1}。 本题当x>0,输出Hello; x<=0,判断第一个else后面的if条件; x<=0&x>-3,输出Nice to meet you!; x<=-3,输出How are you? 故本题答案为C。 20.png图片 本题考查的是main()方法的组成。 main()方法是一个特殊的方法,它是所有的Java Application程序执行的入口点,所以任何一个Java Application方法必须有且只能有一个main()方法,而且这个main()方法的方法头必须按照下面的格式书写: public static void main(String args[]) 或public static void main(String[] args) 因为对于一个方法来讲,它是由方法头和方法体组成,其中方法头的一般格式如下: 修饰符1 修饰符2 ……返回值类型 方法名(形式参数列表)throw[异常列表] 所以,main()方法头中的public、static属于修饰符,void是返回类型,main为方法名,String args[]是形式参数。 故本题答案为C。 21.png图片 本题考查的是内部类。 在Java中经常使用内部类,但一般采用内部类的原因有以下几点: 1、内部类的对象可以访问外部类的成员和方法。 2、实现事件监听时,采用内部类、匿名类容易实现。 3、编写事件驱动程序,内部类很方便。 本题中,不存在内部类对外部类的数据访问,故A是错的;同样也不存在同一包内其它类访问该内部类的问题,故选项C也是错的;又因为ActionListener事件监听器在Java中无事件适配器,所以此内部类不可能用于生成事件适配器。 故本题答案为B。22.png图片 本题考查的是数组大小的调整。 Java语言中用一种特殊的类-java.util.ArrayList(数组列表)在运行时动态调整数组的大小。ArrayList类在定义数组时,不必限定数组的大小。 故本题答案为C。23.png图片 本题考查的是接口的概念。 接口是不包含成员变量和方法实现的抽象类,它只包含常量和方法的定义。接口的主要功能是: (1)不管类的层次,可实现互不相关的类具有相同的行为。 (2)通过接口说明多个类所需实现的方法。 (3)通过接口可以了解对象的交互界面,无需了解对象所对应的类。 所以选项A、B、C都是正确的叙述。另外,由于接口不包括任何实现,所以与存储空间没有任何关系。所以选项D的叙述是错误的。 故本题答案为D。24.png图片 本题考查的是类的继承。 对一个类的继承是指在现有类(父类)的基础上构建一个新类(子类),子类重用(继承)了父类的方法和状态,同时还可以向新类中增添新的方法和状态。Java中创建子类是通过在类声明中加入extends子句来实现的。 故本题答案为B。25.png图片 本题考查的是窗体的方法。 windowOpened是打开窗体后将要执行的方法。windowClosed是关闭窗体后将要执行的方法,windowClosing是在关闭窗体时要执行的方法,该方法可以执行窗体的关闭功能。windowDeactivated是窗体处于非激活时将会执行该方法。因此windowClosing是可以实现窗口关闭操作的方法。 故本题答案为C。26.png图片 本题考查的是Applet的基础知识。 Applet是一类非常重要的Java程序,一般来说其嵌入在HTML语言中,它与Application不同之处在于,它必须要通过其它程序调用执行,本身不能被直接解释执行,故A是错的。Applet是java.applet.Applet的子类,如果其采用了swing构件,则是javax.swing.JApplet的子类,在HTML中可以通过<PARAM>标记向Applet传递参数。 故本题答案为A。27.png图片 本题考查的是Applet生命周期概念。 在Applet程序序中有如下几个方法与其生命周期相关:init()方法用来在加载Applet时完成初始化工作;start()方法用来启动Applet的执行;stop()用来停止Applet的执行,例如,用户离开Applet页面或浏览器;destroy()用来完成撤消清理工作,准备卸载。因此在与Applet生命周期相关的方法的数量为四个。 故本题答案为A。28.png图片 本题考查的是正则表达式。 正则表达式必须对字符串进行匹配,因此选项A是错误的,对于任一二进制串,正则表达式也无法匹配,对于一个回文字串,正则表达式无法匹配,故选取项A、B、C也都是错误的,对于一个公式,由于其符合3型文法标准,故必能与正则表达式相匹配。 故本题答案为D。29.png图片 本题考查的是线程的相关知识。 Java的线程调度策略是一种基于优先级的抢先式调度。这种调度策略的含义是:Java基于线程的优先级选择高优先级的线程进行运行。该线程(当前线程)将持续运行,直到它中止运行或其它更高优先级程成为可运行时。所以选项C的叙述是正确的。在线程的几种基本控制方法中,sleep()方法使比其低的优先级线程运行;yield()方法只让给同优先级运行。所以选项A、B的叙述均是正确的。 抢先式调度可能是分时的,即每个池中的轮流运行;也可能不是,即线程逐个运行。所以即使具有相同优先级的多个线程的调度也不一定是分时的,它的运行方式是由具体JVM而定的。 故本题答案为D。30.png图片 本题考查的是线程状态与生命周期。 线程的生命周期主要分为如下几个状态:新建状态、可运行状态、运行状态、阻塞状态、终止状态。 假设当前线程处于运行状态,则会改变线程当前状态的操作总结如下: (1)当前线程执行了yield(),或当前线程因调度策略(执行过程中,有一个更高优先级的线程进入可运行状态,这个线程立即被调度执行,当前线程占有的CPU被抢占;或在分时方式时,当前执行线程执行完当前时间片)从而导致当前线程进入可运行状态。 (2)线程调用了sleep()方法、join()方法、wait()方法时,线程进入阻塞状态。 其中yield()方法的作用是暂停当前线程的执行,从而允许与它具有相同优先级的线程执行,如果不存在可执行且与它同优先级的线程,则继续执行当前线程。 当某线程需要在synchronized块中等待共享数据状态改变时,调用wait()方法,这样该线程等待并暂时释放共享数据对象的锁,其它线程可以获得该对象的锁,并进入synchronized块对共享数据进行操作,而此线程则放入wait pool中,转入阻塞状态,当其它线程对共享数据操作完后,只要调用notify()方法就可以通知正在等待的线程重新占有锁,并运行。 sleep方法的作用是让当前线程处于休眠状态,并持续一定的时间,该时间的长短由sleep()方法的参数决定。sleep()方法结束后,线程将进入可运行状态。 所以对选项A、B、C的调用都会改变线程生命周期中的状态,而isAlive()方法的作用是测试线程,以确定线程是否活着。此方法并不会改变线程生命周期中的状态。 故本题答案为D。31.png图片 本题考查的是方法参数列表的格式。 参数列表的各项间用逗号隔开,每项中包含类型及变量两部分,因此选项B,D是错误的,由于在方法的主体中出现了out实例,但没有它的定义存在,所以其定义应该在参数列表中。 故本题答案为C。32.png图片 本题考查的是逻辑运算符。 由于逻辑运算符"&&"采用的是"短路"方式进行计算的,即若左边表达式为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。 故本题答案为A。33.png图片 本题考查的是Matcher类。 在J2SE1.4中的正则表达式包中存在一个匹配器类。该类用于将一个输入字符串与模式串进行比较,在这个类中通过matches方法用来对输入字符串与模式串的比较,如果匹配成功则返回true否则返回false;matcher.find()方法用来寻找下一模式匹配串;matcher.start()用来返回匹配串的一个起始索引整数值;matcher.end()用来返回匹配串的终止索引整数值。 故本题答案为A。 34.png图片 本题考查的是线程的同步问题。 对象锁在如下几种情况下由持有线程返还: (1)当synchronized()语句块执行完后。 (2)当在synchronized()语句块中出现例外(exception)。 (3)当持有锁的线程调用该对象的wait()方法。此时该线程将释放对象的锁,而被放入对象的wait pool中,等待某事件的发生。 而suspend()方法只是基本线程控制方法,在一个线程中调用t.suspend(),将使t暂停执行,要想恢复线程,必须由其他线程调用t.resume()恢复t的执行。 故本题答案为B。 35.png图片 本题考查的是Applet的安全限制。 在Java1.0中,沙箱对Applet限制根本无法排除,而在Java2中可以通过策略文件来授予Applet所需的权限,该文件可以通过文本编辑器进行编辑,也可以通过图形化工具来编辑。 故本题答案为C。36.png图片 本题考查的是多线程。 该程序实现了线程的创建。 在JAVA中,创建线程的方法有两种:一种是通过创建Thread类的子类来实现,另一种方法是通过实现Runnable接口的类来实现。 通过继承Thread类实现多线程的方法是首先设计Thread的子类,然后根据工作需要重新设计线程的run方法,再使用start方法启动线程,将执行权转交到run。 本题中,程序虽然继承了Thread类,并且重写了run方法,但是语句"Thread t=new Thread();"调用的还是Thread类的run方法,所以,程序通过编译,且运行正常,但没有任何输出。 如果想要打印出一个"Hello",则需要将语句"Thread t=new Thread();"修改为"Thread t=new Test();"。 故本题答案为C。37.png图片 本题考查的是多线程。 线程的创建有两种方法:实现Runnable接口和继承Thread类。 通过实现Runnable接口创建线程:当实现Runnable接口的类的对象用来创建线程后,该线程的启动将使得对象的run()方法被调用。通过这种方式创建线程的过程是:Runnable的一个实例作为参数传递给Thread类的一个构造方法,该实例对象提供线程体run()。 故本题答案为B。38.png图片 本题考查的是循环嵌套。 本程序中定义了一个int型的多维数组data[][],程序中利用for循环"for(int i=0;i<data.length;i++)"判断并输出数组data[][]中的元素,当变量i的值不小于数组长度(数组长度为3)时,循环终止。循环中的判断语句"if(i%2==0)"用于判断输出的元素,符合条件则输入"data[i][4] "。 循环运行过程如下: 第1轮:当i=0时,i%2==0,条件为真,输出"data[i][4] ":5 ; 第2轮:当i=1时,i%2==0,条件为假,不执行输出语句; 第3轮:当i=2时,i%2==0,条件为真,输出"data[i][4] ":555 ; 第4轮:当i=3时,i<data.length条件不满足,退出循环。 故本题答案为A。39.png图片 本题考查的是线程的基本控制。 当线程完成运行并结束后,将不能再运行。除线程正常运行结束外,还可用其他方法控制其停止。可以用stop()方法强行终止线程,但不提倡使用这种方法,容易造成线程的不一致。可以使用标志flag,通过设置flag通知一个线程应该结束。 故本题答案为B。40.png图片 本题考查的是并发控制。 Java中对共享数据操作的并发控制是采用传统的封锁技术。一个程序中单独的、并发的线程对同一个对象进行访问的代码段,称为临界区。在Java语言中,临界区可以是一个语句块或是一个方法,并且用"synchronized"关键字标识。 故本题答案为C。 通过系统梳理这些基础选择题考点,结合代码实践和模拟练习,可以有效提升Java二级考试的通过率。建议考生在备考过程中多动手编写测试代码,加深对知识点的理解记忆。
-
Java字符串处理与元音统计解析 Java字符串处理与元音统计解析 在计算机等级考试二级Java的字符串操作部分,字符遍历和条件判断是基础但重要的考点。本文将通过一道统计英文文本中元音字母数量的题目,详细解析字符串长度获取、字符遍历以及条件判断等关键技术点,帮助考生掌握这类题型的解答方法。 11.png图片 一、题目分析 题目要求 程序功能: 统计给定英文文本字符串中的元音字母(a,e,i,o,u)数量 不区分大小写(即大写和小写元音都应统计) 输出格式:"The text contained vowels: 88" 补全指定位置的代码,不能修改已有代码 题目源代码 public class Java_3{ public static void main(String[] args) { String text = "Beijing, the Capital City, is the political," + "cultural and diplomatic centre of China. It has" + "become a modern international cosmopolitan city" + "with more than 11 million people. The Capital" + "International Airport, 23.5 km from the city centre," + "is China's largest and most advanced airport."; int vowels = 0 ; //*********Found********* int _____________ = text.length(); for(int i = 0; i < textLength; i++) { //*********Found********* char ch = Character.toLowerCase(text.__________); if(ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u') { //*********Found********* ____________; } } System.out.println("The text contained vowels: " + vowels + "\n" ); } }示例文本 "Beijing, the Capital City, is the political, cultural and diplomatic centre of China..." 二、解题思路与填空详解 第一个填空位置 int _____________ = text.length();需要填入:存储字符串长度的变量声明 正确答案:textLength 解释: 从后续代码可见使用了textLength变量 这是存储字符串长度的合理命名 text.length()返回字符串的字符数 第二个填空位置 char ch = Character.toLowerCase(text.__________);需要填入:获取字符串指定位置字符的方法 正确答案:charAt(i) 解释: 需要获取text字符串中第i个字符 charAt(int index)是String类的方法 配合循环变量i遍历每个字符 第三个填空位置 ____________;需要填入:元音计数器递增语句 正确答案:vowels++ 解释: 当字符是元音时需要增加计数器 vowels变量已在前面声明并初始化为0 ++是标准的递增运算符 三、完整正确代码 public class Java_3{ public static void main(String[] args) { String text = "Beijing, the Capital City, is the political," + "cultural and diplomatic centre of China. It has" + "become a modern international cosmopolitan city" + "with more than 11 million people. The Capital" + "International Airport, 23.5 km from the city centre," + "is China's largest and most advanced airport."; int vowels = 0; int textLength = text.length(); for(int i = 0; i < textLength; i++) { char ch = Character.toLowerCase(text.charAt(i)); if(ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u') { vowels++; } } System.out.println("The text contained vowels: " + vowels + "\n"); } }四、关键知识点解析 1. 字符串基本操作 length():获取字符串长度 charAt(int index):获取指定位置字符 toLowerCase()/toUpperCase():大小写转换 2. 字符遍历方法 标准遍历模式: for(int i=0; i<str.length(); i++) { char ch = str.charAt(i); // 处理字符 }3. 字符判断技巧 使用逻辑或(||)组合多个条件 先统一转换为小写或大写再比较 使用switch语句也可实现: switch(ch) { case 'a': case 'e': case 'i': case 'o': case 'u': vowels++; break; } 五、常见错误分析 索引越界: 使用<=而不是<导致越界 忘记字符串索引从0开始 大小写问题: 未统一大小写导致漏统计 错误写成toLowerCase(text)(应为字符转换) 计数器错误: 忘记初始化计数器 递增语句写错位置 字符获取错误: 混淆charAt()和getChar() 忘记传递索引参数 六、扩展思考 1. 使用增强for循环 Java 5+可以使用字符数组遍历: for(char ch : text.toCharArray()) { ch = Character.toLowerCase(ch); // 判断元音 }2. 正则表达式方法 更简洁但效率略低的方法: int vowels = text.replaceAll("[^aeiouAEIOU]", "").length();3. 统计各元音数量 扩展功能:分别统计各元音出现次数 int[] counts = new int[5]; // a,e,i,o,u for(char ch : text.toLowerCase().toCharArray()) { switch(ch) { case 'a': counts[0]++; break; case 'e': counts[1]++; break; case 'i': counts[2]++; break; case 'o': counts[3]++; break; case 'u': counts[4]++; break; } }七、考试技巧 字符串API记忆: 熟记length()、charAt()等常用方法 注意方法名称的大小写 循环边界检查: 从0开始到length()-1 使用<而不是<= 字符处理技巧: 统一大小写简化判断 使用逻辑或组合条件 代码补全策略: 根据变量名推断用途 观察上下文代码模式 八、模拟练习 题目:补全统计数字字符的程序 public class DigitCounter { public static void main(String[] args) { String str = "Java 2 Level Exam 2023"; int digits = 0; //*********Found********* for(int i=0; i<_________; i++) { char ch = str.charAt(i); //*********Found********* if(__________________) { digits++; } } System.out.println("数字字符数: " + digits); } }答案: str.length() Character.isDigit(ch) 九、总结 通过这道元音统计题,我们掌握了: 字符串长度获取和字符遍历方法 字符大小写转换技术 多条件判断的逻辑组合 计数器的正确使用方法 关键点记忆: length()获取字符串长度 charAt()获取指定位置字符 Character.toLowerCase()转换小写 使用||组合多个相等判断 掌握这些基础知识不仅有助于通过Java二级考试,也是日常编程中的常用技能。希望这篇解析能帮助你在考试中顺利解决字符串处理相关题目!