A. (特急)《java程序设计》理论题库—判断题(要准确答案)
异常的抛出,就是将异常抛给异常处理器,暂时不去处理它。
摘要:《Java程序员面试指南》第7章异常处理及内存管理,本章讲述的是要想成功地成为一名合格的Java程序员,掌握好异常处理机制是编写大型程序必不可少的基本功。本节为大家介绍异常的处理方式之三:throw。
标签:throw Java 程序员 Java程序员面试指南
Oracle帮您准确洞察各个物流环节
7.4 异常的处理方式之三:throw(1)
异常的抛出,就是将异常抛给异常处理器,暂时不去处理它。本节主要讲解用throw抛出异常的方式,以及如何由try-catch来接收所抛出的异常。
当一个方法发生异常时可以通过throw关键字来抛出异常,把异常抛给它上一级的调用者,抛出的可以是异常引用,也可以是异常对象,它的语法格式如下:
throw 异常对象名; 或者
throw new 异常类名(); 一条throw语句一旦被执行,程序立即转入相应的异常处理程序段,它后面的语句就不再执行了(这一点类似于return语句),而且它所在的方法也不再返回有意义的值。在一个方法中,throw语句可以有多条,但每一次最多只能执行其中的一条。在一般情况下,throw语句都会写在判断语句块中,以避免每次都执行该语句。
【代码剖析】下面来看一个例子,也许从中你会明白点什么。具体代码如下:
public class catchThows { static int x; public static void main(String argv[]) { double a = Math.random() * 10; if (x > 0) System.out.println(a / x); else throw new Exception(); // 抛出异常 } public void setX(int x) { this.x = x; } } 运行结果如图7.1所示。
(点击查看大图)图7.1 运行结果
从上面的运行结果中可以看出,一个方法中如果使用throw来抛出异常,要么自己捕获它,要么声明抛出了一个异常。要声明抛出了异常,需要用throws关键字在方法的头部声明。如果我们将上面的代码修改成下面的代码,那么结果又会怎样呢?
public class catchThows_1 { static int x; public static void main(String argv[]) { new catchThows().setX(0); double a = Math.random() * 10; if (x > 0) System.out.println(a / x); else try { throw new Exception();// 抛出异常 } catch (Exception e) { System.out.println("出现异常的原因是:"+e.getMessage()); } } public void setX(int x) { this.x = x; } } 运行结果如下:
出现异常的原因是:null 还有一种抛出异常的方法是让被调用的方法表示它将不处理异常,该异常将被抛出到它的调用方法中。这点是和throws声明异常很相似的,但它们的位置是完全不同的。具体代码如下:
public class catchThows_2 { void findThows() { try { //抛出方法 throw new ArithmeticException(); } catch(ArithmeticException ae) { throw ae; } } public static void main(String args[]) { catchThows ct=new catchThows(); //对方法进行异常处理 try { ct.findThows(); } catch(ArithmeticException ae) { System.out.println("出现异常的原因是:"+ae); } } } 运行结果如下:
出现异常的原因是:java.lang.ArithmeticException
【责任编辑:云霞 TEL:(010)68476606】
回书目 上一节 下一节
上一篇: 7.3 异常的处理方式之二:throws(2) 下一篇: 7.4 异常的处理方式之三:throw(2)
相关文章
·7.5 内存的管理(2)
·7.4 异常的处理方式之三:throw(2)
·17.3 Java高级编程试题(1)
·17.1 Java基础编程试题(6)
·17.1 Java基础编程试题(5)
频道热门
·自己动手写搜索引擎
·1.1.2 编写代码(15分钟)
·1.1.1 准备工作环境(10分钟)
·软件调试的艺术
·WCF编程(第2版)
B. 有几个java网络编程基础的选择题 哪位大神给下答案
、Applet为一种特殊的Panel,它可作为Java Applet程序的最外层容器。 ( )
2、Java的源码中定义多少个类,编译后结果就生成多少个以.class为后缀的字节码文 ( )
3、Java程序中,使用关键字new创建新的类对象,使用关键字free回收无用的类对象。 ( )
4、Java有垃圾回收机制,可在指定的时间使用内存回收程序释放内存对象。 ( )
5、构造函数用于创建类的实例对象,返回类型为void,构造函数名应与类名相同。 ( )
6、在异常处理中,假设try中的代码可能产生多种异常则可以对应多个catch语句,若catch中的参数类型有父子关系,此时应该将子类放在前面,父类放在后面。 ( )
7、含有abstract方法的类是抽象类,而抽象类中可以没有abstract方法。 ( )
8、Java的屏幕坐标以像素为单位,容器的左下角被确定为坐标的起点。 ( )
9、静态初始化器是在其所属的类加载内存时由系统自动调用执行。 ( )
10、在Java中可使用赋值号( )对对象赋值,相当于生成了一个各属性与赋值对象相同的新对象。 ( )
11、MVC是Model-View-Controller的简写。"View" 是应用的表示面(由JSP页面产生)。( )
12、MVC是Model-View-Controller的简写。"Controller" 是提供应用的处理过程控制(一般是一个Servlet),通过这种设计模型控制应用逻辑。( )
13、Tomcat是支持JSP引擎的一种服务器软件,可以通过server.xml文件修改服务器的配置信息。( )
14、通过Request.getParameterValues()可以获得某个参数的多个值( )
15、运行JSP需要有JSP引擎,Tomcat是支持JSP的Web服务器的一种。( )
16、Jsp使用的是Java脚本代码,可跨平台运行,运行开销小,具有速度快,可扩展性好及支持分布式处理等特点。 ( )
17、在定义了Bean的属性后,可不创建属性方法。( )
18、if语句是Java的条件分支语句,它控制程序以两条路径执行。( )
19、包是类的容器,用于保证类名空间的一致性。( )
20、JSP中不能使用HTML中的“<!-- -->”注释方式,只能使用JSP的“<!-- -->”的注释方式。
答案:仅供参考
T T F T T T T F T F T T T F F F T T T F
21.Java application中的主类必须包含方法main,以下哪项是main方法的正确参数?( )
A、 String args B、String ar[] C、Char arg D、StringBuffer args[]
22.以下对继承的正确描述是( )。
A、在Java中类只允许单一继承
B、在Java中一个类只能实现一个接口
C、在Java中一个类不能同时继承一个类和实现一个接口
D、在Java中接口只允许单一继承
23.paint()方法中的参数可使用哪种类型? ( )
A、Graphics B、Graphics2D C、String D、Color
24.以下不属于Java基本数据类型的是( )
A、int B、Boolean C、float D、char
25.以下哪项可能包含菜单条( )。
A、Panel B、Frame C、Applet D、Dialog
26.应使用哪种修饰符定义一个类域或类方法?( )
A、static B、package C、private D、public
27.在浏览器中执行applet 程序,以下选项中的哪个方法将被最先执行( )。
A、init() B、start() C、destroy() D、stop()
28.参考以下代码,关于该程序以下哪个说法是正确的?( )
public class Person{
static int arr[] = new int[3];
public static void main(String a[])
{
System.out.println(arr[0]);}
}
A、编译时将产生错误 B、编译时正确,运行时将产生错误
C、输出零 D、输出空
29.下列语句中,哪些关于Java内存回收的说明是正确的? ( )
A、程序员必须创建一个线程来释放内存
B、内存回收程序负责释放无用内存
C、内存回收程序允许程序员直接释放内存
D、内存回收程序可以在指定的时间释放内存对象
30.以下关键字中,可以用来对对象加互斥锁的是?( )
A、transient B、synchronized C、 serialize D、static
31.以下代码段执行后的输出结果为( )
int x=-3; int y=-10;
System.out.println(y%x);
A、 -1 B、2 C、1 D、3
32.有以下程序片段,下列哪个选项不能插入到行1。( )
1.
2.public class Interesting{
3.//do sth
4. }
A、import java.awt.*; B、package mypackage;
C、class OtherClass{ } D、public class MyClass{ }
33.假设有如下两个赋值语句:
a = Integer.parseInt(“5”);
b = Integer.valueOf(“5”).intValue();
下述说法正确的是( )。
A、a是整数类型变量,b是整数类对象。 B、a是整数类对象,b是整数类型变量。
C、a和b都是整数类对象并且值相等。 D、a和b都是整数类型变量并且值相等。
C. java面试题:酒店预订!
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("是否是会员?y/n");
String H = input.next();
System.out.println("请输入入住日期:");
System.out.println("例如2009-03-16");
String in = input.next();
System.out.println("请输离开日期:");
System.out.println("例如2009-03-16");
String out = input.next();
//String in = s.substring(5,15);
//String out = s.substring(15,26);
//System.out.println(in+" "+out);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar c1 = Calendar.getInstance();
Calendar c2 = Calendar.getInstance();
try {
c1.setTime(sdf.parse(in));
c2.setTime(sdf.parse(out));
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
long time1 = c1.getTimeInMillis();
long time2 = c2.getTimeInMillis();
long tian = (time2-time1)/(1000*24*3600);
long tian1 = tian;
System.out.println("tian "+tian);
int week1 = c1.get(Calendar.DAY_OF_WEEK)-1;
//System.out.println(week1);
//int week2 = c2.get(Calendar.DAY_OF_WEEK)-1;
//System.out.println(week2);
int count = 0;
while(tian1>0){
if(week1 == 6 || week1==0){
count++;
}
if(week1==6){
week1 = 0;
week1--;
}
tian1--;
week1++;
}
System.out.println("count "+count);
long rujia;
long qitian;
long hanting;
if(H.equals("y")){
rujia = (tian-count)*80+count*80;
System.out.println("tian "+tian);
qitian = (tian-count)*110+count*50;
hanting = (tian-count)*100+count*40;
}else{
rujia = (tian-count)*110+count*90;
qitian = (tian-count)*160+count*60;
hanting = (tian-count)*220+count*150;
}
System.out.println("tian " + tian);
System.out.println("rujia "+rujia);
System.out.println("hanting "+hanting);
System.out.println("qitian "+qitian);
if(rujia<qitian && rujia<hanting){
System.out.println("如家");
}else if(qitian<rujia && qitian<hanting){
System.out.println("七天");
}else if(hanting<rujia && hanting<qitian){
System.out.println("汉庭");
}else if(hanting==rujia || hanting==qitian){
System.out.println("汉庭");
}else if(qitian==rujia && qitian<hanting){
System.out.println("七天");
}
}
我没怎么测试 自己测测吧 还有一些约束用户输入啥的 严谨性什么的
D. java网络编程实验题远程访问服务器目录的程序
代码如下。。。我测试过了。。。。下面两个类是在同一台机器上进行测试的,先运行Server.java,再运行Client.java
import java.io.*;
import java.net.*;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Server {
public static void main(String[] args) throws Exception{
ServerSocket ss = new ServerSocket(8080);
Socket socket = ss.accept();
BufferedReader in = //获取客户端发过来的消息
new BufferedReader(
new InputStreamReader(socket.getInputStream()));
PrintWriter out = //用于向客户端发送消息
new PrintWriter(
new OutputStreamWriter(
socket.getOutputStream()),true);
while(true){
String message = in.readLine();//读取消息
if("quit".equals(message))//退出命令
break;
String s[] = message.split("\\s+");
if("dir".equals(s[0])){
File dir = new File(s[1]);
File[] files = dir.listFiles();
//向客户端发送文件消息
for(File file:files){
Date date = new Date(file.lastModified());
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");//日期格式化
FileInputStream is = new FileInputStream(file);
out.println(file.getName()+"\t"+df.format(date)+"\t"+((is.available()+1023)/1024)+"k");
}
out.println("ok");
}
}
socket.close();
in.close();
out.close();
ss.close();
}
}
-------------------------------------------------------------------------------------------------------------
import java.io.*;
import java.net.*;
public class Client {
public static void main(String[] args) throws Exception{
InetAddress add = InetAddress.getByName(null);
Socket socket = new Socket(add,8080);
BufferedReader in = //获取服务器端发过来的消息
new BufferedReader(
new InputStreamReader(socket.getInputStream()));
PrintWriter out = //用于向服务器端发送消息
new PrintWriter(
new OutputStreamWriter(
socket.getOutputStream()),true);
out.println("dir d:/test");
String mes;
while(true){
mes = in.readLine();
if("ok".equals(mes))
break;
System.out.println(mes);
}
out.println("quit");
socket.close();
in.close();
out.close();
}
}
希望能帮到你。。。仍有问题可以追问或者直接HI我。。。
E. 请教几题JAVA 试题
1Java编译器使用文件系统来保存程序包。 ( 对 )
2Java源程序文件中是不区分字母的大小写的。 ( 错 )
3、Java applet不能够存取客户机磁盘上的文件。 ( 错 )
4、可以用new来创建一个类的实例,即”对象”。 ( 对 )
5、Java程序对计算机硬件平台的依赖性很低。 (对 )
6、Java可以用来进行多媒体及网络编程。 ( 对 )
7、用final修饰的类必须被继承。 ( 错 )
8、类是对象实例。 ( 错 )
9、每个类都只能有一个构造方法。 ( 错 )
10、applet可以运行在浏览器中。 ( 对 )
填空题
1. 【1】 是Java程序中基本的结构单位。
2.Java语言中,移位运算符包括:>>、<<和 {>>>】 ;
3.构件不能独立地显示出来,必须将构件放在一定的 【3】 中才能显示。
4.能将显示空间分成很多层的布局管理器是 【4】 。
5.Applet是能够嵌入到 【exe】 格式的文件中,并能够在浏览器中运行的Java。
6.使用Swing编写Applet,则该Applet的主类应该定义为 【6】 类的子类。
7.在Java中,线程的模型就是一个CPU、程序代码和 【7】 的封装体。
8.键盘键入字符串并在计算机屏幕上显示,这时的数据源是 【键盘】 。
9.任何一个Java程序都默认引入了一个包,这个包的名字叫java. 【unitl】 。
10.Java语言中,有一个类是所有类或接口的父类,这个类的名称是 【Object】
因只是有限,只给你写了我知道的!不好意思
希望对你有帮助!