吉林大学2015级《Java语言程序设计》考试题自做答案
1.面向对象中什么是类?什么是对象?它们之间的关系是什么?
答:类是组成Java程序的基本要素,既是组织程序代码的基本单位,也是面向对象程序设计的主体。类是创建对象的模板,对象是类在程序中的实例化。对象实例在程序中包括生成、使用和清除三个阶段。对象实例的生成又包括声明、实例化和初始化三个步骤。
2.Java语言中的访问权限控制符有哪些?对应的访问权限都是什么?
答:Java有三种访问控制符public、protect、private,还有一种没有关键字的权限(default)。
对应的访问权限:
public:意味着紧跟着的成员可以被任何其他的类访问。
protect:可以被同一个类、同一个包还要不同包中的子类访问
default:可以被同一个类和同一个包函数访问
private:只能被同一个类函数访问
3.什么是实例变量成员?什么是类变量成员?它们在存储和访问上有什么区别?
答:实例变量成员:没有加static,而类变量成员有static关键字,实例变量成员只有在new创建对象的时候,数据存储空间才会被分配,但是类变量成员则会在一开始就分配数据存储空间,实例变量成员需要对象名.成员名访问,而类变量成员是通过类名.成员名访问。
4.什么是面向对象中的多态?在Java有哪些实现方式?
答:发送消息给某个对象,让该对象自行决定响应何种行为的机制。
实现方式:多态一方面通过接口以及实现接口并覆盖接口中同一方法的几个不同的类来实现,另一方面也可以由超类和继承并重写超类中的同一方法的几个不同子类来实现。
5.异常处理有哪两种方法?请举例说明?
答:1.使用try-finally-catch结构捕获并处理异常
2…抛出异常,把异常对象通过调用层抛出,一层一层直至交给Java虚拟机
第一种
try{
//调用method()
}
catch{
//异常处理代码
}
finally{
//方法返回之前总要执行的代码
}
第二种
method()throws Exception//这里是声明异常{
if(存在异常)
{
throw new Exception;//这里才是真正抛出异常
}
}
6.List和Set有什么区别?在Java中它们分别有那些常用的实现类?
答:List是有序的Collecion而Set无序,而且Set不能出现重复的元素。
Java中常用的List有ArrayList和LinkedList等
Java中常用的Set有HashSet、TreeSet和LinkedHashSet等
选择题
1.A
2.C(default是一种权限但是没有关键字,不算是控制符,使用的时候也不能直接写)
3.D
4.D
5.C
6.C
7.D
8.超出考试范围A
9.B
10.B(要复习这个内容,什么是节点流,什么是处理流)
**填空题:**1.继承和多态 2.public和protected 3.超出考试范围 4.equals() hashCode() 5.run() start()
程序设计
1.main方法
方法一
方法二
在方法二的捕获中抛出
方法二finally
方法一finally
main方法的finally
2.CCC
CCC
AAA
AAA
abstract class Computer
{
abstract void use();
}
class Windows extends Computer
{
void use()
{
System.out.println("调用了Windows的use");
}
}
class Linux extends Computer
{
void use()
{
System.out.println("调用了Linux的use");
}
}
class Person
{
public Computer com;
public void useMyComputer()
{
com.use();
}
Person(Computer x)
{
com=x;
}
}
public class Demo {
public static void main( String[] args ){
Person p1=new Person(new Windows());
Person p2=new Person(new Linux());
p1.useMyComputer();
p2.useMyComputer();
}
}
4.超出考试范围
5.超出考试范围,不使用网络的部分实现如下。
import java.util.LinkedList;
class Ticket
{
public int id=0;
public static int currentMaxSum=0;
public static LinkedList<Ticket> tickets;
public static void createTicket(int num)
{
tickets=new LinkedList<Ticket>();
for(int i=0;i<num;i++)
{
Ticket k=new Ticket();
tickets.addLast(k);
}
}
Ticket()
{
Ticket.currentMaxSum++;
id=Ticket.currentMaxSum;
}
}
class SoldSystem extends Thread
{
public static int currentSoldSystem=0;
public int thread_id;
SoldSystem()
{
SoldSystem.currentSoldSystem++;
thread_id=SoldSystem.currentSoldSystem;
}
public synchronized void soldTicket()
{
if(!Ticket.tickets.isEmpty())
{
Ticket k=Ticket.tickets.removeFirst();
System.out.println(this.thread_id+"机售出了"+k.id+"号票");
}
}
@Override public void run()
{
while(!Ticket.tickets.isEmpty())
{
soldTicket();
}
}
}
public class Demo {
public static void main( String[] args ){
Ticket.createTicket(100);
SoldSystem[] s= new SoldSystem[]{new SoldSystem(),new SoldSystem(),new SoldSystem()};
for(SoldSystem p:s)
{
p.start();
}
}
}