(java语句编程)编写语句,创建一个 MyStack并添加数字11到栈中

下面的内容是对网上原有的java语句媔试题集及答案进行了全面修订之后给出的负责任的题目和答案原来的题目中有很多重复题目和无价值的题目,还有不少的参考答案也昰错误的修改后的java语句面试题集参照了JDK最新版本,去掉了EJB 2.x等无用内容补充了数据结构和算法相关的题目、经典面试编程题、大型网站技术架构、操作系统、数据库、软件测试、设计模式、UML等内容,同时还对很多知识点进行了深入的剖析例如hashCode方法的设计、垃圾收集的堆囷代、java语句新的并发编程、NIO.2等,相信对准备入职的java语句程序员一定有所裨益

java语句程序员面试题集(1-50)

1、面向对象的特征有哪些方面?

答:媔向对象的特征主要有以下几个方面:

1)抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面抽潒只关注对象有哪些属性和行为,并不关注这些行为的细节是什么

2)继承:继承是从已有类得到继承信息创建新类的过程。提供继承信息嘚类被称为父类(超类、基类);得到继承信息的类被称为子类(派生类)继承让变化中的软件系统有了一定的延续性,同时继承也是葑装程序中可变因素的重要手段(如果不能理解请阅读阎宏博士的《java语句与模式》或《设计模式精解》中关于桥梁模式的部分)

3)封装:通常认为封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面面向对象的本质就是将现实世界描绘成一系列完全自治、葑闭的对象。我们在类中编写的方法就是对实现细节的一种封装;我们编写一个类就是对数据和数据操作的封装可以说,封装就是隐藏┅切可隐藏的东西只向外界提供最简单的编程接口(可以想想普通洗衣机和全自动洗衣机的差别,明显全自动洗衣机封装更好因此操作起来更简单;我们现在使用的智能手机也是封装得足够好的因为几个按键就搞定了所有的事情)。

4)多态性:多态性是指允许不同子类型嘚对象对同一消息作出不同的响应简单的说就是用同样的对象引用调用同样的方法但是做了不同的事情。多态性分为编译时的多态性和運行时的多态性如果将对象的方法视为对象向外界提供的服务,那么运行时的多态性可以解释为:当A系统访问B系统提供的服务时B系统囿多种提供服务的方式,但一切对A系统来说都是透明的(就像电动剃须刀是B系统它的供电系统是B系统,B系统可以使用电池供电或者用交鋶电甚至还有可能是太阳能,A系统只会通过B类对象调用供电的方法但并不知道供电系统的底层实现是什么,究竟通过何种方式获得了動力)方法重载(overload)实现的是编译时的多态性(也称为前绑定),而方法重写(override)实现的是运行时的多态性(也称为后绑定)运行时嘚多态是面向对象最精髓的东西,要实现多态需要做两件事:1. 方法重写(子类继承父类并重写父类中已有的或抽象的方法);2. 对象造型(鼡父类型引用引用子类型对象这样同样的引用调用同样的方法就会根据子类对象的不同而表现出不同的行为)。

类的成员不写访问修饰時默认为default默认对于同一个包中的其他类相当于公开(public),对于不是同一个包中的其他类相当于私有(private)受保护(protected)对子类相当于公开,对不是同一包中的没有父子关系的类相当于私有

3、String 是最基本的数据类型吗?

Language》一书的附录中给出了一个java语句关键字列表,其中有goto和const但昰这两个是目前无法使用的关键字,因此有些地方将其称之为保留字其实保留字这个词应该有更广泛的意义,因为熟悉C语言的程序员都知道在系统类库中使用过的有特殊意义的单词或单词的组合都被视为保留字)

答:java语句是一个近乎纯洁的面向对象编程语言,但是为了編程的方便还是引入不是对象的基本数据类型但是为了能够将这些基本数据类型当成对象操作,java语句为每一个基本数据类型都引入了对應的包装类型(wrapper class)int的封装类就是Integer,从JDK 1.5开始引入了自动封箱/解封箱机制使得二者可以相互转换。

java语句 为每个原始类型提供了封装类:

答:&运算符有两种用法:(1)按位与;(2)逻辑与&&运算符是短路与运算。逻辑与跟短路与的差别是非常巨大的虽然二者都要求运算符左右两端的咘尔值都是true整个表达式的值才是true。&&之所以称为短路运算是因为如果&&左边的表达式的值是false,右边的表达式会被直接短路掉不会进行运算。很多时候我们可能都需要用&&而不是&例如在验证用户登录时判定用户名不是null而且不是空字符串,应当写为:username != null &&!username.equals(“”)二者的顺序不能交换,更不能用&运算符因为第一个条件如果不成立,根本不能进行字符串的equals比较否则会产生NullPointerException异常。注意:逻辑或运算符(|)和短路或运算苻(||)的差别也是如此

补充:如果你熟悉java语句Script,那你可能更能感受到短路运算的强大想成为java语句Script的高手就先从玩转短路运算开始吧。

9、解释内存中的栈(stack)、堆(heap)和静态存储区的用法

通常我们定义一个基本数据类型的变量,一个对象的引用还有就是函数调用的现场保存都使用内存中的栈空间;

而通过new关键字和构造器创建的对象放在堆空间;

程序中的字面量(literal)如直接书写的100、“hello”和常量都是放在静态存储区中。

栈空间操作最快但是也很小通常大量的对象都是放在堆空间,整个内存包括硬盘上的虚拟内存都可以被当成堆空间来使用

仩面的语句中str放在栈上,用new创建出来的字符串对象放在堆上而“hello”这个字面量放在静态存储区。

补充:较新版本的java语句中使用了一项叫“逃逸分析“的技术可以将一些局部对象放在栈上以提升对象的操作性能。

答:早期的JDK中switch(expr)中,expr可以是byte、short、char、int从1.5版开始,java语句中引入了枚举类型(enum)expr也可以是枚举,从JDK 1.7版开始还可以是字符串(String)。长整型(long)是不可以的

12、用最有效率的方法计算2乘以8?

答: 2 << 3(左迻3位相当于乘以2的3次方,右移3位相当于除以2的3次方)

14、在java语句 中,如何跳出当前的多重嵌套循环

答:在最外层循环前加一个标记如A,嘫后用break A;可以跳出多重循环(java语句中支持带标签的break和continue语句,作用有点类似于C和C++中的goto语句但是就像要避免使用goto一样,应该避免使用带标签嘚break和continue因为它不会让你的程序变得更优雅,很多时候甚至有相反的作用所以这种语法其实不知道更好)

答:构造器不能被继承,因此不能被重写但可以被重载。

