java考试复习
1) 判断题、单选题、填空题看网上测试;
注意!!!(单选题答案里面的粗黑的有分号是代表同时满足;填空题答案里面的粗黑的有分号是代表其中一个就满足)
第1章
(做错的题目)
-
判断题
-
java有垃圾回收机制,内存回收程序可在指定的时间释放内存对象。(×)
解释:
- 书本解释(Java有一个系统级的线程,对内存的使用进行跟踪,该线程可以在系统空闲时对不用的内存进行回收,使程序员从繁忙的内存管理中解放出来。)
- JAVA虽然有垃圾回收机制,但是不能在指定的时间释放内存对象,只能在程序运行期间,当虚拟机空闲的时候回收。
-
Java是一种纯面向对象的语言,支持封装性、继承性和多态性等三个特点。(√)
-
单选题
- java的API结构中,不属于类库主要包括的核心包的是 javadoc包
-
填空题
- JAVA程序的安全性体现在多个层次上,在 平台 层上,有通过配置策略,可设定访问资源域,而无需区分本地或远程。
- Java Application应用程序的编写和执行分3步进行:编写源代码、编译源代码、解释执行字节码。
- JAVA类库具有 跨平台 的特点,保证了软件的可移植性。
- 开发与运行Java程序需要经过的三个主要步骤为: 编辑源程序、编译生成字节码和 解释运行 字节码。
- JAVA源文件的文件名必须与 公共类保持一致。
- 在编写执行JAVA程序的过程中需要用到一些工具,SUN公司为我们提供了一套JDK工具,它主要包括:javac.exe、java.exe、 java文档生成器(javadoc.exe) 、javap.exe、jkb.exe 。
- JAVA程序的安全性体现在多个层次上,在 解释 层上,有字节码校验器、测试代码段格式和规则检查,访问权限和类型转换和法性检查,操作数堆栈的上溢或下溢,代码参数类型合法性等。
- JAVA程序的安全性体现在多个层次上,在 编译 层,有语法检查。
- JVM的执行过程有三个特点:多线程、 动态连结 、异常处理。
- 开发与运行Java程序需要经过的三个主要步骤为编辑源程序、 编译生成字节码 和解释运行字节码。
(做对的题目)
-
判断题
-
一个".java"源文件中可以包括多个公共类。(×)
解释: 可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致。一个文件中可以只有非public类,如果只有一个非public类,此类可以跟文件名不同。
-
Java的源代码中定义几个类,编译结果就生成几个以.class为后缀的字节码文件。(√)
-
由于Java的平台无关性使得Java程序经过一次编译后可以移植到别的任意平台上解释执行,即Java具有可移植性。(√)
-
Java内置了多线程技术,定义了一些类和方法等来建立和管理用户定义的多线程,它具有并发性。(√)
-
Java语言自带的虚拟机很好地实现了跨平台性,它提供了一个字节码到底层硬件平台及操作系统的屏障,使得Java源程序代码经过编译后生成二进制的字节码是与平台无关的,但可被Java虚拟机解释执行。(√)
-
Java语言不区分大小写。(×)
-
Java提供自动垃圾回收机制,异常处理机制,进行严格的类型检查,它具有健壮性。(√)
-
Java的源代码中定义几个类,编译结果就生成几个以.class为后缀的字节码文件。(√)
-
Java语言是一种解释执行的语言。(√)
-
Java风格类似于C++,但它摒弃了C++中容易引起程序错误的地方,它是一种比较难学和比较复杂的编程语言。(×)
-
Java在语言级安全性、编译时安全性、运行时安全性、可执行代码安全性等四个层面都采取相关技术。(√)
-
单选题
-
java语言的执行模式是 半编译和半解释型。
-
在当前的java实现中,每个编译单元就是一个以 java 为后缀的文件。
-
以下叙述中不属于Java语言特点的是 宏定义。
-
Java语言具有许多优点和特点,下列选项中,哪个反映了Java程序并行机制的特点?多线性
-
下列关于虚拟机说法错误的是:虚拟不可以用硬件实现
-
下列关于java语言的叙述中,正确的是 面向对象的语言
-
命令“Java.exe”的作用:java编译器
-
编译Java程序时,用于指定生成class文件位置的选项是 -d
-
JDK中,用 javac.exe 命令对其源文件进行编译,生成字节码文件。
-
Java属于以下哪种语言 高级语言
-
java语言是1995年由 Sun 公司发布的。
-
下列说法哪个正确? 一个程序可以包含多个源文件
-
编译Java Application 源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为 .class
-
下面哪种类型的文件可以在Java虚拟机中运行? .class
-
Java SE的命令文件(java、javac、javadoc等)所在目录是 %JAVA_HOME%\bin
-
Java为移动设备提供的平台是 J2ME
-
每个java的编译单元可包含多个类或界面,但是每个编译单元最多只能有 一个 类或者界面是公共的。
-
下列不属于java语言鲁棒性特点的是:java能运行虚拟机实现跨平台
-
下列语句哪一个正确 Java程序经编译后会产生byte code
-
下列哪些语句关于Java内存回收的说明是正确的? 内存回收程序负责释放无用内存
-
java程序的执行过程中用到一套JDK工具,其中javac.exe指: java语言编译器
-
在以下供选择的概念中,不属于面向对象语言概念的是 函数
-
下列选项中,不属于Java语言特点的一项是 编译执行
-
填空题
-
java是一个网络编程语言,简单易学,利用了 面向对象 的技术基础,但又独立于硬件结构,具有可移植性、健壮性、安全性、高性能。
-
在JAVA语言中,将源代码翻译成 字节码 文件时产生的错误称为编译错误,而将程序在运行中产生的错误称为运行错误。
-
java可以跨平台的原因是 java虚拟机 。
-
Java源程序经过编译后的程序的扩展名是 .class。
-
1991年,SUN公司的Jame Gosling和Bill Joe等人,为电视、控制烤面包机等家用电器的交互操作开发了一个 Oak 软件,它是java的前身。
-
如果将类MyClass声明为public,它的文件名称必须是 MyClass.java 才能正常编译。
-
如果一个Java Applet程序文件中定义有3个类,则使用Sun公司的JDK编译器javac.exe编译该源程序文件将产生3个文件名与类名相同而扩展名为 .class 的字节码文件。
-
在JAVA语言中,将后缀名为 java 的源代码文件编译后形成后缀名为.class的字节码文件。
-
JAVA的产品主流操作系统平台是Solaris、Windows 和Macintosh。
-
JAVA的体系结构中,最下层是移植接口,上面一层是虚拟机,虚拟机的上层是java基本类和基本API,它们都是具有可扩展性。
-
Java源程序的扩展名是 .java
-
类库主要包括核心JAVA包、javax 和org扩展包。
-
Java程序中的单行注释符是 // 。
-
Java程序中的多行注释符是 /* */
-
J2ME是为嵌入式和 移动设备 提供的Java平台,它的体系结构由Profiles、Configuration和OptionalPackages组成。
-
JAVA程序包括源代码(.java文件)、由编译器生成的类(.class文件) 、由归档工具jar生成的.jar文件、对象状态序列化.ser文件。
-
JAVA语言的执行模式是半编译和 半解释型。
-
每个java应用程序可以包括许多方法,但必须有且只能有一个 main 方法。
-
JAVA的体系结构中,最下层是 移植接口 ,由适配器和JAVA OS组成,保证JAVA体系结构可以跨平台。
-
JAVA系统运行时,通过 垃圾回收 机制周期性的释放无用对象所使用的内存,完成对象的清除。
-
如果一个Java Applet源程序文件只定义有一个类,该类的类名为MyFirstApplet,则存储该源程序的文件名必须为 MyFirstApplet.java 。
-
JAVA解释器采用生成与体系结构无关的 字节代码 指令的技术,只需安装JAVA运行系统,就可保证JAVA程序可以在网络的任何地方运行。
第2章
(做错的题目)
-
单选题
- 下列java标识符,错误的是 1_file
- java用 break 来实现goto语句所特有的一些功能。
- 以下关于if语句的错误描述是 条件表达式可以是任意的表达式
-
填空题
- 标识符是由字母、下划线 、 $;美元符 为开头。
- float f=29.8F; f=f%10; 则f的值为 9.8
(做对的题目)
-
单选题
-
下列声明和赋值语句错误的是 float z=6.74567
-
自定义类型转换是由按 char-int-long-float-double 优先关系从低级数据转换为高级数据。
-
JAVA中,数据类型值中不可能出现的符号是 /
-
在字符串中,下列表示双引号的是 \"
-
java中,用 final 关键字定义常量。
-
下列属于条件运算符的是 ?
-
在java中语句:37.2 % 10的运算结果为 7.2
-
在java语句中,位运算操作数只能为整型或 字符型 数据。
-
~0010101语句的执行结果为 1101010
-
下列不属于分支语句关键字的是 while
-
以下哪个不是Java的原始数据类型 Boolean
-
如下哪个是Java中的标识符 width
-
关于选择结构下列哪个说法正确?if语句可以没有else语句对应
-
设 x = 2 , y = 4 , z = 3,则表达式 y+=z--/++x 的值是 5
解释: y+=z--/++x -> y = y + (z–)/(++x)
-
下列各选项中属于合法标识符的是 _vacl
-
设 y = 2 , z = 3 , n = 4,则表达式 n=n+-y*z/n 的值是 3
解释:n=n+-y*z/n -> n += -y*z/n
-
下列各选项中属于不合法标识符的是 2$_million
-
已知i为整形变量,关于一元运算++i和i++,下列说法正确的是 在任何情况下变量i的值都增1
-
下列数据类型转换,必须进行强制类型转换的是 int->char
-
假设int x=2,三元表达式 x>0?x+1:5 的运行结果是以下哪个?3
-
下列不属于简单数据类型的是 类
-
java中,八进制数以 0 开头。
-
在java中,Integer.MAX_VALUE表示 整数类型最大值
-
下列语句片断中,four得值为 '4’
int three=3;
char one=‘1’;
char four=(char)(three+one);
-
int类型变量在内存中的位数为 32
解释:4个字节,24
-
关于变量的作用范围,下列说法错误的是 异常处理参数作用域为整个类
-
00101010 & 00010111语句的执行结果为 00000010
-
在java语句中,运算符 && 实现 逻辑与
-
00101010 | 00010111语句的执行结果为 00111111
-
复合语句是用 大括号{} 括起来的一段代码。
-
多分支语句 switch(表达式){}中,表达式不可以返回哪种类型的值 接口型
-
三元条件运算符ex1 ? ex2:ex3,相当于下面 if(ex1) ex2; else ex3 语句。
-
一个循环一般应包括哪几部分内容 初始化部分,循环体部分,迭代部分,终止部分
-
在java中,字符串由java.lang.String和 java.lang.StringBuffer 定义。
-
有以下方法的定义,请选择该方法的返回类型 double
returnType method(byte x, double y)
{
return (short) x/y*2;
}
-
下列 0x7E 代表十六进制整数。
-
以下关于JAVA程序的叙述中正确的是 JAVA程序中必须有一个主函数
-
填空题
-
设 x = 2 ,则表达式 ( x + + )/( - - x) 的值是 2
-
在java语言中,boolean型常量只有true和 false 两个值。
-
数据类型包括简单数据类型和复合数据类型。复合数据类型又包括类、数组和 接口 。
-
java语言中的各种数据类型之间提供自动转换,如第1操作数是byte类型,第2操作数是float类型,其结果是 float 类型。
-
在java语言中,如果实数后没有字母,计算机默认值为 double 类型。
-
设 x == 2 ,则表达式 ( x + + )/3 的值是 0 。
-
Java中用于定义小数的关键字有两个:float 和 double ,后者精度高于前者。
-
在Java中定义一个字符串类型的变量str的语句是:String str; 。
-
当声明一个数组int arr[] = new int[5]; 时,这代表这个数组所保存的变量类型是int,数组名是 arr 。
-
当声明一个数组int arr[] = new int[5]; 时,这代表这个数组元素下标的使用范围是0到 4。
-
假设x=13,y=4,则表达式x%y != 0的数据类型是 boolean。
-
JAVA应用程序运行的第一个函数是 main
-
int a=6,b=5; float c; c=a/b; 则c的值为 1.0
-
Java的三目运算符是 ?:
-
int x=2,y=5; boolean b;b=++x>4&++y<3,则x、y、b的值为3 ,6 和 false
-
以下程序段的输出结果是 三角形
int x = 5, y = 6, z = 4;
if (x + y > z && x + z > y && z + y > x)
System.out.println(“三角形”);
else
System.out.println(“不是三角形”);
-
else子句不能单独作为语句使用,它必须和if子句配对使用,那么else子句与if子句的配对原则是:else子句总是与离它 最近 的if子句配对使用。
-
递归的基本思想就是“自身调用自身”,一个使用递归技术的方法将直接或间接地调用 自身 的方法。
-
在Java的基本数据类型中,char型采用Unicode编码方案,无论是中文字符还是英文字符,每个Unicode码都是占用 2个字节内存空间。
-
语句boolean b1= 5 != 8;是声明一个变量并赋值,b1的值是 true。
-
浮点型数据属于实型数据,分为float和 double 两种类型。
-
标识符是以 字母、下划线、美元符号作为首字母的字符串序列。
-
八进制整数012表示十进制的 10
-
若x = 5,y = 10,则x >= y的逻辑值为 false
-
Java中用于两个数相等比较的运算符是 ==
-
当声明一个数组int arr[] = new int[5]; 时,这代表这个数组的大小为 5
-
假设x=13,y=4,则表达式 x%y != 0 的值是 true 。
-
已知:int a =8,b=6; 则:表达式 ++a-b++ 的值为 3。
-
短路逻辑运算符包括 && 和|| 。
-
定义一个单精度浮点型变量f,并赋值为1.56,JAVA语句为 float f =1.56F;float f =1.56f
-
循环语句包括while、do while和 for 三种。
-
java的跳转语句中 不包含 (包含/不包含)goto语句。
第3章
(做错的题目)
-
判断题
- 静态初始化器是在其所属的类加载内存时由系统自动调用执行。(√)
-
单选题
- 为AB类的一个无形式参数无返回值的方法method书写方法头,使得使用类名AB作为前缀就可以调用它,该方法头的形式为 static void method()。
- 关于构造方法,下列说法错误的是 可以调用构造方法来初始化该类中的数据
解释:类中的数据有类成员、类方法,但构造方法对类成员进行初始化 - 下面关于Java Application 程序结构特点描述中,错误的是 一个.java文件中定义多个类时,允许其中声明多个public类
-
填空题
- JAVA源文件中最多只能有一个 公有(public);公有;public 类,其它类的个数不限。
(做对的题目)
-
判断题
- 消息就是向对象发出服务请求,是对数据成员和成员方法的引用。(√)
- 在Java中对象可以赋值,只要使用赋值号(等号)即可,相当于生成了一个各属性与赋值对象相同的新对象。 (×)
解释:这种适用于python,java的还要声明赋值号左边的类型 - 方法内部类中不能访问外部类的成员变量。(×)
- 构造函数用于创建类的实例对象,构造函数名应与类名相同,返回类型为void。(×)
- 静态初始化器是在其所属的类加载内存时由系统自动调用执行。(√)
- Java程序创建新类对象用关键字new,回收无用的对象使用关键字free。(×)
解释:自动回收
-
单选题
-
在Java语言中,封装是借助于 类 实现的。
-
定义一个类,必须使用的关键字是 class
-
关于对象的删除,下列说法正确的是 java把没有引用的对象作为垃圾收集起来并释放
-
关于方法main()的说法哪个正确? 一个类中可以没有main()方法
-
关于构造函数的说法哪个正确?构造函数与类同名
-
下列关于构造方法的叙述中,错误的是 构造方法不可以重载,但可以继承
解释:Java 构造函数不可以继承,因此不能被重写,但可以被重载(重写是父类的方法被子类重修改写了,重写在子类;重载就是一个类里面的同名方法,重载在同一个类,参数个数或类型)
参考:理解 Java 构造函数不可以继承
-
在编写Java Applet程序时,需在程序的开头写上 import java.applet.Applet 语句。
-
下列哪种说法是正确的 实例方法可直接调用本类的类方法
-
return语句:方法中可以有多句return
-
Java application中的主类需包含main方法,以下哪项是main方法的正确形参?String[] args
-
下列不属于面向对象编程的三个特征的是 指针操作
-
不允许作为类及类成员的访问控制符的是 static
解释:只有公有,保护,私有,默认有访问权限,没有static
-
下列修饰符中与访问控制无关的是 final
-
关于对象成员占用内存的说法哪个正确?同一个类的对象使用不同的内存段,但静态成员关系相同的内存空间
-
构造函数何时被调用?创建对象时
-
下列static符号修饰成员后,可以在Java中用类名前缀直接调用。
解释:Java中static的用法
- 在类的修饰符中,规定只能被同一包类所使用的修饰符是 默认
-
填空题
- 对象是对事物的抽象,而 类 是对对象的抽象和归纳。
- 在java程序中,用关键字 final 修饰的常量对象创建后就不能再修改了。
- java语言以 类 为程序的基本单位,它是具有某些共同特性实体的集合,是一种抽象的概念。
- new是 创建 与初始化对象的操作符。
- 在java程序里,同一类中重载的多个方法具有相同的方法名和 不同 的参数列表,重载的方法可以有不同的返回值类型。
- 一个对象的生命周期包含三个阶段:生成、使用和清除。
- 如果一个类中定义了几个名为method的方法,这些方法的参数都是整数,则这些方法的 参数个数 必须是不同的,这种现象称为方法的重载。
- 构造方法是一种特殊的成员方法,构造方法名与 类名 相同。
- 在方法体内定义的变量是 局部变量。
- 在一个类的内部嵌套定义的类称为 内部类(Inner Class);内部类;Inner Class;内部类(Inner Class) 。
- 类中的 构造方法;构造函数 是一个特殊的方法,该方法的方法名和类名相同。
- 把类实例化可以生成多个对象,使用 new 运算符生成对象,并为对象分配内存空间。
- 类变量在类中声明,而不是在类的某个方法中声明,它的作用域是 整个类 。
- 在java中有一种叫做 构造函数;构造方法 特殊方法,在程序中用它来对类成员进行初始化。
- 定义一个类包括定义类头和定义 类体 两个部分。
- java是面向对象语言,对象是客观事物类的 实体;实例,对象与之是一一对应的,它是很具体的概念。
- 创建一个类就是创建一个新的数据类型,而类在java中属于 引用;复合 数据类型。
- 定义类的保留字是 class 。
- 若类中没有定义任何的构造方法,则运行时系统会自动为该类生成一个 默认构造 方法。
- 构造函数;构造方法 是一个特殊的方法,用于创建一个类的实例。
第4章
(做错的题目)
-
判断题
- 父类的构造方法可以被子类覆盖。(×)
-
填空题
- 一个类如果实现一个接口,那么它就须要实现接口中定义的全部方法,否则该类就必须定义成 抽象类
- 如果一个类包含一个或多个abstract方法,则它的中文名叫抽象类。
- 接口中定义的成员的属性均是 public;公有 属性。
- 实现接口中的抽象方法时,必须使用 抽象类 的方法头。
- 创建一个包的语句应该放在程序中的位置是第 1 句。
- 我们在java程序中,把关键字 supper 加到方法名称的前面,来实现子类调用父类的方法。
(做对的题目)
-
判断题
- 具有关键字abstract ,在实现内容上没有完全定义的类叫抽象类。(√)
- java没有多继承,但可以通过接口的形式来达到多继承的目地。(√)
- 类中static修饰的变量或方法可以使用类名或对象名对其访问。(√)
- 静态初始化器是在其所属的类加载内存时由系统自动调用执行。(√)
- 接口中没有自身的构造方法,所有成员方法都是public abstract方法,即抽象方法。(√)
- 拥有abstract方法的类是抽象类,但抽象类中可以没有abstract方法。(√)
-
单选题
- 下列哪一种叙述是正确的 声明抽象方法不可写出大括号
- 抽象方法是 是没有方法体的方法
- 关于继承的说法正确的是:子类将继承父类的非私有属性和方法。
- 在类的继承关系中,需要怎生遵循以下哪个继承原则?单一
- 关键字supper的作用是 用来访问父类被覆盖的成员变量;用来调用父类中被重写的方法;用来调用父类的构造函数
- 下列说法正确的是 包(package)由一组类(class)和界面(interface)组成
- 在浏览器中执行applet程序,以下选项中的哪个方法将被最先执行 init()。
- 定义一个接口必须使用的关键字是 interface
- 关于super的说法正确的是:是指当前对象的父对象
- 关于接口哪个正确?实现一个接口必须实现接口的所有方法
- 下列关于继承的描述中,正确的是 java的单一继承使代码更可靠
- 下面关于类的继承性的描述中,错误的是 父类中成员的访问权限在子类中将被改变
- 进行java基本GUI设计需要用到的包是 java.awt
- 以下关于继承的叙述正确的是 在Java中类只允许单一继承
- Outer类中定义了一个成员内部类Inner,需要在main()方法中创建Inner对象,以下四种方式哪一种是正确的?Outer.Inner in = new Outer.new Inner( );
- 下面关于接口的描述中,错误的是 一个类只允许继承一个接口
- 下面程序定义了一个类,关于该类说法不正确的是 该类能调用new abstractClass(),方法实例化为一个对象;该类不能被继承;该类的方法都不能被重载
abstract class abstractClass{
……
} - 若需要定义一个类域或类方法,应使用哪种修饰符?static
- 在使用interface声明一个接口时,只可以使用 public 修饰符修饰该接口。
- this和super:不能用在main()方法中
- 覆盖与重载的关系是 覆盖只有发生在父类与子类之间,而重载可以发生在同一个类中
- 下列有关Java中接口的说法哪个是正确的? 若一个类要实现一个接口,则用到 “implements” 关键字
- 下列关于抽象类的描述中,错误的是 抽象类是不可以定义对象的
- 下列哪些方法与方法public void add(int a){}为不合理的重载方法?public int add(int a)
解释:必须是参数个数或者括号内类型变化,括号外的可变可不变
-
填空题
- 在Java程序中,通过类的定义只能实现 单 重继承关系。
- 如果想要创建一个名为TestPackage 的包,则其语句应该是 package TestPackage ; 。
- abstrack类中不能有 private;私有 访问权限的数据成员或成员方法。
- 创建包时需要使用关键字是:package 。
- Java语言通过接口支持 多重 继承,使类继承具有更灵活的扩展性。
- 抽象方法只能存在于抽象类中。抽象方法用关键字 abstract 来修饰。
- 接口是一种只含有抽象方法或 常量 的一种特殊抽象类。
- 抽象(abstract) 方法是一种仅有 方法头 ,没有具体方法体和操作实现的方法,该方法必须在抽象类之中定义。
- 导入mypackage包中的所类的命令是 import mypackage.*;
- 在Java程序中,通过接口的定义可以实现 多 重继承关系。
- 接口(interface);接口;接口(interface) 只描述系统所提供的服务,而不包含服务的实现细节。
- 子类直接赋值给父类时,子类对象可自动转换为父类对象,父类赋值给子类时,必须将父类对象 强制转换 为子类对象。
- 子类在重新定义父类已有的方法时,应保持与父类完全相同的方法名、参数列表 和返回类型。
- 静态数据成员既可以通过对象名来访问,也可以通过 类名 直接访问它。
- 一个类如果实现一个接口,那么它就须要实现接口中定义的全部 方法;抽象方法 。
- java程序引入接口的概念,是为了弥补只允许类的 单继承 的缺憾。
- java语言中 Object 类是所有类的根。
- abstract方法 不能(不能或能)与final并列修饰同一个类。
- 终极(final);终极;final;终极(final) 方法是不能被当前类的子类重新定义的方法。
- 定义接口的保留字是 interface
- 类成员的访问控制符有private 、 protected 、public和默认四种。
- Java语言只允许单继承,指每个类只能有一个 父类 。
- 若子类和父类在同一个包中,则子类继承父类中的public、protected和默认成员,将其作为子类的成员,但不能继承父类的 private;私有 成员。
- Java语言中,定义子类时,使用关键字 extends 来继承父类。
- this 代表当前对象的引用,super表示的是当前对象的直接父类对象。
第5章
(做错的题目)
-
单选题
- 下列Exception类是所有逻辑异常类的父类。
- java语言中,下列哪一子句是异常处理的出口 finally{…}子句
-
填空题
- 按异常处理不同可以分为运行异常、捕获异常、声明异常和 抛出异常几种。
- 在异常处理中,若try中的代码可能产生多种异常则可以对应多个catch语句,若catch中的参数类型有父类子类关系,此时应该将父类放在子类 后面。
(做对的题目)
-
单选题
- 当某一线程正处于休眠状态,而另一个线程用 Thread 类中的interrupt()方法中断它时,抛出的异常类型是InterruptedException
- 以下关于java异常说法正确的是Throwable类是Java语言中Error类和Exception类的父类;当异常对象是Exception类(或其子类)的实例时,能通过Java 虚拟机或者throw语句抛出该异常对象,并能通过try…catch…finally处理;如果只用一个catch块捕捉多个异常对象,则catch 子句中的参数类型应是多个异常对象的父类
- 对于已经被定义过可能抛出异常的语句,在编程时必须使用try…catch语句处理异常,或用throws将其抛出
- 异常包含下列哪些内容?程序执行过程中遇到的事先没有预料到的情况
- 关于异常,下列说法正确的是异常是一种对象
- java中用来抛出异常的关键字是throw
-
填空题
- 根据异常的来源,可以把异常分为两种类型:系统定义的运行异常和 用户自定义的异常。
- 异常处理是由try 、catch 和finally块三个关键所组成的程序块。
- 根据异常的来源,可以把异常分为两种类型: 系统定义 的运行异常和用户自定义的异常。
- 变量按作用域分,可分为:局部变量、类变量、方法参数和 异常处理参数 。
- Throwable类有两个子类:Error 类和Exception类。
- 捕获异常要求在程序的方法中预先声明,在调用方法时用try-catch-finally语句捕获并处理。
- java语言认为那些可预料和不可预料的出错称为 异常。
- 抛出异常的程序代码可以是 java应用程序 或者是JDK中的某个类,还可以是JVN。
- 抛出异常、生成异常对象都可以通过 throw 语句实现。
- 同一段程序可能产生不止一种异常。可以放置多个 catch 子句,其中每一种异常类型都将被检查,第一个与之匹配的就会被执行。
- java语言的类库中提供了一个Throwable类,所有的异常都必须是它的实例或它子类的实例。
- catch子句都带一个参数,该参数是某个异常的类及其变量名,catch用该参数去与 抛出异常 对象的类进行匹配。
- 捕获异常的统一出口通过 finally 语句实现。
- 对程序语言而言,一般有编译错误和 运行错误两类。
- java虚拟机能自动处理 运行异常。
第6章
(做错的题目)
- 填空题
- 使用Iterator遍历集合时,首先需要调用 hasNext() 方法判断是否存在下一个元素,若存在,则调用next()方法取出该元素。
(做对的题目)
-
判断题
- Java中的数组没有length()这个方法,但有length的属性,而String有length()这个方法。(√ )
- 可以设计继承String类的Java子类。(× )
解释:不可以,因为String类有final修饰符,而final修饰的类是不能被继承的,实现细节不允许改变。
参考链接: https://www.cnblogs.com/shenxiaoquan/p/5941033.html
-
单选题
- 下面说法不正确的是Map接口将键映射到值,键可以重复,但每个键最多只能映射一个值。
- 下面那些方法不是接口Collection中已声明的方法得到元素个数的length()方法?
- 有整型数组:int[] x={7,12,2,35,8},则调用方法Arrays.sort(x)后,数组x中的元素值依次是 2 7 8 12 35
- 应用程序的main方法中有以下语句,则输出的结果是cccbbbaaa。
Hashtable hashtable=new Hashtable();
hashtable.put(“100”,“aaa”);
hashtable.put(“200”,“bbb”);
hashtable.put(“300”,“ccc”);
System.out.println(hashtable.get(“300”).toString()+ hashtable.get(“200”).toString()+ hashtable.get(“100”).toString()); - 下面程序段执行后b的值是 true
Integer x =new Integer(9);
boolean b = x instanceof Object; - 应用程序的main方法中有以下语句,则输出的结果是abcde
Hashtable hashtable=new Hashtable();
hashtable.put(“x”,“12345”);
hashtable.put(“y”,“67890”);
hashtable.put(“a”,“abcde”);
System.out.println(hashtable.get(“a”)); - 应用程序的main方法中有以下语句,则输出的结果是123
String s = “xxxxxxxxxxxxxxx#123#456#zzzzz”;
int n = s.indexOf("#");
int k = s.indexOf("#", n+1);
String s2 = s.substring(n+1, k);
System.out.println(s2); - 应用程序的main方法中有以下语句,则输出的结果是equals
String s = “abcd”;
String s1 = new String(s);
if (s = = s1) System.out.println(“the same”);
if (s.equals(s1)) System.out.println(“equals”);
-
填空题
- 下列程序输出结果为 14s 。
public class test{
public static void main(String args[]){
String s=“I am a string!”;
int n=s.length();
char c=s.charAt(7);
System.out.print(n);
System.out.println(c);
}
} - 数组是有序数据的集合,数组中的每个元素具有相同的数据类型 。
- 使用Iterator遍历集合时,首先需要调用hasNext()方法判断是否存在下一个元素,若存在,则调用 next() 方法取出该元素。
第7章
(做错的题目)
-
判断题
- Java中sleep()方法用来暂时中止执行的线程,在睡醒后,线程将进入就绪状态。(√)
-
单选题
- 线程同步中,对象的锁在当synchronized()语句块执行完后;当在synchronized()语句块执行中出现例外(exception)时;当持有锁的线程调用该对象的wait()方法时情况下持有线程返回。
-
填空题
- 线程模型在java中是由Thread类进行定义和描述的。
- java中,新建的线程调用start()方法、如myThread.start(),将使线程的状态从New(新建状态)转换为就绪;可执行状态。
- 访问临界资源的代码叫 临界代码。
- 线程的优先级在1至10之间,数值越大任务越紧急。
(做对的题目)
-
判断题
- Java中wait()方法用来暂时中止执行的线程,在睡眠后,线程将进入就绪状态。(×)
-
单选题
- 下列说法中,错误的一项是线程就是程序。
- 下面的哪一个关键字通常用来对对象加锁,从而使得对对象的访问是排他的?synchronized
- 线程调用了sleep()方法后,该线程将进入阻塞状态状态。
- Thread类的方法中,toString()方法的作用是返回线程的名称
- java用监视器机制实现了进程之间的异步执行。
- 在以下线程调用了yield()方法时情况下,线程就进入可运行状态。
- 线程控制方法中,yield()的作用是只让给同优先级线程运行
- 关于java线程,下面说法错误的是新线程一旦被创建,它将自动开始运行
- 在java语言中,临界区可以是一个语句块,或者是一个方法,并用synchronized关键字标识。
- 在java中的线程模型包含一个虚拟处理器;CPU执行的代码;代码操作的数据
- 以下哪个关键字可以用来对对象加互斥锁?synchronized
- 当某一线程正处于休眠状态,而另一个线程用 Thread 类中的interrupt()方法中断它时,抛出的异常类型是InterruptedException
-
填空题
- JAVA通过把共享资源的操作放在synchronized关键字定义的区域内实现同步。
- 线程的创建有两种方法:1)实现 Runnable接口;2)继承Thread类。
- 线程是程序中的一个执行流,一个执行流是由CPU运行的程序代码 、程序数据所形成的,因此,线程被认为是以CPU为主体的行为。
- 线程模型在java中是由 Thread 类进行定义和描述的。
- 多线程程序设计的含义是可以将程序任务分成几个并行执行的子任务。
- Thread类提供了一系列基本线程控制方法,如果我们需要让与当前进程具有相同优先级的线程也有运行的机会则可以调用yield( ) 方法。
- 多线程机制是java程序的并发机制,它能同步共享数据、处理不同的事件。
- 线程的终止一般可以通过两种方法实现:自然撤销或者是 被停止;被终止 。
- 按照线程的模型,一个具体的线程也是由虚拟的CPU、代码与数据组成,其中代码与数据构成了线程体,线程的行为由它决定。
- 多线程是java程序的 并发机制,它能同步共享数据,处理不同事件。
- 在一个时间只能由一个线程访问的资源称为临界资源。
- 在多线程系统中,多个线程之间有同步和互斥两种关系。
- 在多线程系统中,多个线程之间有 同步和互斥两种关系。
- 线程的优先级在1至 10之间,数值越大任务越紧急。
第8章
(做对的题目)
-
判断题
- 布局管理器是用来管理构件放置在容器的位置和大小的。(√)
- 容器里的组件的位置和大小是由布局管理器决定的。(√)
-
单选题
- JPanel的默认布局管理器是FlowLayout。
- 抽象窗口工具包AWT是java提供的建立图形用户界面GUI的开发包。
- Frame对象默认的布局管理器是BorderLayout
- Window是显示屏上独立的本机窗口,它独立于其它容器,Window的两种形式是Frame和Dialog
- java.awt包提供了基本的java程序的GUI设计工具,包含控件、容器和布局管理器
- 所有Swing构件都实现了Accessible 接口。
- 关于使用Swing的基本规则,下列说法正确的是Swing构件可直接添加到顶级容器中
- 以下哪个布局管理器使容器中各个构件呈网格布局,平均占据容器空间GridLayout
- 如果容器组件p的布局是BorderLayout,则在p的下边中添加一个按钮b,应该使用的语句是p.add(b,“South”);
- 声明并创建一个按钮对象b,应该使用的语句是Button b=new Button();
-
填空题
- Java的图形用户界面技术经历了两个发展阶段,分别通过提供AWT开发包和Swing开发包来体现。
- 类中的 构造方法是一个特殊的方法,该方法的方法名和类名相同。
- 容器本身是一个 构件;组件,具有放置其他构件和容器的功能。
- 如果用户确实需要亲自设置构件大小或位置,则应取消该容器的布局管理器,方法为:setLayout(null) 。
- 在面向对象系统中,消息分为两类:公有消息和私有消息。
- 在面向对象系统中,消息分为两类:公有消息和 私有消息 。
- java.awt包提供了基本的java程序的GUI设计工具,主要包括:构件、容器和 布局管理器等。
- java.awt包提供了基本的java程序的GUI设计工具,主要包括:构件、容器 和布局管理器等。
- 容器里的组件的位置和大小是由 布局管理器决定的。
- Swing组件中的JScrollPane组件是带滚动条的面板容器。
- GridLayout类是容器中各个构件呈网格布局的布局管理器,平均占据容器空间。
- 为了保证平台独立性,Swing是用 java;Java;JAVA语言编写。
- 抽象窗口工具包 AWT提供用于所有Java applets及应用程序中的基本GUI组件。
- Window有两种形式:Frame( 框架)和 Dialog(对话框);Dialog;对话框;Dialog(对话框) 。
- 可以使用setLocation()和setSize()或 setBounds() 中的任何一中方法设定组件的大小或位置。
- 容器Java.awt.Container是 Component 类的子类。
- 框架的缺省布局管理器是BorderLayout类。
第9章
(做错的题目)
-
单选题
- 下列不属于java.event包中定义的事件适配器的是标签适配器
-
填空题
- 下拉列表;JComboBox;组合框组件提供了一个简单的从列表中选取一项数据的输入。
- Swing 采用了一种MVC的设计范试,即模型—视图—控制 。
- 模式 对话框在被关闭前将阻塞包括框架在内的其他所有应用程序的输入。
(做对的题目)
-
判断题
- Java中的ActionEvent类是很常用的事件,它有多个事件处理方法。(×)
解释:重写actionPerformed这个方法就没其他的
-
单选题
- Container是下列哪一类的子类?Component
- 在类中若要处理ActionEvent事件,则该类需要实现的接口是ActionListener
- 如果有一个对象myListener (其中myListener对象实现了ActionListener接口), 下列哪条语句使得myListener对象能够接受处理来自于smallButton按钮对象的动作事件 ?smallButton.addActionListener(myListener);。
- 以下哪项可能包含菜单条Frame
- 事件处理机制能够让图形界面响应用户的操作,主要包括事件;事件处理;事件源
- Swing采用的MVC模式的中文翻译为是模式-----视图—控制
- paint()方法使用哪种类型的参数? Graphics
-
填空题
- java中在事件处理的过程中,主要涉及 Event(事件)、Event Source(事件源) 和Event Handler(事件处理者)三类对象。
- java中在事件处理的过程中,主要涉及 Event(事件)、Event Source(事件源)和 Event Handler(事件处理者) 三类对象。
- Java事件处理包括建立事件源、建立 事件监听器 和将事件源注册到监听器。
- Swing GUI使用两种类型的类,即 GUI 类和swing类。
- 在需要自定义Swing构件的时候,首先要确定使用那种构件类作为所定制构件的 父类 ,一般继承Jpanel类或更具体的Swing类。
- Swing的事件处理机制包括事件源 、事件和事件处理者。
- 在组件中显示时所使用的字体可以用 setFont() 方法来设置。
- 为了保证平台独立性,Swing是用 java语言编写。
- 根面板 由一个玻璃面板、一个内容面板和一个可选择的菜单条组成。
第10章
(做错的题目)
-
单选题
- 下列属于文件输入输出类的是FileInputStream和FileOutputStream
- 当要将一文本文件当作一个数据库访问,读完一个纪录后,跳到另一个纪录,它们在文件的不同地方时,一般使用RandomAccessFile类访问。
-
填空题
- RandomAccessFile所实现的接口是DataInput接口和DataOutput接口。
(做对的题目)
-
单选题
-
语句RandomAccessFile raf2 = new RandomAccessFile(“1.txt”,“rw” )的功能是打开当前目录下的文件1.txt,既可以向文件写数据,也可以从文件读数据。
-
字符流与字节流的区别在于每次读写的字节数不同
-
凡是从中央处理器流向外部设备的数据流称为输出流
-
流的传递方式是串行的
-
下列不是java的输入输出流的是文本流
-
java中,实现通过网络使用URL访问对象的功能的流是URL输入流
-
当把一个程序、线程或代码段的输出连接到另一个程序、线程或代码段的输入时,应使用PipedOutput流。
-
下列不属于FileInputStream输入流的read()成员函数的是int read(int line);
-
获取一个不包含路径的文件名的方法为String getName( )
-
当处理的数据量很多,或向文件写很多次小数据,一般使用BufferedOutput流。
-
FilterOutputStream是BufferedOutputStream、DataOutputStream及PrintStream的父类,以下哪个类可能是FilterOutputStream构造函数的参数类型?OutputStream
-
如果需要从文件中读取数据,则可以在程序中创建哪一个类的对象FileInputStream
-
下面的程序段创建了BufferedReader类的对象in,以便读取本机c盘my文件夹下的文件1.txt。File构造函数中正确的路径和文件名的表示是 “c:\my\1.txt”。
File f = new File(填代码处);
FileReader file =new FileReader(f);
BufferedReader in=new BufferedReader(file);
-
下面的程序段的功能不正确的是在当前目录下生成子目录:\xxx\yyy\zzz;生成目录: e:\xxx\yyy\zzz;在当前目录下生成文件xxx.yyy.zzz
File file1=new File(“d:\xxx\yyy\zzz”);
file1.mkdirs();
-
下列流中哪个不属于字节流InputStreamReader
-
填空题
- Java的输入输出流包括:字节流、字符流、文件流、对象流以及多线程之间通信的管道流。
- Java的输入输出流包括:字节流、字符流、文件流 、对象流以及多线程之间通信的管道流。
- Java的输入输出流包括:字节流、字符流、文件流、对象流以及多线程之间通信的管道流。
- Java的输入输出流包括:字节流、字符流、文件流、对象流以及多线程之间通信的管道流。
- Java的输入输出流包括:字节流、字符流、文件流、对象流以及多线程之间通信的管道流。
- 管道流分为管道输入流(PipedInputStream)和管道输出流(PipedOutputStream)。
- 管道流分为管道输入流(PipedInputStream)和管道输出流( PipedOutputStream )。
- java中的非字符输出流都是 OutputStream 抽象类的子类。
- java中的字符输出流都是抽象类 Writer的子类。
- java对I/O访问还提供了同步处理机制,保证某时刻只有一个线程访问一个I/O流,这就是 过滤流 。
- DataOutputStream数据流向文件里写数据的方法为write()。
- 文件操作中经常需要的是随机访问, java中的 RandomAccessFile类提供了随机访问文件的功能。
- 文件类File 是java.io中的一个重要的非流类,里面封装了对文件系统进行操作的功能。
第11章
(做错的题目)
- 填空题
- Socket通常也称为 套接字 ,用于描述IP地址和端口。
(做对的题目)
-
单选题
- 在Java编程语言中,TCP/IP socket连接是用java.net包中的类实现的。其连接步骤和方法是服务器分配一个端口号,如果客户请求一个连接,服务器使用accept()方法打开socket连接;客户在host的port端口建立连接;服务器和客户使用InputStream和OutputStream进行通信。
- TCP/IP系统中的端口号是一个16位的数字,它的范围是0到65535。
- J2ME是为嵌入式和移动设备提供的Java平台,它的体系结构由Profiles;Configuration;OptionalPackages组成。
- J2ME中的Profile定义应用系统的生命周期模型;用户界面;访问设备特性。
- 下面哪一个import命令可以为我们提供编写网络应用程序的类import java.net.*;
-
填空题
- Socket用于描述IP地址和 端口;端口号。
- Java提供的类库支持TCP/IP协议,应用程序可通过URl地址,在访问网络上任何地方的对象时,如同访问本地文件一样简单。
- Socket;套接字 是指在一个特定编程模型下,进程间通信链路的端点。
- Socket的工作步骤分为:创建Socket、打开连接到Socket的输入/输出流、按某个协议对Socket进行读/写操作、关闭Socket 。
- 一个socket包括两个流:一个输人流和一个输出流。如果一个进程要通过网络向另一个进程发送数据,只需简单地写入与socket相关联的 输出流 。
- J2ME是为嵌入式和 移动设备提供的Java平台,它的体系结构由Profiles、Configuration和OptionalPackages组成。
2) 简答题看第4和第7章;
第4章
-
如果有两个类A、B(注意不是接口),你想同时使用这两个类的功能,那么你会如何编写这个C类呢?
答:因为类 A、B 不是接口,所以是不可以直接继承的,但可以将 A、B 类定义成父子类,那么 C 类就能实现 A、B 类的功能了。假如 A 为 B 的父类,B 为 C 的父类,此时 C 就能实现 A、B 的功能。
-
接口有什么优点?
答:接口有以下优点:
1)接口只是一个框架而没有实现,因此在接口定义时不需要考虑接口中的方法如何实现;
2)利用接口可达到实现多继承的目地;
3)可以在不暴露对象的类的前提下,暴露对象的编程接口;
4)不用强迫类关系在无关类中截获相似处(采用适配器就可以了);
5)声明想执行的一个或多个方法。
-
在java中如果声明一个类为final,表示什么意思?
答:final 是最终的意思,final 可用于定义变量、方法和类但含义不同,用
final 定义变量时表示它常量,用 final 定义方法时表示该方法不能被重写,声明为 final 的类不能被继承。
-
请简述重载和重写的区别。
答:方法的重写 Overriding 和重载 Overloading 是 Java 多态性的不同表现。重写 Overriding 是父类与子类之间多态性的一种表现,重载 Overloading
是一个类中多态性的一种表现。
如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。
如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded 的方法是可以改变返回值的类型。
-
什么是继承?
答:通过必要的说明能够实现某个类无需重新定义就拥有另一个类的某些属性和方法,并把这种关系称为继承,先定义的类称为父类,后定义的类称为子类, 并且允许多层的继承关系。
第7章
-
在Java中,怎样创建一个线程?
答:
⑴ 定义类来实现 Runnable 接口
class TestThread implements Runnable {
public void run() { …}
}
⑵ 继承 Thread 类来实现
class TestThread extends Thread {
TestThread(String name) {
super(name);
}
public void run() {…}
}
3) 程序分析看第4和第11章;
第4章
abstract class SuperAbstract{
void a(){...}
abstract int c(int i);
}
interface AsSuper{
void x();
}
abstract class SubAbstract extends SuperAbstract implements AsSuper {
public void b(){...}
abstract String f();
}
public class InheritAbstract extends SubAbstract{
public void x(){...}
public int c(int i){...}
public String f(){...}
public static void main(String args[]){
InheritAbstract instance = new InheritAbstract();
instance.x();
instance.a();
instance.b();
instance.c(100);
System.out.println(instance.f());
}
}
在以上这段程序中:
抽象类有:SuperAbstract 和 (SubAbstract) (写出类名)
非抽象类有:(InheritAbstract) (写出类名)
接口有:(AsSuper) (写接口名)
AsSuper中的x()方法是(抽象)方法,所以在InheritAbstract中必须对它进行(覆盖和实现)
class Animal {
public void shout(){
System.out.println("动物叫!");
}
}
class Cat implements Animal {
public void shout(){
super.shout();
System.out.println("喵喵...");
}
}
public class Example01{
public static void main(String[] args){
Animal an = new Cat();
an.shout();
}
}
答:程序编译不能通过,因为 Animal 类不是接口,所以 Cat 类必须继承 Animal 类,也就是说如果将 Cat 类中的 implements 关键字改为 extends 就可以,其输出结果为“动物叫!”和“喵喵…”。
-
下面是People和Child类的定义。请问:在执行new Child(“mike”)的时候都有哪些构造方法被顺序调用?请写出其运行结果。
class People{
String name;
public People(){
System.out.println("People1");
}
public People(String name){
System.out.println("People2:"+name);
this.name = name;
}
}
class Child extends People{
People father;
public Child(){
System.out.println("Child1");
}
public Child(String name){
System.out.println("Child2:"+name);
this.name = name;
father = new People(name + "'F");
}
}
答:按 People()、Child(String name)、People(String name)顺序调用构造方法,运行结果如下:
People1
Child2:mike
People2:mike'F
-
阅读以下程序,写出输出结果。
class Animal{
Animal(){System.out.print("Animal ");}
}
public class Dog extends Animal{
Dog(){System.out.print("Dog");}
public static void main(String[] args){
Dog snoppy = new Dog();
}
}
答:输出结果:Animal Dog
第11章
- 按钮事件处理方法如下,写出下列程序完成的功能。
public void actionPerformed(ActionEvent e){
InetAddress SguAddress = InetAddress.getByName("www.sgu.edu.cn");
System.out.println(SguAddress);
System.out.println(SguAddress.getHostName());
System.out.println(SguAddress.getHostAddress());
}
答:根据域名 www.sgu.edu.cn 返回一个 InetAddress 对象,并输出其计算机名或域名,以及其 IP 地址。
4) 程序填空看第5章;
- 下面程序定义一个字符串数组,并打印输出,捕获数组超越界限异常。请在横线处填入适当的内容完成程序。
public class HelloWorld{
public static void main(String[] args){
int i=0;
String greetings[] = {"Hello world!","No,I mean it!","HELLO WORLD!!"};
while(i<4){
try
{
System.out.println("greeting[i]");
}
catch(ArrayIndexOutOfBoundsException e){
System.out.println("Re-setting Index Value");
}
finally{
System.out.println("This is always printed");
}
i++;
}
}
}
答:try catch
5) 编程题看第6章、9章的菜单。
第6章
-
在一个数组元素值递增的数组中插入一个元素值,要求按原来的规律将它插入数组中合适的位置(使用折半查找)
import java.util.*;
public class HelloWorld {
public static void main(String[] args) {
int[] a = { 1, 2, 6, 14, 25, 36, 37, 55 };
int[] b = new int[a.length + 1];
int lower = 0, higher = a.length - 1;
int i = 0;
Scanner s = new Scanner(System.in);
System.out.print("请输入一个整数:");
int num = s.nextInt();
while (lower <= higher) {
if (num >= a[(lower + higher) / 2]) {
lower = (lower + higher) / 2 + 1;
} else {
higher = (lower + higher) / 2 - 1;
}
}
for (i = 0; i < lower; i++) {
b[i] = a[i];
}
b[i] = num;
for (i = lower + 1; i < b.length; i++) {
b[i] = a[i - 1];
}
for (i = 0; i < b.length; i++) {
System.out.println(b[i]);
}
}
}
第9章
- 编写一个菜单程序,其中包含“文件”菜单,且“文件”菜单中包含“打开”(含快捷键Ctrl+O)、“关闭”、退出(含快捷键Ctrl+X)菜单项和一条横向分割线。
import java.awt.*;
import java.awt.event.*;
public class Test3{
public static void main(String args[]){
MyMenuFrame mf = new MyMenuFrame();
mf.setSize(new Dimension(300,200));
mf.setVisible(true);
}
}
class MyMenuFrame extends Frame{
MenuBar m_MenuBar;
Menu menuFile;
MenuItem mi_File_Open, mi_File_Close, mi_File_Exit;
MyMenuFrame() {
super("拥有菜单的窗口");
m_MenuBar = new MenuBar();
menuFile = new Menu("文件");
mi_File_Open = new MenuItem("打开" ,new MenuShortcut('O'));
mi_File_Close = new MenuItem("关闭");
mi_File_Exit = new MenuItem(" 退 出 ");
mi_File_Exit.setShortcut(new MenuShortcut('X'));
menuFile.add(mi_File_Open);
menuFile.add(mi_File_Close);
menuFile.addSeparator();
menuFile.add(mi_File_Exit);
m_MenuBar.add(menuFile);
this.setMenuBar(m_MenuBar);
}
}
1)界面设计部份
package test04;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class menuTest implements ItemListener,ActionListener{
JFrame frame = new JFrame ("菜单测试");
JTextField tf = new JTextField();
public static void main(String[] args) {
menuTest x=new menuTest();
JMenuBar menubar = new JMenuBar();
JMenu menu;
JMenuItem menuItem;
x.frame.setJMenuBar(menubar);
menu = new JMenu("文件"); menubar.add(menu);
menuItem = new JMenuItem("保存(S)",KeyEvent.VK_S );
menuItem.addActionListener(x);
menu.add(menuItem);
menu.add(new JSeparator());
menuItem = new JMenuItem("退出(E)" );
menuItem.setMnemonic(KeyEvent.VK_E);
menuItem.addActionListener(x); menu.add(menuItem);
menu = new JMenu("选项" );
menubar.add(menu);
JCheckBoxMenuItem cm = new JCheckBoxMenuItem("复选");
cm.addItemListener(x);
menu.add(cm);
JRadioButtonMenuItem rm = new JRadioButtonMenuItem(" 单 选
",true);
rm.addItemListener(x); menu.add(rm);
x.tf.setEditable(false);
Container cp = x.frame.getContentPane();
cp.add(x.tf,BorderLayout.SOUTH);
x.frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
x.frame.setSize(300,200);
x.frame.setVisible(true);
}
2)实现 ItemListener 接口中的方法
public void itemStateChanged(ItemEvent e) {
int state = e.getStateChange();
JMenuItem amenuItem = (JMenuItem)e.getSource();
String command = amenuItem.getText();
if (state==ItemEvent.SELECTED)
tf.setText(command+" 已经选中");
else
tf.setText(command+" 没有选中");
}
3)实现 ActionListener 接口中的方法
public void actionPerformed(ActionEvent e) {
tf.setText(e.getActionCommand());
if (e.getActionCommand()=="退出(E)") {
System.exit(0);
}
}
}
package test_dialog;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class DialogTest implements ActionListener{
JFrame frame;
JDialog dialog;
JButton button;
public static void main(String[] args) {
DialogTest jd=new
DialogTest(); jd.go();
}
public void go(){
frame = new JFrame ("对话框测试");
JLabel Linfo = new JLabel (" 韶关学院 2013 JAVA 综合测试题");
button = new JButton(" 输 入 用 户 信 息 ");
button.addActionListener(this);
Container cp = frame.getContentPane();
cp.add(Linfo,BorderLayout.CENTER);
cp.add(button,BorderLayout.SOUTH);
dialog=new JDialog(frame,"用户信息输入框",true);
Container dp = dialog.getContentPane();
JLabel Lname = new JLabel ("姓名:");
JLabel Ltel = new JLabel ("电话:");
JLabel Lemail = new JLabel ("E-Mail 地址:");
JTextField Tname = new JTextField("", 9);
JTextField Ttel = new JTextField("", 10);
JTextField Temail = new JTextField("", 20);
JButton buttonQ = new JButton(" 确 定 ");
JButton buttonC = new JButton(" 取 消 ");
JPanel jpane1 = new JPanel();
JPanel jpane2 = new JPanel();
JPanel jpane3 = new JPanel();
JPanel jpane123 = new JPanel();
jpane1.setLayout(new FlowLayout(FlowLayout.LEFT));
jpane2.setLayout(new FlowLayout(FlowLayout.LEFT));
jpane3.setLayout(new FlowLayout(FlowLayout.RIGHT));
jpane1.add(Lname);
jpane1.add(Tname);
jpane1.add(Ltel);
jpane1.add(Ttel);
jpane2.add(Lemail);
jpane2.add(Temail);
jpane3.add(buttonQ);
jpane3.add(buttonC);
jpane123.setLayout(new GridLayout(0,1));
jpane123.add(jpane1);
jpane123.add(jpane2);
jpane123.add(jpane3);
dp.add(jpane123);
dialog.pack();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(200,150);
frame.setVisible(true);
}
public void actionPerformed(ActionEvent e){
dialog.setVisible(true);
}
}
import java.awt.Color;
import java.awt.Frame;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class MyFrame extends Frame {
private static final long serialVersionUID = 6895463895656626294
private Frame frmMain;
MenuBar mb;
Menu mnuFile;
Menu mnuEdit;
MenuItem miOpen;
MenuItem miSave;
MenuItem miClose;
MenuItem miCopy;
MenuItem miPaste;
public MyFrame() {
frmMain = new Frame("主窗体");
mb = new MenuBar();
mnuFile = new Menu("文件"); mnuEdit = new Menu("编辑");
miOpen = new MenuItem("打开");
miSave = new MenuItem("保存");
miClose = new MenuItem("关闭");
miCopy = new MenuItem("复制");
miPaste = new MenuItem("粘贴");
}
public void showFrame() {
frmMain.setSize(800, 600);
frmMain.setLocation(100, 100);
frmMain.setBackground(Color.white);
frmMain.setVisible(true); frmMain.setLayout(null);
frmMain.addWindowListener(new WindowHandler());
frmMain.setMenuBar(mb);
mb.add(mnuFile);
mb.add(mnuEdit);
mnuFile.add(miOpen);
mnuFile.add(miSave);
mnuFile.add(miClose);
mnuEdit.add(miCopy);
mnuEdit.add(miPaste);
miClose.setActionCommand("miClose_Clicked");
miClose.addActionListener(new MenuHandler());
}
private class WindowHandler extends WindowAdapter {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}
private class MenuHandler implements ActionListener {
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand() == "miClose_Clicked") {
System.exit(0);
}
}
}
}
public class TestMyFrame {
public static void main(String[] args) {
MyFrame guiWindow = new MyFrame(); guiWindow.showFrame();
}
}
import java.io.*;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.applet.*;
public class multiAudio extends Applet implements ActionListener{
String hUr11,hUr12;
AudioClip audio1,audio2;
boolean hState1=false;
boolean hState2=false;
public void init(){
reize(300,100);
hUr11="/test.wav";
hUr12="/test.mid";
try{
audio1=getAudioClip(new URL(getDocumentBase(),hUr11));
audio2=getAudioClip(new URL(getDocumentBase(),hUr12));
}
catch(Exception e){ }
this.setBackground(Color.lightGray); Pane1 p1=new Pane1();
Button myButton1=new Button("播放 1");
myButton1.addActionListener(this);
p1.add(myButton1);
Button myButton2=new Button("停止 1");
myButton2.addActionListener(this);
p1.add(myButton2);
Button myButton3=new Button("循环 1");
myButton3.addActionListener(this);
p1.add(myButton3);
this.add(p1);
Pane1 p2=new Pane1();
Button mybutton4=new Button("播放 2");
myButton4.addActionListener(this); p2.add(myButton4);
Button myButton5=new Button("停止 2");
myButton5.addActionListener(this);
p2.add(myButton5);
Button myButton6=new Button("循环 2");
myButton6.addActionListener(this); p2.add(myButton6);
this.add(p2);
}
public void actionPerformed(ActionEvent e){
if(e.getActionCommand()=="播放 1"){
if(hState1==false){
audio1.play(); hState1=true;
}
}
else{
if(e.getActionCommand()=="播放 2")){
if(hState2==false){
audio2.play(); hState2=ture;
}
}
else{
if(e.getActionCommand()=="停止 1"){
if(hState1==true){
audio1.stop(); hState1=false;
}
}
else{
if(e.getActionCommand()=="停止 2"){
if(hState2==true){
audio2.stop();
hState2=false;
}
}
else{
if(e.getActionCommand()=="循环 1")
audio1.loop();
else audio2.loop();
}
}
}
}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)