Java专项选择题

1,java有8种基本类型,请问byte、int、long、char、float、double、boolean各占多少个字节?(B)

A)1 2 8 2 4 8 1
B)1 4 8 2 4 8 1
C)1 4 4 2 4 4 2
D)1 4 4 2 4 8 2

解析:byte:8位 一个字节 int:32位 四个字节 long:64位 八个字节 char:16位 两个字节 float:32位 四个字节 double:64位 八个字节 boolean:8位 一个字节

2,已知表达式int m[]={0,1,2,3,4,5,6};下面哪个表达式的值与数组下标量最大值相等?(B)

A)m. length()
B)m. length-1
C)m. length()+1
D)m. length+1

解析:数组的长度:array.length;String类型的长度:.length();集合的大小:size()

3,关于下面代码 int[] x=new int[25]; 描述正确的是(C)

A)x[25]存放了数据“\0”。
B)x[24] 存放了数据“\0”。
C)若访问x[25],程序将抛出异常。
D)x[1]访问此数组的第一个元素。

解析:A、x不存在第25个下标,不存放数据“\0”;
           B、x[24]不存放数据“\0”,初始值为0;
           C、若访问x[25],程序将抛出异常——数组越界。
           D、x[0]访问此数组的第一个元素。

4,类 ABC 定义如下:

 public  class  ABC{

 public  int  max( int  a, int  b) {   }

 

}

将以下哪个方法插入行 3 是不合法的。(B )。

 

A)public  float  max(float  a, float  b, float  c){  }
B)public  int  max (int  c,  int  d){  }
C)public  float  max(float  a,  float  b){  }
D)private  int  max(int a, int b, int c){  }

解析:

重载是Java多态性(在一个类中)的一种表现方式,要注意以下几点:

              1.参数列表不同。包括参数个数、参数类型、参数顺序等的不同;

              2.不能通过方法的访问权限、返回值类型和抛出的异常类型来判断重载;

              3.对于继承来说,如果父类方法的访问权限为private,那么就不能在子类对其重载;如果子类也定义了一个同名的函数,只是一个新方法,并不是重载方法。

5,java中用()字指明继承关系.用()关键字指明对接口的实现。(B)

 

A)implements extends
B)extends implements
C)extend implement
D)implement extend

解析:java是单继承、实现多接口。那么按照这个原则应该是一个单数、一个复数。那么implements要实现多个接口肯定要用复数。extends是单词继承的意思。extend是单词延伸的意思

6,如下语句通过算术运算和逻辑运算之后i和 j的结果是( D)

int i=0;

int j=0;

if((++i>0)||(++j>0))

{

//打印出i和j的值。

}

A)i=0;j=0
B)i=1;j=1
C)i=0;j=1
D)i=1;j=0

解析:++i先自增再运算,i++先运算在自增,所以i=1。||短路前一部分不正确就不会继续执行,所以j=0.

7,对于同一类中的两个方法 , 在判断它们是不是重载方法时 , 肯定不考虑(C )

A)参数个数
B)参数类型
C)返回值类型
D)参数顺序

解析:重载:类中可以创建多个方法,它们具有相同的名字,但具 有不同的参数和不同的定义。调用方法时通过传递 给它们的不同参数个数和参数类型 给它们的不同参数个数和参数类型 给它们的不同参数个 数和参数类型 来决定具体使用哪个方法 ,  这就是多态性。重写 Overriding 是父类与子类之间多态性的一种表现, 在子类中定义某方法与其父类有相同的名称和参数。重载 Overloading 是一个类中多态性 的一种表现。重载的时候,方法名要一样,但是参数类型和个数不一样,返回值类型可以相同 也可以不相同。 无法以 返回型别 作为重载函数的区分标准。而且编译的时候只有返回值不同,会报错。及使不报错,运行时无法区分调用哪个方法

8,以下程序的运行结果是:( C)