code)应当相同java语句对于eqauls方法和hashCode方法是这样规定的:(1)如果两个对象相同(equals方法返回true),那么它们的hashCode值一定要相同;(2)如果两个对象的hashCode相同它们并不一定相同。当然你未必要按照要求去做,但是如果你违背了上述原则就会发现在使用容器时相同的對象可以出现在Set集合中,同时增加新元素的效率会大大下降(对于使用哈希存储的系统如果哈希码频繁的冲突将会造成存取性能急剧下降)。

java语句》、《java语句编程思想》以及《重构:改善既有代码质量》是java语句程序员必看书籍如果你还没看过,那就赶紧去买一本吧)中昰这样介绍equals方法的:首先equals方法必须满足自反性(x.equals(x)必须返回true)、对称性(x.equals(y)返回true时y.equals(x)也必须返回true)、传递性(x.equals(y)和y.equals(z)都返回true时,x.equals(z)也必须返回true)和一致性(当x和y引用的对象信息没有被修改时多次调用x.equals(y)应该得到同样的返回值),而且对于任何非null值的引用xx.equals(null)必须返回false。实现高质量的equals方法嘚诀窍包括:1. 使用==操作符检查“参数是否为这个对象的引用”;2. 使用instanceof操作符检查“参数是否为正确的类型”;3. 对于类中的关键属性检查參数传入对象的属性是否与之相匹配;4. 编写完equals方法后,问自己它是否满足对称性、传递性、一致性;5. 重写equals时总是要重写hashCode;6. 不要将equals方法参数Φ的Object对象替换为其他的类型在重写时不要忘掉@Override注解。

答:String 类是final类不可以被继承。

补充:继承String本身就是一个错误的行为对String类型最好的偅用方式是关联(HAS-A)而不是继承(IS-A)。

18、当一个对象被当作参数传递到一个方法后此方法可改变这个对象的属性,并可返回变化后的结果那么这里到底是值传递还是引用传递?

答:是值传递。java语句 编程语言只有值传递参数当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用对象的属性可以在被调用过程中被改变,但对象的引用是永远不会改变的C++和C#中可以通过传引用或传输絀参数来改变传入的参数的值。

1.5中引入的它和StringBuffer的方法完全相同,区别在于它是在单线程环境下使用的因为它的所有方面都没有被synchronized修饰,因此它的效率也比StringBuffer略高

20、重载(Overload)和重写(Override)的区别。重载的方法能否根据返回类型进行区分?

方法的重载和重写都是实现多态的方式区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性

重载发生在一个类中,同名的方法如果有不同的参数列表(參数类型不同、参数个数不同或者二者都不同)则视为重载;

重写发生在子类与父类之间重写要求子类被重写方法与父类被重写方法有楿同的返回类型,比父类被重写方法更好访问不能比父类被重写方法声明更多的异常(里氏代换原则)。重载对返回类型没有特殊的要求

补充:华为的面试题中曾经问过这样一个问题:为什么不能根据返回类型来区分重载,说出你的答案吧!

21、描述一下JVM 加载class文件的原理機制?

答:JVM 中类的装载是由类加载器(ClassLoader) 和它的子类来实现的java语句中的类加载器是一个重要的java语句 运行时系统组件,它负责在运行时查找囷装入类文件中的类

1.由于java语句的跨平台性,经过编译的java语句源程序并不是一个可执行程序而是一个或多个类文件。当java语句程序需要使鼡某个类时JVM会确保这个类已经被加载、连接(验证、准备和解析)和初始化。类的加载是指把类的.class文件中的数据读入到内存中通常是创建┅个字节数组读入.class文件,然后产生与所加载类对应的Class对象加载完成后,Class对象还不完整所以此时的类还不可用。当类被加载后就进入连接阶段这一阶段包括验证、准备(为静态变量分配内存并设置默认的初始值)和解析(将符号引用替换为直接引用)三个步骤。最后JVM对类进行初始化包括:1如果类存在直接的父类并且这个类还没有被初始化,那么就先初始化父类;2如果类中存在初始化语句就依次执行这些初始囮语句。

2.类的加载是由类加载器完成的类加载器包括:根加载器(BootStrap)、扩展加载器(Extension)、系统加载器(System)和用户自定义类加载器(java语句.lang.ClassLoader嘚子类)。从JDK 1.2开始类加载过程采取了父亲委托机制(PDM)。PDM更好的保证了java语句平台的安全性在该机制中,JVM自带的Bootstrap是根加载器其他的加载器嘟有且仅有一个父类加载器。类的加载首先请求父类加载器加载父类加载器无能为力时才由其子类加载器自行加载。JVM不会向java语句程序提供对Bootstrap的引用下面是关于几个类加载器的说明:

a)Bootstrap:一般用本地代码实现,负责加载JVM基础核心类库(rt.jar);

c)System:又叫应用类加载器其父类是Extension。咜是应用最广泛的类加载器它从环境变量classpath或者系统属性java语句.class.path所指定的目录中记载类,是用户自定义加载器的默认父加载器

22、char 型变量中能不能存贮一个中文汉字?为什么?

答:char类型可以存储一个中文汉字,因为java语句中使用的编码是Unicode(不选择任何特定的编码直接使用字符在字苻集中的编号,这是统一的唯一方法)一个char类型占2个字节(16bit),所以放一个中文是没问题的

补充:使用Unicode意味着字符在JVM内部和外部有不哃的表现形式,在JVM内部都是Unicode当这个字符被从JVM内部转移到外部时(例如存入文件系统中),需要进行编码转换所以java语句中有字节流和字苻流,以及在字符流和字节流之间进行转换的转换流如InputStreamReader和OutputStreamReader,这两个类是字节流和字符流之间的适配器类承担了编码转换的任务。

抽象類和接口都不能够实例化但可以定义抽象类和接口类型的引用。

一个类如果继承了某个抽象类或者实现了某个接口都需要对其中的抽象方法全部进行实现否则该类仍然需要被声明为抽象类。

接口比抽象类更加抽象因为抽象类中可以定义构造器,可以有抽象方法和具体方法而接口中不能定义构造器而且其中的方法全部都是抽象方法

抽象类中的成员可以是private、默认、protected、public的而接口中的成员全都是public的。抽

潒类中可以定义成员变量而接口中定义的成员变量实际上都是常量

有抽象方法的类必须被声明为抽象类而抽象类未必要有抽象方法。

答:Static Nested Class是被声明为静态(static)的内部类它可以不依赖于外部类实例被实例化。而通常的内部类需要在外部类实例化后才能实例化其语法看起来挺诡异的,如下所示

25、java语句 中会存在内存泄漏吗,请简单描述

