第一章1.开发与运行Java程序需要经过哪些主要步骤和过程?答:(1)编写Java源文件:使用文本编辑器(Edit或记事本),拓展名为.java(2)编译Java源文件:使用Java编译器(javac.exe)。得到字节码文件*.class(3)运行Java程序:Java应用程序使用Java解释器(java.exe)执行字节码文件;Java小应用程序使用支持Java标准的浏览器来执行。2.怎样区分应用程序和小应用程序?应用程序的主类或小应用程序的主类必须用public修饰吗?答:①应用程序必须有main方法,这个方法是程序执行的入口。小应用程序没有main方法。②应用程序的主类不一定用public修饰;小应用程序的主类必须用public修饰。3.Java程序是由什么组成的?一个程序中必须要有public类吗?Java源文件的命名规则是怎样的?答:①Java程序由类组成。②应用程序可以没有public类;小应用程序一定有一个类是public类(主类)。③应用程序:如果只有一个类,源文件名与该类的类名相同,拓展名为.java;有多个类时,如果有public类(最多一个),源文件名与public类的类名相同,拓展名是.java;没有public类,源文件名与任何一个类的类名相同即可,拓展名为.java。小应用程序:源文件名与主类的类名相同,拓展名是.java。第四章1.类中的实例变量在什么时候会被分配内存空间?答:当该类创建对象之后,实例变量才会被分配相应的内存空间。2.什么叫方法的重载?构造方法可以重载吗?答:①一个类中可以有多个方法具有相同的名字,但这些方法的参数必须不同,即或者是参数的个数不同,或者是参数的类型不同(方法的重载体现了多态性,即功能多态性)。②构造方法可以重载。3.类中的实例方法可以操作类变量(static变量)吗?类方法(static方法)可以操作实例变量吗?答:①类中的实例方法可以操作类变量。②类方法不可以操作实例变量4.类中的实例方法可以用类名直接调用吗?答:类中的实例方法不可以用类名直接调用。5.举例说明protected方法和友好方法的区别。答:当子类与父类不在同一个包中时,子类可以继承父类的protected方法;而友好方法此时则不能被子类继承。6.举例说明类变量和实例变量的区别。答:⑴书写:定义成员变量时,类变量有static修饰;实例变量没有static修饰。例:classA{intx;//实例变量staticinty;//类变量}⑵内存:不创建对象,类的实例变量不会被分配内存空间;类变量被分配相应的内存空间。不同对象的实例变量被分配不同的内存空间;不同对象的类变量被分配相同的内存空间。任何一个对象改变类变量,其他对象的相应类变量也发生相应变化。一个对象的实例变量发生改变,不影响其他对象的相应实例变量。例:执行语句:A1.x=10;A1.y=20;这时A2.x的值也是10;而A2.y的值保持原来的初值。⑶使用:类变量可以被类方法操作;而实例变量不能被类方法操作。例:classA{intx;staticinty;staticvoidfunc(){b=10;//合法a=20;//非法}}类变量可以通过类名访问;实例变量不能通过类名访问。例:classA{intx;staticinty;}classB{publicvoidfunc();{A.x=10;//非法A.y=20;//合法}}7.子类将继承父类的哪些成员变量和方法?子类在什么情况下隐藏父类的成员变量和方法?在子类中是否允许有一个方法和父类的方法名字相同,而类型不同?答:①子类和父类在同一个包中时,子类可以继承父类的除private属性的所有方法和成员变量,当子类与父类不在同一个包中时,子类只能继承父类的protected和public属性的成员变量和方法。②子类中定义的成员变量和父类中的成员变量同名时,子类就隐藏了继承的成员变量;子类中定义一个方法,并且这个方法的名字、返回类型、参数个数和类型与从父类继承的方法完全相同,子类就隐藏从父类继承来的方法(方法的重写)。③在子类中允许有一个方法和父类的方法名字相同而类型不同。8.父类的final方法可以被子类重写吗?答:父类的final方法不能被子类重写。9.什么类中可以有abstract方法?答:abstract类中可以有abstract方法。10.什么叫对象的上转型对象?答:B类是A类的子类或间接子类,当用子类B创建一个对象b并把这个对象的引用放到A类的对象a中时,称A类对象a是子类对象b的上转型对象。11.什么叫接口的回调?答:可以把实现某一接口的类创建的对象的引用赋给该接口声明的接口变量中。3.Checkbox对象可以触发ItemEvent事件吗?答:可以。15.使用接口有哪些注意事项?答:①一个类使用接口时,要有implements关键字,当一个类使用多个接口时,接口名要用逗号“,”隔开;使用接口的类除abstract类外,必须实现接口的所有方法,并且实现接口的方法时,方法名字、返回类型、参数个数及类型必须与接口中的完全一致;类在实现接口时,方法体一定要用public修饰,如果接口方法的返回类型不是void型,在类中实现接口时,方法体至少有一个return语句。第9章1.线程有几种状态?答:一个线程在它的一个完整的生命周期有4种状态,分别是:新建、运行、中断和死亡,即(运行、就绪、挂起、结束)。2.引起线程中断的常见原因是什么?答:①JVM将CPU资源从当前线程切换给其他线程,使本线程让出CPU的使用权处于中断状态;②线程使用CPU资源期间,执行了sleep(intmillsecond)方法,使当前线程进入休眠状态;③线程使用CPU资源期间,执行了wait()方法,使得当前线程进入等待状态;④线程使用CPU资源期间,执行某个操作进入阻塞状态,比如执行读/写操作引起阻塞。3.一个线程执行完run()方法后,进入了什么状态?该线程还能再调用start()方法吗?答:执行完run()方法后,进入了死亡状态;此时不能再调用start()方法。4.线程在什么状态时,调用isAlive()方法返回的值是false。答:线程处于“新建”状态时,线程调用调用isAlive()方法返回的值是false。当线程处于“死亡”状态时,其返回值也是false.5.建立线程有几种方法?答:①用Thread类直接创建一个线程;创建时要向构造方法Thread(Runnabletarget)传递一个Runnable接口的实例。②用Thread类的子类创建一个线程;需要重写父类的run()方法。6.怎样设置线程的优先级?答:线程的优先级通过setPriority(intgrade)方法设置,需要传递一个在0-10的int型参数。7.在多线程中,为什么要引入同步机制?答:引入同步机制解决了当两个或两个以上线程同时访问同一个变量,并且一个线程需要修改这个变量时发生的混乱。8.在什么地方wait()方法、notify()及notifyAll()方法可以被调用?答:①通常在线程的同步方法中使用到它们。②不涉及同步的时候也可以调用,wait()方法挂起一个线程,notifyAll()方法使得挂起的线程恢复。9.将例子9.14中的循环条件:while(五元钱的个数3)改写成:if(五元钱的个数3)是否合理。答:合理;因为在这道题中,while并不代表循环,而是表示条件,所以可以用if代换。10.线程调用interrupt()的作用是什么?答:interrupt()方法用来“吵醒”休眠的线程。即:它所完成的是当线程处于阻塞状态时,抛出InterruptedException异常,使其从阻塞状态退出来。注:interrupt()方法不会中断一个正在运行的线程。第十章1.如果准备读取一个文件的内容,应当使用FileInputSream流还是FileOutputStream流?应当使用FileInputSream流2.FileOutputStream流的read()方法和FileReader流的read()方法有何不同?FileOutputStream流的read方法从输入流中顺序读取单个字节的数据。该方法返回字节值(0~255之间的一个整数),读取位置到达文件末尾,则返回-1。FileReader流的read()方法输入流调用该方法从源中读取一个字符,该方法返回一个整数(0~65535之间的一个整数,Unicode字符值),如果未读出字符就返回-1。3.BufferReader流能直接指向一个文件对象吗?不能。4.ByteArrayOutPutStream流怎么样获取缓冲区中的内容?可以捕获内存缓冲区的数据,转换成字节数组。5.DataInputSream流和DataOutputSream类的主要用途是什么?DataInputStream(InputStreamin)将创建的数据输入流指向一个由参数in指定的输入流,以便从后者读取数据(按着机器无关的风格读取)。DataOutputStream(OutnputStreamout)将创建的数据输出流指向一个由参数out指定的输出流,然后通过这个数据输出流把Java数据类型的数据写到输出流out。6.怎么样使用输入/输出流技术克隆对象?使用对象流很容易得获取一个序列化对象的克隆。我们只需将该对象写入到对象输出流,然后用对象输入流读回的对象就是原对象的一个克隆。第11章1.一个URL对象通常包含哪些信息?答:协议、地址、资源。2.怎么样读取URL中的资源?答:URL对象调用InputStreamopenStream()方法可以返回一个输入流,该输入流指向URL对象所包含的资源。通过该输入流可以将服务器上的资源信息读入到客户端。4.客户端的Socket对象和服务端的Socket对象是怎样通信的?首先服务器端先建立socket,然后绑定事件进行监听,接着客户端建立socket,然后连接服务器,连接后进行通信,通信完成断开5.SeverSocket对象调用什么方法来建立服务器端的Socket对象?该方法有什么特点?Socket()方法,默认构造方法创建的套接字对象没有与任何本地址地址绑定,也位于任何远程主机进行连接。