TreeSet<Integer> set = new TreeSet<Integer>();

 TreeSet<Integer> subSet = new TreeSet<Integer>();

 for(int i=606;i<613;i++){

 if(i%2==0){

 set.add(i);

 }

 }

 subSet = (TreeSet)set.subSet(608,true,611,true);

 set.add(629);

 System.out.println(set+" "+subSet);

 

A)编译失败
B)发生运行时异常
C)[606, 608, 610, 612, 629] [608, 610]
D)[606, 608, 610, 612, 629] [608, 610,629]

解析:API=======subset(form,true,to,true)是Treeset的非静态方法,该方法返回从form元素到to元素的一个set集合,两个boolean类型是确认是否包含边境值用的。

 

9,关于抽象类与最终类,下列说法错误的是?(D)

A)抽象类能被继承,最终类只能被实例化。
B)抽象类和最终类都可以被声明使用
C)抽象类中可以没有抽象方法,最终类中可以没有最终方法
D)抽象类和最终类被继承时,方法可以被子类覆盖

解析:最终类就是被final修饰的类,最终方法就是被final修饰的方法。最终类不能被继承,最终方法不能被重写。

10,关于C++/JAVA类中static 成员和对象成员的说法正确的是?(C)

A)static 成员变量在对象构造时生成
B)static 成员函数在对象成员函数中无法调用
C)虚成员函数不可能是static 成员函数
D)static 成员函数不能访问static 成员变量

解析:static成员变量是在类加载的时候生成的;static成员函数既可以通过类名直接调用,也可以通过对象名进行调用;虚函数是C++中的,虚函数不可能是static的;static成员函数可以访问static成员变量

11,在开发中使用泛型取代非泛型的数据类型(比如用ArrayList<String>取代ArrayList),程序的运行时性能会变得更好。(×)

解析:泛型只在编译的时候保证数据类型的正确性,和运行期间的性能无关

12:下列哪个选项是Java调试器?如果编译器返回程序代码的错误,可以用它对程序进行调试。(C)

A)java.exe
B)javadoc.exe
C)jdb.exe
D)javaprof.exe

解析:java,exe是java虚拟机;javadoc.exe用来制作java文档;jdb.exe是java的调试器;javaprof,exe是剖析工具

13,关于 访问权限说法正确 的是 ? (D)

A)外部类定义前面可以修饰public,protected和private
B)局部内部类前面可以修饰public,protected和private
C)匿名内部类前面可以修饰public,protected和private
D)以上说法都不正确

解析:对于外部类来说,只有两种修饰,public和默认(default),因为外部类放在包中,只有两种可能,包可见和包不可见。对于内部类来说,可以有所有的修饰,因为内部类放在外部类中,与成员变量的地位一致,所以有四种可能。

14,以下代码可以使用的修饰符是:(ABD)

A)final
B)static
C)abstract
d)public

解析:接口中字段的修饰符:public static final(默认不写);接口中方法的修饰符:public abstract(默认不写)

15,Gadget has-a Sprocket and Gadget has-a Spring and Gadget is-a Widget and Widget has-aSprocket 以下哪两段代码可以表示这个关系? (选择两项) (AC)

A)class Widget { Sprocket s; }
  class Gadget extends Widget { Spring s; }
B)class Widget { }
  class Gadget extends Widget { Spring s1; Sprocket s2; }
C)class Widget { Sprocket s1; Spring s2; }
  class Gadget extends Widget { }
D)class Gadget { Spring s; }
  class Widget extends Gadget{ Sprocket s; }

解析:is-a   表示继承:Gadget is-a Widget就表示Gadget 继承 Widget;

           has-a表示从属:Gadget has-a Sprocket就表示Gadget中有Sprocket的引用,Sprocket是Gadget的组成部分;

           like-a表示组合:如果A like-a B,那么B就是A的接口

16,以下哪些方法可以取到http请求中的cookie值(BD)?

A)request.getAttribute
B)request.getHeader
C)request.getParameter
D)request.getCookies