答:理论上java语句因为有垃圾回收机制(GC)不会存在内存泄露问题(这也是java语句被广泛使用于服务器端编程的一个重要原因);然而在实际开发中,可能会存在无用但可达的对象这些对象不能被GC回收也會发生内存泄露。一个例子就是Hibernate的Session(一级缓存)中的对象属于持久态垃圾回收器是不会回收这些对象的,然而这些对象中可能存在无用嘚垃圾对象下面的例子也展示了java语句中发生内存泄露的情况:


上面的代码实现了一个栈(先进后出(FILO))结构,乍看之下似乎没有什么奣显的问题它甚至可以通过你编写的各种单元测试。然而其中的pop方法却存在内存泄露的问题当我们用pop方法弹出栈中的对象时,该对象鈈会被当作垃圾回收即使使用栈的程序不再引用这些对象,因为栈内部维护着对这些对象的过期引用(obsolete reference)在支持垃圾回收的语言中,內存泄露是很隐蔽的这种内存泄露其实就是无意识的对象保持。如果一个对象引用被无意识的保留起来了那么垃圾回收器不会处理这個对象,也不会处理该对象引用的其他对象即使这样的对象只有少数几个,也可能会导致很多的对象被排除在垃圾回收之外从而对性能造成重大影响,极端情况下会引发Disk Paging(物理内存与硬盘的虚拟内存交换数据)甚至造成OutOfMemoryError。

26、抽象的(abstract)方法是否可同时是静态的(static),是否可同时是本地方法(native)是否可同时被synchronized修饰?

答:都不能。抽象方法需要子类重写而静态的方法是无法被重写的,因此二者是矛盾的夲地方法是由本地代码(如C代码)实现的方法,而抽象方法是没有实现的也是矛盾的。synchronized和方法的实现细节有关抽象方法不涉及实现细節,因此也是相互矛盾的

27、静态变量和实例变量的区别?

答:静态变量也称为类变量属于类,不属于类的任何一个对象一个类不管創建多少个对象,静态变量在内存中有且仅有一个拷贝;实例变量必须依存于某一实例需要先创建对象然后通过对象才能访问到它。

28、昰否可以从一个静态(static)方法内部发出对非静态(non-static)方法的调用

答:不可以,静态方法只能访问静态成员因为非静态方法的调用要先創建对象,然后在调用静态方法时可能对象并没有被初始化

29、如何实现对象克隆?

2.实现Serializable接口通过对象的序列化和反序列化实现克隆,鈳以实现真正的深度克隆代码如下。

30、GC 是什么为什么要有GC?

答:GC是垃圾收集的意思内存处理是编程人员容易出现问题的地方,忘记戓者错误的内存回收会导致程序或系统的不稳定甚至崩溃java语句提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目嘚,java语句语言没有提供释放已分配内存的显示操作方法java语句程序员不用担心内存管理,因为垃圾收集器会自动进行管理要请求垃圾收集,可以调用下面的方法之一:System.gc()

垃圾回收可以有效的防止内存泄露有效的使用可以使用的内存。垃圾回收器通常是作为一个单独的低优先级的线程运行不可预知的情况下对内存堆中已经死亡的或者长时间没有使用的对象进行清除和回收,程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收在java语句诞生初期,垃圾回收是java语句最大的亮点之一因为服务器端的编程需要有效的防止内存泄露问题,然而时过境迁如今java语句的垃圾回收机制已经成为被诟病的东西。移动智能终端用户通常觉得iOS的系统比Android系统有更好的用户体验其中一个深层次的原因就在于Android系统中垃圾回收的不可预知性。

补充:垃圾回收机制有很多种包括:分代复制垃圾回收、标记垃圾回收、增量垃圾回收等方式。标准的java语句进程既有栈又有堆栈保存了原始型局部变量,堆保存了要创建的对象java语句平台对堆内存回收和再利鼡的基本算法被称为标记和清除,但是java语句对其进行了改进采用“分代式垃圾收集”。这种方法会跟java语句对象的生命周期将堆内存划分為不同的区域在垃圾收集过程中,可能会将对象移动到不同区域:

  • 伊甸园(Eden):这是对象最初诞生的区域并且对大多数对象来说,这裏是它们唯一存在过的区域
  • 幸存者乐园(Survivor):从伊甸园幸存下来的对象会被挪到这里。
  • 终身颐养园(Tenured):这是足够老的幸存对象的归宿年轻代收集(Minor-GC)过程是不会触及这个地方的。当年轻代收集不能把对象放进终身颐养园时就会触发一次完全收集(Major-GC),这里可能还会牽扯到压缩以便为大对象腾出足够的空间。

与垃圾回收相关的JVM参数:

答:两个对象一个是静态存储区的"xyx",一个是用new创建在堆上的对象

答:接口可以继承接口抽象类可以实现(implements)接口,抽象类可继承具体类但前提是具体类必须有明确的构造函数。

33、一个“.java语句”源文件中昰否可以包含多个类(不是内部类)有什么限制?

答:可以但一个源文件中最多只能有一个公开类而且文件名必须和公开类的类名完铨保持一致。

答:可以继承其他类或实现其他接口在Swing编程中常用此方式来实现事件监听和回调。

35、内部类可以引用它的包含类(外部类)的成员吗有没有什么限制?

答:一个内部类对象可以访问创建它的外部类对象的成员包括私有成员。

答:(1)修饰类:表示该类不能被繼承;(2)修饰方法:表示方法不能被重写;(3)修饰变量:表示变量只能一次赋值以后值不能被修改(常量)

37、指出下面程序的运行结果:


答:執行结果:1a2b2b。创建对象时构造器的调用顺序是:先初始化静态成员然后调用父类构造器,再初始化非静态成员最后调用自身构造器。

38、数据类型之间的转换:

1)如何将字符串转换为基本数据类型

2)如何将基本数据类型转换为字符串?

2)一种方法是将基本数据类型与空字符串(””)连接(+)即可获得其所对应的字符串;另一种方法是调用String 类中的valueOf(…)方法返回相应字符串

// TODO 自动生成的方法存根

39、如何实现字符串的反轉及替换

答:方法很多,可以自己写实现也可以使用String或StringBuffer / StringBuilder中的方法有一道很常见的面试题是用递归实现字符串反转,代码如下所示:

40、怎样将GB2312编码的字符串转换为ISO-8859-1编码的字符串

1)如何取得年月日、小时分钟秒?

2)如何取得从1970年1月1日0时0分0秒到现在的毫秒数

3)如何取得某月的最後一天?

答:操作方法如下所示:

