Java日常刷题第四天

选择题:

1.在某个类A中存在一个方法:void set(int x),以下能作为这个方法的重载的声明的是
B.int set(int x,double y)
C.double set(int x,int y)
D.void set(int x,int y)
解析:A.void set(int y)×;
方法重载满足的条件:<1>同一个类中,方法名相同,参数列表不同的2个或多个方法构成方法的重载.
<2>参数列表不同指参数的类型,参数的个数,参数的顺序至少一项不同。
<3>方法的返回值类型,方法的修饰符可以不同。
注意:如果两个方法只有返回值类型不同,这两个方法在编译器看来还是同一个方法。
2.关于抽象类的叙述正确的是:抽象类不可以实例化
解析:A.抽象类不可以实例化。Java中接口和抽象类,都可以申明为对象,只需要在实例化的时候,用一个该接口/抽象类的实现类实例化就行了。即:interface/ababstract class obj=new class();其中,new后面的class是前面接口/抽象类的实现类。
B.抽象类就是一种特殊的接口。×;接口是一种特殊的抽象类。其中,成员变量都是默认public static final修饰的,方法都是public abstract修饰的,并且除了default和static的以外,只有声明,没有方法体。-
C.抽象类的方法都是抽象类。×;抽象类的方法,可以是抽象abstract的,也可以是普通的。就算全部是普通方法,也可以用abstract修饰。
D.抽象类的导出类一定不是抽象类。×;导出类,即子类,抽象类的子类可以是抽象的,也可以是普通的。
3.指出下列程序运行的结果:good and gbc

public class Example{
 String str=new String("good");
 char[] ch={'a','b','c'};
 public static void main(String args[]){
	 Example ex=new Example();
	 ex.change(ex.str,ex.ch);
	 System.out.print(ex.str+"and");
	 System.out.print(ex.ch);
}
 public void change(String str,char ch[]){
	str="test ok";
 	ch[0]='g';
   }
}

解析:
4.下面有关List接口,Set接口和Map接口的描述,错误的是 (A.他们都继承自Collection接口。)
解析:A.List接口和Set接口都继承自Collection接口,Map是一个单独的接口,跟Collection接口是同一等级,Collection接口继承lterable接口(lterable有一个lterable方法),即可迭代的;Collection只能存储引用类型,并且是单个存储;
B.List是有序的Collection,使用此接口能够精确的控制每个元素插入位置。
List接口存储元素特点:有序(存进去什么顺序取出来还什么顺序),可重复;Set接口存储元素特点:无序,不可重复。
C.Set是一种不包含重复元素的Collection.
实现List接口主要的类包括ArrayList,LinkedList,Vector;实现Set的主要类包括:hashSet,另外还有一个TreeSet接口继承它(自动排序)
D.Map提供key到value的映射。一个Map中不能包含相同的key,每个key只能映射一个value
hashtable 同步,实现一个kry–value映射的哈希表
Map接口以键值对方式存储元素,键无序不可重复,Map和Collection没有任何关系。
5.下列关于修饰符混用的说法,错误的是D.static 方法中能直接调用类里的非static的属性。
解析:A.abstract不能与final并列修饰同一个类
B.abstract类中不应该有private的成员【abstract类中可以有private但是不应该有。】
C.abstract方法必须在abstract类或接口中【若类中方法由abstract修饰的,该类必须由abstract修改。接口方法默认public abstract。
D.static 方法中能直接调用类里的非static的属性。【在JVM中static方法在静态区,静态区无法调用非静态区属性。
6.以下程序运行的结果为 run main

public class Example extends Thread{
		@Override
		public void run(){
			try{
					Thread.sleep(1000);
					}catch(InterruptedException e){
					e.printStackTrace();
					}
					System.out.print("run");
		}
		public static void main(Strin[] args){
					Example example=new Example();
					example.run();
					System.out.print("main");
		}
}

解析:
这个类虽然继承了Thread类,但是并没有真正创建一个线程。
创建一个线程需要覆盖Thread类的run方法,然后调用Thread类的run方法,然后调用Thread类的start()方法启动.
这里直接调用run()方法并没有创建线程,跟普通方法调用一样,是顺序执行。
调用run方法并不会启动子线程,而是直接当作普通函数调用,因此在执行run的时候,遇到Thread.sleep(1000)导致的是main线程休眠了1s,因此效果是运行后,在1s后控制台输出“runmain"

7.请问以下代码运行结果是:try catch finally

try
{
Console.WriteLine("try");
throw new Exception();
}
catch(Exception)
{
Console.WriteLine("catch");
}
finally
{
Console.WriteLine("finally");
}

解析:throws:写在方法声明之后,表示方法可能抛出异常,调用者需要处理这个异常。
throw:写在方法体中,表示方法一定会抛出一个异常,要么try…catch处理,要么throws抛出。
try语句块中throw了一个exception,这个exception被catch(Exception)捕获,所以输出完”try"就输出了"catch",
finally一定执行。
8.关于struts框架,下面那些说法正确:Struts框架基于MVC模式。
解析:错误改正后
A .struts可以进行文件上传
B.struts基于MVC模式,MVC是模型,视图,控制器,是一种设计模式
C.Struts框架让流程结构更清晰
D.Struts需要很多action类,会增加类文件数目
9.ArrayLists和LinkedList的区别,下述说法正确的有:
A.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构
B.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。
C.对于新增和删除操作add和remove,LinkedList比较占优势,因为ArrayList要移动数据。
D.ArrayList的空间浪费主要体现在在list列表的结尾预留一定的容量空间,而LinkedList的空间花费则体现在它的每一个元素都需要消耗相当的空间。
10.下列说法错误的有 ACD
A.在类方法中可用this来调用本类的类方法
B.再类方法中调用本类的类方法是可直接调用
C.再类方法中只能调用本类中的类方法
D.再类方法中绝对不能调用实例方法
解析:
A.类方法是指类中被static修饰的方法,无this指针。
B.类方法是可以调用其他类的static方法的
D.可以在类方法中生成实例对象再调用实例。
静态方法也就是类方法(静态成员函数)由static修饰与类对象无关。

猜你喜欢

转载自blog.csdn.net/yangyuCISCO/article/details/83009458