解析:request.getParameter()取得是通过容器的实现来取得通过类似post,get等方式传入的数据,request.setAttribute()和getAttribute()只是在web容器内部流转,仅仅是请求处理阶段。两个WEB间为转发关系时,转发目的WEB可以用getAttribute()方法来和转发源WEB共享request范围内的数据

17,下面关于面向对象的一些理解哪些是错误的( C)

A)面向对象的最重要的特性是支持继承、封装和多态
B)系统设计应该遵循开闭原则,系统应该稳定不不可修改,但应支持通过继承、组合等方式进行扩展
C)函数式的语言必然是面向对象的语言
D)面向对象设计时,每个类的职责应该单一,不要再一个类中引入过多的接口
E)过程式语言和面向对象的语言各有其优势,过程式语言更加灵活,面向对象语言更加强调抽象和封装
F)Java和C++都是静态类型的面向对象编程语言

解析:动态类型语言是指在运行期间才去做数据类型检查的语言,也就是说,在用动态类型的语言编程时,永远也不用给任何变量指定数据类型,该语言会在你第一次赋值给变量时,在内部将数据类型记录下来。静态类型语言与动态类型语言刚好相反,它的数据类型是在编译其间检查的,也就是说在写程序时要声明所有变量的数据类型,C/C++是静态类型语言的典型代表,其他的静态类型语言还有C#、JAVA等。

18,下面哪项技术可以用在WEB开发中实现会话跟踪实现?(ABCD)

A)session
B)Cookie
C)地址重写
D)隐藏域

解析:会话跟踪是一种灵活、轻便的机制,它使Web上的状态编程变为可能。
           HTTP是一种无状态协议,每当用户发出请求时,服务器就会做出响应,客户端与服务器之间的联系是离散的、非连续的。当用户在同一网站的多个页面之间转换时,根本无法确定是否是同一个客户,会话跟踪技术就可以解决这个问题。当一个客户在多个页面间切换时,服务器会保存该用户的信息。
有四种方法可以实现会话跟踪技术:URL重写、隐藏表单域、Cookie、Session。
       1).隐藏表单域:<input type="hidden">,非常适合步需要大量数据存储的会话应用。
       2).URL 重写:URL 可以在后面附加参数,和服务器的请求一起发送,这些参数为名字/值对。
       3).Cookie:一个 Cookie 是一个小的,已命名数据元素。服务器使用 SET-Cookie 头标将它作为 HTTP
响应的一部分传送到客户端,客户端被请求保存 Cookie 值,在对同一服务器的后续请求使用一个
Cookie 头标将之返回到服务器。与其它技术比较,Cookie 的一个优点是在浏览器会话结束后,甚至
在客户端计算机重启后它仍可以保留其值
       4).Session:使用 setAttribute(String str,Object obj)方法将对象捆绑到一个会话

19,往OuterClass类的代码段中插入内部类声明, 哪一个是错误的:(ABCD)

public class OuterClass{

    private float f=1.0f;

    //插入代码到这里

}

A)class InnerClass{
  public static float func(){return f;}
  } 
B)abstract class InnerClass{
  public abstract float func(){}
  }
C)static class InnerClass{
  protected static float func(){return f;}
  }
D)public class InnerClass{
  static float func(){return f;}
  }

解析:1.静态内部类才可以声明静态方法

           2.静态方法不可以使用非静态变量

           3.抽象方法不可以有函数体

20,下列哪些方法是针对循环优化进行的(ABD)

A)强度削弱
B)删除归纳变量
C)删除多余运算
D)代码外提

解析:代码优化也可分为局部优化、 循环优化和全局优化:
           局部优化指的是在只有一个入口、 一个出口的基本程序块上进行的优化。
           循环优化是对循环中的代码进行的优化,在一个程序运行时,相当多的一部分时间会花在循环上,因此,基于循环的优化非常重要。
           全局优化是在整个程序范围内进行的优化。
           删除多余运算
           使生成的目标代码减少而执行速度较快,也叫删除公共子表达式循环优化:对循环中的代码段,可以进行代码外提、强度削弱和删除归纳变量等优化。
           删除多余运算应该不是专门针对循环优化的。

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值