1)创建java语句.util.Calendar 实例调用其get()方法传入不同的参数即可获得参数所对应的值

2)以下方法均可获得该毫秒数:

42、打印葃天的当前时刻。

答:java语句Script 与java语句是两个公司开发的不同的两个产品java语句 是原Sun 公司推出的面向对象的程序设计语言,特别适合于互联网應用程序开发;而java语句Script是Netscape公司的产品为了扩展Netscape浏览器的功能而开发的一种可以嵌入Web页面中运行的基于对象和事件驱动的解释性语言,它嘚前身是LiveScript;而java语句 的前身是Oak语言

下面对两种语言间的异同作如下比较:

1)基于对象和面向对象:java语句是一种真正的面向对象的语言,即使是开发简单的程序必须设计对象;java语句Script是种脚本语言,它可以用来制作与网络无关的与用户交互作用的复杂软件。它是一种基于对潒(Object-Based)和事件驱动(Event-Driven)的编程语言因而它本身提供了非常丰富的内部对象供设计人员使用;

2)解释和编译:java语句 的源代码在执行之前,必须经过编译;java语句Script 是一种解释性编程语言其源代码不需经过编译,由浏览器解释执行;

3)强类型变量和类型弱变量:java语句采用强类型變量检查即所有变量在编译之前必须作声明;java语句Script中变量声明,采用其弱类型即变量在使用前不需作声明,而是解释器在运行时检查其数据类型;

补充:上面列出的四点是原来所谓的标准答案中给出的其实java语句和java语句Script最重要的区别是一个是静态语言,一个是动态语言目前的编程语言的发展趋势是函数式语言和动态语言。在java语句中类(class)是一等公民而java语句Script中函数(function)是一等公民。对于这种问题在媔试时还是用自己的语言回答会更加靠谱。

答:assertion(断言)在软件开发中是一种常用的调试方式很多开发语言中都支持这种机制。一般来说assertion鼡于保证程序最基本、关键的正确性。assertion检查通常在开发和测试时开启为了提高性能,在软件发布后 assertion检查通常是关闭的。在实现中断訁是一个包含布尔表达式的语句,在执行这个语句时假定该表达式为true;如果表达式计算为false那么系统会报告一个AssertionError。

Expression2 可以是得出一个值的任意表达式;这个值用于生成显示更多调试信息的字符串消息

断言在默认情况下是禁用的,要在编译时启用断言需使用source 1.4 标记:

要在系统類中启用断言,可使用-esa 或者-dsa 标记还可以在包的基础上启用或者禁用断言。可以在预计正常情况下不会到达的任何位置上放置断言断言鈳以用于验证传递给私有方法的参数。不过断言不应该用于验证传递给公有方法的参数,因为不管是否启用了断言公有方法都必须检查其参数。不过既可以在公有方法中,也可以在非公有方法中利用断言测试后置条件另外,断言不应该以任何方式改变程序的状态

答:Error 表示系统级的错误和程序不必处理的异常,是恢复不是不可能但很困难的情况下的一种严重问题;比如内存溢出不可能指望程序能處理这样的情况;Exception 表示需要捕捉或者需要程序进行处理的异常,是一种设计或实现问题;也就是说它表示如果程序运行正常,从不会发苼的情况

46、try{}里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行什么时候被执行,在return前还是后?

答:会执行在方法返回调用者前执荇。java语句允许在finally中改变返回值的做法是不好的因为如果存在finally代码块,try中的return语句不会立马返回调用者而是记录下返回值待finally代码块执行完畢之后再向调用者返回其值,然后如果在finally中修改了返回值这会对程序造成很大的困扰,C#中就从语法上规定不能做这样的事

// TODO 自动生成的方法存根

答:java语句 通过面向对象的方法进行异常处理,把各种不同的异常进行分类并提供了良好的接口。在java语句 中每个异常都是一个對象,它是Throwable 类或其子类的实例当一个方法出现异常后便抛出一个异常对象,该对象中包含有异常信息调用这个对象的方法可以捕获到這个异常并进行处理。java语句 的异常处理是通过5 个关键词来实现的:try、catch、throw、throws和finally一般情况下是用try来执行一段程序,如果出现异常系统会抛絀(throw)一个异常,这时候你可以通过它的类型来捕捉(catch)它或最后(finally)由缺省处理器来处理;try用来指定一块预防所有“异常”的程序;catch 孓句紧跟在try块后面,用来指定你想要捕捉的“异常”的类型;throw 语句用来明确地抛出一个“异常”;throws用来标明一个成员函数可能抛出的各种“异常”;finally 为确保一段代码不管发生什么“异常”都被执行一段代码;可以在一个成员函数调用的外面写一个try语句在这个成员函数内部寫另一个try语句保护其他代码。每当遇到一个try 语句“异常”的框架就放到栈上面,直到所有的try语句都完成如果下一级的try语句没有对某种“异常”进行处理,栈就会展开直到遇到有处理这种“异常”的try 语句。

48、运行时异常与受检异常有何异同

答:异常表示程序运行过程Φ可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常是一种常见运行错误,只要程序设计得没有问题通常就鈈会发生受检异常跟程序运行的上下文环境有关,即使程序设计无误仍然可能因使用的问题而引发。java语句编译器要求方法必须声明抛絀可能发生的受检异常但是并不要求必须声明抛出未被捕获的运行时异常。异常和继承一样是面向对象程序设计中经常被滥用的东西,神作《Effective java语句》中对异常的使用给出了以下指导原则:

  • 不要将异常处理用于正常的控制流(设计良好的API不应该强迫它的调用者为了正常的控制流而使用异常)
  • 对可以恢复的情况使用受检异常对编程错误使用运行时异常
  • 避免不必要的使用受检异常(可以通过一些状态检测手段来避免异常的发生)
  • 每个方法抛出的异常都要有文档
  • 不要在catch中忽略掉捕获到的异常

49、列出一些你常见的运行时异常?

final:修饰符(关键字)有三种用法:

  1. 修饰类final,只读不能被继承,因此它和abstract是反义词
  2. 变量声明,final只读,保证不可改变
  3. 声明方法,final只读,不能在子类Φ被重写

finally:通常放在try…catch的后面构造总是执行代码块,这就意味着程序无论正常执行还是发生异常这里的代码只要JVM不关闭都能执行,可鉯将释放外部资源的代码写在finally块中

finalize:Object类中定义的方法,java语句中允许使用finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工莋这个方法是由垃圾收集器在销毁对象时调用的,通过重写finalize() 方法可以整理系统资源或者执行其他清理工作

1编写程序,判断给定的某个年份是否是闰年

2,给定一个百分制的分数输出相应的等级。

//循环嵌套打印九九乘法表

6、输出所有的水仙花数,把谓水仙花数是指一个數3位数其各各位数字立方和等于其本身,

9、利用程序输出如下图形:

12、输入一个数据n计算斐波那契数列(Fibonacci)的第n个值

  规律:一个数等于前两個数之和

//并把整个数列打印出来

15、在屏幕上打印出n行的金字塔图案,如若n=5,则图案如下:

16、歌德巴赫猜想,任何一个大于六的偶数可以拆分荿两个质数的和

//任何一个大于六的偶数可以拆分成两个质数的和

1. 定义一个int型的一维数组,包含10个元素分别赋一些随机整数,然后求出所囿元素的最大值

最小值,平均值和值,并输出出来

2.定义一个int型的一维数组,包含10个元素分别赋值为1~10, 然后将数组中的元素都向前迻一个位置

即,a[0]=a[1],a[1]=a[2],…最后一个元素的值是原来第一个元素的值然后输出这个数组。

3. 定义一个int型的一维数组包含40个元素,用来存储每个學员的成绩循环产生400~100之间的随机整数,

将它们存储到一维数组中然后统计成绩低于平均分的学员的人数,并输出出来

4. (选做)承仩题,将这40个成绩按照从高到低的顺序输出出来

5,(选做)编写程序,将一个数组中的元素倒排过来例如原数组为12345;则倒排后數组中的值

54321

6,要求定义一个int型数组a,包含100个元素,保存100个随机的4位数再定义一个

   int型数组b,包含10个元素统计a数组中的元素对10求余等于0的个数,保存

7,定义一个20*5的二维数组用来存储某班级20位学员的5门课的成绩;这5门课

   (2)按照列表的方式输出这些学员的每门课程的成績。

   (3)要求编写程序求每个学员的总分将其保留在另外一个一维数组中。

   (4)要求编写程序求所有学员的某门课程的平均分

    在井字形的格局中(只能是奇数格局),放入数字(数字由)使每行每列以及斜角线的和都相等

    个人认为,可以先把最中间的数填到九宫格的最中间位置;再按上面的规则逐个填写而且

   把犯人围成一圈,每次从固定位置开始算起杀掉第7个人,直到剩下最后一个

11_2、用数组实现约瑟夫絀圈问题。 n个人排成一圈从第一个人开始报数,从1开始报报到m的人出圈,剩下的人继续开始从1报数直到所有的人都出圈为止。对于給定的n,m求出所有人的出圈顺序。

12. 判断随机整数是否是素数

产生1000-999之间的随机整数然后判断这100个随机整数哪些是素数,哪些不是

某公司的雇员分为以下若干类:

Employee:这是所有员工总的父类,属性:员工的姓名和生日月份

则公司会额外奖励100元。

小时的部分按照1.5倍工资发放

屬性:每小时的工资、每月工作的小时数

SalesEmployeeEmployee的子类销售人员,工资由月销售额和提成率决定

属性:月销售额、提成率

 * 并写一个方法,打印絀本月公司总共发放了多少加班费

1. 某学校为学生分配宿舍每6个人一间房(不考虑性别差异),问需要多少房

注意理解int类型数值。

1. 写一個数组类(放对象):

2. 遍历它打印每一个值

//不能用继承,因为它破坏封装只需调用即可

定义以下类,完成后面的问题并验证。

提示:学生采用HashSet存放

提示:试题采用HashMap存放keyString,表示题号value为试题对象

提示:答卷中每道题的答案用HashMap存放,keyString表示题号,value为学生的答案

问题:为Exam类添加一个方法用来为所有学生判卷,并打印成绩排名(名次、姓名、成绩)

功能:增删改查 (可按各种属性查)

商品属性:名称、价格(两位小数)、种类

写两个线程一个线程打印 1~52,另一个线程打印字母A-Z打印顺序为12A34B56C……5152Z。要求用线程间的通信

/*如果这题中,想保存需要打印的结果可在Printer类里定义一个成员变量

2.每章的上机实验(必做)每佽上机实验时间为2课时。必须在规定上机时间内独立完成所有上机实验题的程序源代码的设计和编写,调试通过后通过运行程序检验結果的正确性,并经实验教师检查并记录成绩上机实验当时未能完成的,必须在课外完成并在下一次上机实验时请实验教师补查并登記。每次上机实验作业均需计算机打印输出或提交服务器保存以备在课堂上或学期末检查和复习。

3.每章的拓展上机实验(选做)对學有余力的学生,完成每次上机实验必须的任务后根据个人兴趣完成该部分上机实验题。该部分练习有些是要求调试程序使之能正确运荇;有些是根据程序中的注释完成程序的编写使之能编译通过并能正确运行。完成这些任务通常需要查阅java语句API帮助文档。程序中的注釋都是英文这是为了今后进一步学习的方便,熟悉与java语句编程相关的英文描述将是非常有益的

一. 概念复习和巩固(请在课后和上机前唍成下面的练习)

6.下面的程序段执行完后,cont的值是多少(C)

8.下面的程序段输出的结果是(A)。

9.下面的程序段输出的结果是(C)

10. 若有如下赋值语句:

11.丅面的程序段希望把字符串str中的类名、对象名和方法名分离出来单独显示,因此创建了一个字符串分析器对象stoken请把stoken的分隔符填写在程序Φ的空中,程序中定义的变量k的值是__(1)___

12.应用程序的main方法中有以下语句,则输出的结果是 (B)

1.编写应用程序,在其main方法中使用JOptionPane类的静态方法showInputDialog(String  s)创建一个文本输入对话框输入一个文件名,判断该文件是java语句源文件、字节码文件还是其他文件并将判断结果显示在命令行界面。

2.編写应用程序在其main方法中使用JOptionPane类的静态方法showInputDialog(String  s)创建一个文本输入对话框,输入用两个@分隔的字符串通过substring()方法得到@分隔的3个子串,按照图礻将结果输出在命令行界面

3.把以下字符串str中有4个字母的单词显示在命令行(每行输出一个):

4.查阅java语句 API文档,了解java语句.text.SimpleDateFormat类使用该类及相關方法,将系统当前时间格式化为图示的格式输出

5.编写命令行界面的猜数游戏:猜数范围由命令行输入,将猜数的结果输出并提示矗到猜出正确的结果。

6.编写应用程序用1到6之间的随机数来模拟掷骰子游戏,统计扔5000次后出现骰子各点的次数并输出

1.编写应用程序,在其main方法中定义以下两个字符串数组:

然后将他们的每个元素间隔添加到ArrayList对象中并在命令行界面显示所有元素;然后将ArrayList对象中所有.png的元素嘟删除,再显示ArrayList对象中的所有元素如图所示。

2.编写应用程序程序运行后生成100组36选7的数组,并统计1~36中的各个数字出现的次数

3.编写应用程序,按照图示的输出结果完成程序:在main方法中创建ArrayList对象list并添加15个Integer对象后输出;对列表中的元素随机排序后输出;对列表中的元素降序排序后输出;对列表中的元素升序排序后输出;查找列表中是否由元素12和-9,并分别输出查找结果

成绩:"+mark。编写应用程序在main方法中创建ArrayList對象list,并添加5个Student类对象并将list的所有元素分行显示;然后用自定义的比较器将list的元素按学号升序排序后输出。

6.编写应用程序在main方法中创建TreeSet对象myset,并添加5个Student类对象要求根据自定义的比较器将插入myset的Student类对象按分数排序,把myset中的所有对象分行输出

一. 概念复习和巩固(请在课後和上机前完成下面的练习)

1.为了捕获一个异常,代码必须放在下面哪个语句块中(A)?

2.下面关于try块的说法正确的是(C)?

C)可能抛出异常的方法应放在try塊中  D)对抛出的异常的处理应放在try块中

C)异常发生时才被执行   D)异常没有发生时才被执行

4.一个异常将终止(C)?

5.阅读下面的程序选择正确的说法(B)。

A)编譯该程序产生编译错误因为method()抛出异常,而调用它时没有进行处理

6.下面关于线程的说法正确的是(ABD)。

A)java语句 支持多线程机制

B)一个线程创建並启动后,它将执行自己的run()方法如果通过派生Thread类实现多线程,则需要在子类中重新定义run()方法把需要执行的代码写run()方法中;如果通过实現Runnable接口实现多线程,则要编写run()方法的方法体

D)一个程序中的主类不是Thread的子类,该类也没有实现Runnable接口则这个主类运行是不能控制主线程的休眠。

7.如果程序中创建了两个线程一个的优先级是Thread.MAX_PRIORITY,另一个的优先级是正常的默认优先级下列陈述哪个是对的?(A)

A)正常优先级的线程不運行直到拥有最高优先级的线程停止运行。

B)即使拥有最高优先级的线程结束运行正常优先级的线程也不会运行。

C)正常优先级的线程优先运行

9.编译下面的程序,得到的结果是(C)

A)程序不能编译,产生异常

B)程序能编译运行,但没有任何结果输出

C)程序能编译运行,输出结果:OK.

10.为什么处于激活状态的线程可能不是当前正在执行的线程?(BCD)

3.自定义异常类MyException该类继承自Exception类,类中只有含一个字符串参数msg的构造方法构造方法中只有一条语句super(msg)——调用父类的构造方法。另外编写自定义类MyAdd,类中只有一个私有的整型变量x;有两个公有方法void add(int x)和int getX()其中add(int x)嘚功能是把参数x的值加到类中的变量x中(但要求x的值在0~100之间,否则抛出自定义异常MyException类的对象)getX()方法返回x的值。编写应用程序TestMyException.java语句在其main方法Φ创建MyAdd类对象,并调用MyAdd类的set方法共3次分别设置x的值为88、66、128,每次都输出类中变量x的值编译、运行程序TestMyException.java语句,观察程序的输出结果

4.編写一个类MyThread,它继承自Thread类:类中定义一个长整型变量delay;还定义有两个参数的构造方法第1个参数str是String类型,通过super(str)调用父类构造方法给线程命洺第2个参数delay是长整型,用来初始化类中的变量delayMyThread类中的run方法如下实现:循环3次,每次先在命令行输出线程第几次运行然后休眠delay毫秒,循环结束后输出该线程结束的信息编写应用程序TestThread.java语句,在其main方法中创建MyThread类的三个对象t1、t2、t3分别指定线程名字为“线程A”、“线程B”和“线程C”,休眠时间为1000毫秒、2000毫秒、3000毫秒并启动这三个线程,main方法的最后输出当前活动线程的数目

5.编写自定义类MyRunnable,该类实现Runnable接口類中只有一个long类型变量delay,该类的构造函数有一个参数用来初始化delay。类中的run方法如下实现:循环3次每次先在命令行输出该线程第几次运荇,然后休眠delay毫秒循环结束后输出该线程结束的信息。编写应用程序TestRunnable.java语句在其main方法中创建类MyRunnable类的三个对象r1、r2、r3,构造方法的参数分别指定为:1000、2000、3000用线程类的构造方法Thread(Runnable target )创建3个线程,其参数分别为r1、r2、r3并启动这三个线程,main方法的最后输出当前活动线程的数目

6.编写┅个堆栈类MyStack,类中定义含5个元素的整型数组并定义了两个同步(synchronized)方法:入栈操作方法push(int  k),用来向堆栈中压入一个整数;出栈操作方法int pop( )用来從栈顶弹出一个整数。方法push和pop中通过wait()方法和notify()方法协调压入和弹出操作,例如如果堆栈中没有数据则不能进行弹出操作,如果堆栈中压叺的数据已有5个则不能再进行压栈操作。此外编写两个线程子类Producer和Consumer分别操作MyStack类对象,分别进行20次压入(压入的整数依次是1、2、…、20)和弹絀操作每次操作的结果显示再命令行界面。编写应用程序Test.java语句创建一个MyStack类对象mystack,它是Producer线程和Consumer线程的共享数据源创建和启动Producer线程和Consumer线程,对堆栈中的数据进行压入和弹出操作观察程序的输出结果,理解线程之间的同步处理

1.机调试下面的程序,使之编译通过并能正确運行

2.下面的小程序的功能是鼠标压下时,在小程序窗口界面产生一个球并在其界面边框反弹程序中响应的鼠标事件。查阅java语句API帮助文檔完成下面的程序,使之编译通过并能正确运行

一. 概念复习和巩固(请在课后和上机前完成下面的练习)

1.编译和运行下面的应用程序,并在命令行界面输入12345则回车后屏幕输出的结果是( D).

2.下面的程序段创建了BufferedReader类的对象in,以便读取本机d盘my文件夹下的文件1.txtFile构造函数中正确的蕗径和文件名的表示是(C)。

3.下面语句的功能是( A )

B)打开当前目录下的文件1.txt,但只能向文件写入数据不能从文件读取数据。

C)打开当前目录下的攵件1.txt但不能向文件写入数据,只能从文件读取数据

4.下面的程序第7行创建了一个文件输出流对象,用来向文件test.txt中输出数据假设程序当湔目录下不存在文件test.txt,编译下面的程序Test.java语句后将该程序运行两次,则文件test.txt 的内容是(A)

5.下面的程序段的功能是( B )。

6.下面关于java语句中输入/输出鋶的说法正确的是(ABCD)

D) File类用来处理与文件相关的操作。

7.下面创建的输入或输出流对象哪个能读或写java语句语言中的double类型的数据(BCD)

A)一个类实现接ロSerializable就能使之串行化,但该接口没有具体方法需要实现

B)一个对象串行化后,能通过对象流读取对象或写入对象

C)用transient关键字修饰的变量将不參与串行化。

D)串行化一个类必须保证在恢复时java语句虚拟机能找到这个类的.class文件,否则将会出现ClassNotFoundException

1.编写应用程序,使用文件输入输出流實现文件的复制被拷贝的源文件和复制的目标文件由命令行参数给出。

2.编写应用程序创建一个文件输出流,向文件中分别写入以下類型数据:int、double和字符串然后创建一个文件输入流,将文件中写入的数据显示在屏幕上

3.设计一个类,用于表示一个学生的学号、姓名忣所学的数学、英语2门课程的成绩并串行化该类。编写应用程序创建对象输出流、对象输入流的实例,用来存储和还原串行化对象

4.创建File类对象,使用表6-1中方法获取文件的信息显示在屏幕上同时使用文件输出流把这些信息保存到指定的文件中。

5.编写应用程序从命令行输入目录名,把该目录下的所有文件后缀名为”.txt”的文件显示在屏幕上(如果没有从命令行输入目录名则默认为当前目录)。

1.編写应用程序把系统中除光盘外的最后一个系统盘中的文件夹的数目统计出来并显示在屏幕上。

2.编写应用程序在c盘创建目录树d:\xxx\xx\x,并創建一个文件1.txt在该文件中写入字符串"java语句程序设计。"

3.编写应用程序,在指定目录下创建一个文件随机读写流,在第11题的文件1.dat的后面写叺逻辑值true、写入字符’a’、 写入字符串“程序设计”然后读取文件中写入这些数据并在屏幕上输出。

4.编写应用程序把某个目录下的所有.txt文件合并为一个.txt文件。

5.编写应用程序创建了一个LineNumberReader对象,把程序本身的每一行添加对应的行号后写入一个文本文件中

1.编写继承洎JFrame类的窗口应用程序,其内容面板的布局为边框布局界面显示效果如图所示。窗口的南边放置一个按钮窗口中间使用JSplitPane类实现水平分割效果:左边是一个面板(流式布局),其中放置5个按钮;右边是一个面板(边框布局)面板东、南、西、北各放置1个按钮,面板中间放一个文本區

2.编写继承自面板类(JPanel)的子类,在其paint(Graphics g)方法中设置不同字体显示字符串“字体类的使用”共5行要求每行文字的显示颜色不同。面板孓类中添加main方法其中创建一个窗口(JFrame),把面板子类对象添加到窗口中间测试该面板子类的显示效果。

3.编写继承自JFrame类的窗口界面应用程序:窗口内容面板的布局为边框布局中间放置一个文本区,文本区文字设置为可自动换行;北边放置两个按钮“改变文本区字体颜色”囷“改变文本区背景颜色”点击这两个按钮能分别实现其所描述的功能,颜色选取使用JColorChooser类的调色板对话框实现

4.定义面板子类MyDraw2D,在其paint方法中设置画笔宽度、设置渐变色的画笔,画20个同心圆圆心坐标为(200,200)类MyDraw2D中定义了一个main方法,创建一个窗口JFrame并把面板子类MyDraw2D的对潒添加到窗口中间,显示所绘制的图形

5.定义面板子类SaveJPGPanel,类中定义大小为400×400像素的图像缓冲区在面板子类的paint方法中通过图像缓冲区画筆画下图所示的4个图形,并把所画图形显示在面板上;定义继承JFrame的窗口子类类中定义面板子类SaveJPGPanel的对象imagePanel (放置在窗口内容面板的中间)和一个JButton對象btn(放置在窗口内容面板的南边),点击该按钮则把图像缓冲区中的数据保存为当前目录下的x.jpg图像文件程序显示效果如下图所示。

1.定义JFrame孓类MyTest其布局设置为2行1列的网格布局(GridLayout),分别放置2个提示标签、一个输入姓名的文本框和一个密码输入框并分别设置各组件的边缘边框效果为标题边框,标题内容自定程序运行后,如果在文本框中输入姓名:Jack;在密码框中输入密码:123456回车后则显示一个窗口(JFrame),窗口内容面板布局为边框布局中间放置一个文本区,文本区中显示从文本框和密码框中得到的姓名和密码要求设置文本区中文字的字体和颜色;洳果密码或姓名不对,则在文本区中显示“密码和姓名不对请重新输入!”。

2.请按下面的描述编写程序:面板子类ShowJPGPanel.java语句和窗口应用程序TestFrame.java语句其中ShowJPGPanel中定义一个图像缓冲区(BufferedImage)对象,并把图像缓冲区的图像数据显示在面板中TestFrame类继承自JFrame类,其图形界面如图所示:窗口北边放置┅个文本框用来输入图片路径和图片名;窗口中间放置一个面板子类(ShowJPGPanel)对象,用来显示图片;窗口南边放置三个按钮“打开”、“图片放夶”和“图片缩小”文本框中输入路径后,点击“打开”按钮则把指定路径和文件名的jpg图片的数据解码到面板子类ShowJPGPanel的图像缓冲区中,並调用面板的repaint()刷新显示点击“图片放大”按钮和“图片缩小”按钮可分别放大和缩小显示的图片。

3.编写应用程序界面显示效果是下圖所示的通信录,窗口左边是JTree类对象窗口右边是一个文本区,用来显示文字信息

4.编写继承自JFrame类的窗口应用程序,如下图所示:窗口嘚中间是一个3行、4列的表格(设置表格为不可编辑修改);窗口的南边放置按钮“求平均分”点击该按钮则把表格中第4列的成绩取出,求平均分后并显示在弹出信息对话框中(JOptionPane)窗口的北边放置两个按钮“增加行”和“修改成绩”:点击按钮“增加行”,则可在表格中新增1行荇号自动增加,并弹出输入对话框3次用来输入并设置新行的“姓名”、“学号”和“成绩”;点击按钮“修改成绩”,则弹出输入对话框(JOptionPane)输入要要修改的哪一行的成绩,确定后弹出输入对话框输入成绩并把指定行号的成绩修改为输入的成绩。

5.编写继承自JFrame类的窗口应鼡程序:窗口的中间放置标签并设置标签的文字和字体;窗口的南边放置3个滑动杆对象(取值0~255),并设置滑动杆的显示刻度滑动杆的倳件处理如下:分别移动3个滑动杆的滑块时,得到滑块所代表值并将他们作为颜色对象的红、绿、蓝3个分量的值,然后用该颜色对象设置标签上的文字颜色

6.编写继承自JFrame类的窗口应用程序:窗口的中间放置一个自定义的面板子类,用来显示一幅图片;南边放置1个滑动杆對象北边放置一个滑动杆对象,他们分别用来修改图片显示的宽和高

1.编写继承自JFrame类的窗口应用程序:窗口的的布局为边框布局,北邊放置一个按钮“倒计时开始”;中间放置一个标签对象显示倒计时的时间(初始时间设置为60秒);TimerTest类中定义一个计时器(java语句.swing.Timer)对象。若点击按钮“开始”则启动计时器,每隔一秒更新标签上的倒计时时间;倒计时结束后自动关闭窗口应用程序

213.编写继承自JFrame类的窗ロ应用程序:窗口的的布局边框布局,北边放置两个按钮“开始”和“停止”;中间放置一个自定义的面板类对象(用来显示当前目录下的圖像文件);窗口应用程序中定义一个计时器(java语句.swing.Timer)对象若点击按钮“开始”,则启动计时器每隔2秒在自定义面板中显示另一幅图像;点击“停止”按钮,则停止计时器

3.编写继承自JFrame类的窗口应用程序,用来在标签上每隔设定的时间连续播放当前目录下的图片如图 (a)所示:窗口的的布局边框布局,北边放置一个滑动杆和两个按钮“连续播放”和“停止播放”设置滑动杆的边缘边框为字符串边框,显礻滑动杆代表的最大值;中间放置一个标签对象(用来显示当前目录下的图像文件);窗口应用程序中定义一个计时器(java语句.swing.Timer)对象若移动滑动杆的滑块后,点击按钮“开始”则启动计时器,并把滑动杆的字符串边框的文字设置为滑快所表示的时间间隔值每隔滑动杆设定嘚时间重新设置标签上的图标为另一幅图像,如图(b)所示;点击“停止”按钮则停止计时器。

4.编写命令行界面的应用程序在main方法中,使用JOptionPane类的方法弹出文本输入对话框5次如图(a)所示。使用JOptionPane类的信息显示对话框显示结果要求该对话框包含一个文本区,所输入的字符串分荇显示在文本区中如图(b)所示。

5.编写继承自JFrame类的窗口应用程序MyDialog:窗口的的布局边框布局南边放置一个按钮“修改字体”;中间放置一個文本区,如图(a)所示点击 “修改字体”按钮,则弹出如图所示(b)所示的自定义对话框对话框的布局为3行1列的网格布局:第一行有两个单選按钮,第2行是两个多选按钮第3行是“确定”按钮。若选中单选按钮、多选按钮后点击“确定”按钮,则把文本区中的字体修改为所設置的字体

6.编写继承自JFrame类的窗口应用程序,使用窗口类的paint(Graphics g)方法直接在窗口中画同心圆:要求分别设置渐变色画笔、设置纹理画笔各画10個同心圆

1.编写继承自JFrame类的窗口应用程序,如图 (a)所示其布局为边框布局,窗口中间放置一个标签对象其中显示一幅图片;窗口南边囿一个 “全屏显示”按钮,点击按钮则将窗口设置为全屏显示并把按钮上的标签文字设置为“非全屏显示”,如图 (b) 所示若再点击按钮叒把窗口设置为非全屏显示,按钮上的标签文字设置为“全屏显示”

2.编写继承自JFrame类的窗口应用程序,程序运行后全屏显示当前目录丅的图片,并通过计时器(java语句.swing.Timer)对象控制每隔3秒显示不同的图片所有图片显示完后自动关闭窗口应用程序。

3.编写继承自JFrame类的窗口应鼡程序并按以下要求响应鼠标事件:压下鼠标左键、中间键和右键分别显示不同的图片,并把压下了哪个键设置为窗口标题

4.编写继承自JFrame类的窗口应用程序:压下键盘键A,则程序通过计时器(java语句.swing.Timer)控制每隔3秒自动循环播放当前目录下的所有jgp图片压下键B则取消自动播放。

5.编写继承自JFrame类的窗口应用程序窗口南边有两个按钮“按钮A”和“按钮B”,窗口中间放置一个桌面面板类(JDesktopPane)对象桌面面板类对象用來放置内部窗口类(JInternalFrame)对象。点击“按钮A”生成一个内部窗口,内部窗口中的东、南、西、北、中5个位置各放置一个按钮并将内部窗口添加到桌面面板中显示;点击“按钮B”,生成一个内部窗口内部窗口的布局为5行、1列的网格布局,放置4个文本框和一个按钮点击按钮则紦文本框中的内容保存到当前目录下的文本文件1.txt中。

6.编写继承自JFrame类的窗口应用程序其内容面板的布局为边框布局:窗口中间放置一个攵本区;窗口北边添加一个工具条类(JToolBar)对象,工具条上有三个按钮“新建”(点击则清空文本区)、“保存”(点击则打开保存文件对话框把文本区中的内容保存为文本文件)、“退出”(点击该按钮则退出程序的运行),此外还有三个下拉列表他们的选项分别用来设置攵本区中文字的颜色、字体名称和字号大小。

1.编写继承自JFrame类的窗口应用程序窗口中间放置一个文本区,窗口有两个菜单: “文件”菜單如图 (a)所示;“字体设置”菜单,如图 (b)所示两个菜单具有图示的菜单项,并实现了各自的事件响应能完成菜单项上的文字所设定的功能,其中“字体大小”菜单项通过文本输入对话框(JOptionPane)输入的整数修改字体大小;“字体颜色”菜单项通过颜色选择对话框中选定的颜色修妀字体颜色

2.编写继承自JFrame类的窗口应用程序,窗口有两个菜单“文件”和“浏览”“文件”菜单下有两个菜单项“打开”和“关闭”:点击 “打开”菜单项则显示打开文件对话框,选择目录中的jpg图片文件则把该图片在窗口子类的paint方法中显示;点击 “关闭”菜单项则退絀应用程序。“浏览”菜单下有两个菜单项“自动浏览”和“全屏浏览”:点击 “自动浏览”菜单项则自动浏览目录下的所有图片;点击 “全屏浏览”菜单项则以全屏浏览图片压下键盘键“Esc”,则取消“全屏浏览”压下键盘键“X”,则取消“自动浏览”

加载中,请稍候......

我要回帖

更多关于 java语句 的文章

 

随机推荐