码迷,mamicode.com
首页 > 编程语言 > 详细

2018.6.19 Java模拟考试(基础习题)

时间:2018-06-20 00:02:41      阅读:2179      评论:0      收藏:0      [点我收藏+]

标签:类型   否则   boolean   als   数组声明   访问权限   简答题   二次   结果   

Java模拟考试(基础习题)

一、单选题(每题1分 * 50 = 50分)

1.java程序的执行过程中用到一套JDK工具,其中javac.exe指( B )

A.java语言解释器
B.java字节码编译器
C.java文档生成器
D.java类分解器

2.在Java语言中,不允许使用指针体现出的Java特性是( D )

A.可移植
B.解释执行
C.健壮性
D.安全性

3. 00101010(&)00010111语句的执行结果是( C )

A.11111111
B.00111111
C.00000010
D.00000000

4.在Java中语句:37.2%10的运算结果为( A )

A.7.2
B.7
C.3
D.0.2

5.0.6332 的数据类型是( B )

A.float
B.double
C.Float
D.Double

6.System.out.println(“5” + 2);的输出结果应该是( A )

A.52
B.7
C.2
D.5

 System.out.println("5"+2+1);//521

7.下面的方法,当输入为 2 的时候返回值是多少( D )

public static int getValue(int i) {
        int result = 0;
        switch (i) {
        case 1:
            result = result + i;
        case 2:    //从这里进去    result=0+2*2  =4
            result = result + i * 2;
        case 3:     //因为没有break结束   所以直接进入   result= 4+2*3  =10
            result = result + i * 3;
        }
        return result;
}


A.0
B.2
C.4
D.10

8.下列语句中,属于多分支语句的是( B )

A.if语句
B.switch语句
C.do while语句
D.for语句

9.下列程序执行的结果是( C )。

public class Ex6 {
    public static void main(String[] args) {
        char ch=‘8‘;
        int r=10;
        switch(ch+1) {  //第一次 9     第二次  15+1
            case ‘7‘: r=r+3;
            case ‘8‘: r=r+5;
            case ‘9‘: r=r+6;//9+6=15
                break;
            default: ;
        }
    System.out.print(r);
    }
}


A.14
B.13
C.16
D.10

10.执行如下程序代码后,a的值是多少( C )

public class Ex10 {
    public static void main(String[] args) {
       int a=0;
       int c=0;
        do{
        --c;
        a=a-1;
        }while(a>0);
        System.out.println("aa"+a);
    }    
}

A.0       B.1       C.-1      D.死循环

do while的特点:
    当不满足循环条件就退出,这种循环的特点是至少会执行循环一次,先执行循环后判断

11.下面程序代码执行的结果为:( B )

public class Ex11 {
    public static void main(String[] args) {
      for(int i = 0;i<5;i++){
        System.out.println(i++);
        if(i%3==0)
        break;
        }   
    }
}

A.0   1   2
B.0   2
C.0   2   4
D.0   1   3


使用break语句是跳出循环执行循环之后的语句,而continue语句是中止本次循环继续执行下一次循环。

12.下列数组声明中错误的是( D )

A.int[] a         B.int a[]
C.int[][] a       D.int a[10]

13.执行完代码”int[] x=new int[25];”后,以下( A )说明正确的

A.x[24]为0
B.x[24]未定义
C.x[25]为0
D.x[0]为空

14.应用程序的main方法中有以下语句,则输出的结果是( A )

public class Ex14 {
    public static void main(String[] args) {
       int[]  x= {122,33,55,678,-987};
        int  y= x[0];
        for(int i=1;i<x.length;i++){
            if(x[i]>y)
                y =x[i];
            }
            System.out.println(y);
    }
}

A.678   B.122   C.-987   D.33

15.方法methodA返回类型是( A )

public class ReturnIt{
     return Type methodA(byte x, double y) {
       return (short) x/y * 2;
   }
}

A.int    B.byte    C.long  D.double

16.下面程序运行的结果是( A )

public class X {
    private static int a;
    public static void main(String [] args) {
        modify(a);
        System.out.println(a);
    }

    public static void modify(int a) {
        a++;
    }
}

A.0       B.1       C.程序编译失败       D.程序抛出异常

17.给定如下Java程序的方法结构,则方法体实现语句正确的是( C )

public String change(int i){ //方法体 }

A.return 100;
B.return ‘a’;
C.return i+””;
D.return i;

18.下列语句正确的是( A )

A.形式参数可以被视为local variable (局部变量)
B.形式参数可被字段修饰符修饰
C.形式参数为方法被调用时,真正被传递的参数
D.形式参数不可以是对象

A:形式参数和局部变量一样,生命周期随着方法的结束而终结,离不开方法。在Java中形式参数都是值传递的,所以可以视为一个局部变量。

B:Java中字段修饰符有:public、protected、default、private、final、static。在形式参数中,如果要使用字段修饰符,只能使用final修饰符。其他任何修饰符都能引起编译器错误。

C:java中方法没有引用调用,调用的形参都是拷贝的。 
D:形式参数可以是值或者对象。

19.在某个类中存在一个方法:void getSort(int x),以下能作为这个方法的重载声明的是( C )

A.public getSort(float x)   没有返回类型 一定是构造函数 不能重载
B.int getSort(int y)   参数一样不是重载
C.double getSort(int x,int y)
D.void get(int x, int y)

重载判定就是方法名相同传入的参数不同  参数列表不同

20.given the following

public class X {
    public static void main(String [] args) {
       String d="bookkeeper";
        d.substring(2,9);//这里需要重新接收字符串  含义是重第二个开始到第九个位置结束 okkeepe
        d = "u"+d; //还是用最开始的d字符串
        System.out.println(d);
    }
}
What is the result (  B )

A.uookkeewoo
B.ubookkeeper
C.ubookkeepertoo
D.An exception is thrown at runtime

总结:substring(x)是从字符串的的第x个字符截取
     substring(x,y)是从x到y前的位置停止 

21.下面程序运行的结果是( A )

public class Test1{
    public static void main(String args[]){
        String a="1234";
        String b="1234";
        String c = new String("1234");
        System.out.println(a==b);//True  比较的是地址
        System.out.println(a==c);//false 比较的是地址
        System.out.println(a.equals(c));//true  比较的是内容
    }
}

A.true false true
B.true true  false
C.true false false
D.true true  true

22.给定如下Java代码,编译运行后,输出的结果将是( B )

public class Test {
    public static void main(String args[]) {
        String s1 = new String("Test");
        String s2 = new String("Test");
        if (s1 == s2)
            System.out.println("Same");//比较的是地址   new出来是开辟新的空间
        if (s1.equals(s2))
            System.out.println("Equals");//比较的是内容
    }
}

A.Same
B.Equals
C.SameEquals
D.什么都不输出

23.下面的代码执行结果是( A )

public class TT{
    public static void main(String[]args){
        String a = "A";
        StringBuffer b = new StringBuffer("B");
        StringBuffer c = new StringBuffer("C");//初始化出的StringBuffer对象的内容就是字符串”C”
        change(a,b,c);
            System.out.println(a+","+b+","+c);//A,B1,C
}
static void change(String s,StringBuffer s1,StringBuffer s2){
    s=s+"1";
    s1.append("1");
        System.out.println("1"+s2);// C
    s2=new StringBuffer("C1");C  //初始化出的StringBuffer对象的内容就是字符串”C1”
        System.out.println("2"+s2);// C1
    }
}

A.A,B1,C
B.A1,B1,C1
C.A,B,C
D. A1,B,C

注意:String类是final变量不可以修改,stringbuffer 是new出来的,生成的对象根据括号里面的内容来生成

24.下列说法正确的有( C )

A.class中的constructor不可省略
B.constructor必须与class同名,但方法不能与class同名
C.constructor在一个对象被new时执行
D.一个class只能定义一个constructor

方法可以和类名同名的,和构造方法唯一的区别就是,构造方法没有返回值。

25.关于对象的删除,下列说法正确的是( B )

A.必须由程序员完成对象的清除
B.Java把没有引用的对象作为垃圾收集起来并释放
C.只有当程序中调用System.gc()方法时才能进行垃圾收集
D.Java中的对象都很小,一般不进行删除操作

解释:在Java中定义对象时往往通过new运算符为其分配内存空间,于是当不再希望使用这个对象时需要释放掉它所占用的内存。在Java中,释放内存的工作是由系统自动隐含的进行,编程人员无须关心。

26.下列描述中,错误的是( A )

A.Java要求编程者管理内存
B.Java的安全性体现在多个层次上
C.Applet要求在支持Java的浏览器上运行
D.Java有多线程机制

在编译层、解释层、平台层分别作不同的安全检查
Applet本身不能运行,但能够嵌入到Web浏览器中运行
多线程是Java程序的并发机制,它能同步共享数、处理不同的事件

27.在如下所示的类Test中,共有( C )个构造方法

public class Test{
private int x;
public Test(){  //1
    x = 35;
}

public void Test(double f) {
    this.x = (int)f;
}

public Test(double f){  //2
    this.x = (int)f;
}

public Test(String s) { }  //3
}

A.1
B.2
C.3
D.4

构造方法是与clss同名但是无返回值参数可以不同

28.设 A为已定义的类名,下列声明A类的对象a的语句中正确的是( A )

A.public  A  a=new  A( );
B.public  A  a=A( );
C.A  a=new  class( );
D.a  A

29.关于类的静态成员的不正确描述是()

A.静态成员不属于对象,是类的共享成员
B.静态数据成员初始化的时机要优先于实例成员
C.静态成员函数不拥有this指针,需要通过类参数访问对象成员
D.只有静态成员函数可以操作静态数据成员

30.下列说法正确的是( C )

A.Java中包的主要作用是实现跨平台功能
B.package语句只能放在import语句后面
C.包(package)由一组类(class)和界面(interface)组成
D.可以用#include关键词来标明来自其他包中的类

31.关于继承的说法正确的是( B )

A.子类将继承父类所有的属性和方法
B.子类将继承父类的非私有属性和方法
C.子类只继承父类public方法和属性
D.子类只继承父类的方法,而不继承属性

32.下列修饰符中与访问控制无关的是( D )

A.private
B.public
C.protected
D.final

33.关于被私有访问控制符private修饰的成员变量,以下说法正确的是()

A.可以被三种类所引用:该类自身、与它在同一个包中的其他类、在其他包中的该类的子类
B.可以被两种类访问和引用:该类本身、该类的所有子类
C.只能被该类自身所访问和修改
D.只能被同一个包中的类访问

34.关于对象成员占用内存的说法哪个正确( B )

A.同一个类的对象共用同一段内存
B.同一个类的对象使用不同的内存段,但静态成员共享相同的内存空间
C.对象的方法不占用内存
D.以上都不对

35.下列哪个类的声明是正确的( D )

A.abstract final class HI{}
B.abstract private move(){}
C.protected private number;
D.public abstract class Car{}

类声明的格式为: [修饰符]class类名[extends父类名][implements类实现的接口列表]{...} 修饰符指明类的访问控制符和类型说明符。修饰符包括:public、默认(也称friendly)、 abstract、final。public和默认(也称friendly)为访问控制符,abstract和final是类型说明符。访问控制符可以和类型说明符搭配使用.

36.以下程序的输出结果为( D )

class Base {
    public Base(String s) {
        System.out.println("B");
    }
}


class Derived extends Base {
    public Derived(String s) {
        System.out.println("D");
    }
}

public class Test{
    public static void main(String[] args) {
        new Derived("C");
    }
}

A.BD
B.DB
C.C
D.编译错误

37.在使用super 和this关键字时,以下描述正确的是( A )

A.在子类构造方法中使用super()显示调用父类的构造方法,super()必须写在子类构造方法的第一行,否则编译不通过
B.super()和this()不一定要放在构造方法内第一行
C.this()和super()可以同时出现在一个构造函数中
D.this()和super()可以在static环境中使用,包括static方法和static语句块

解释:
    super()和this()类似,区别是,super从子类中调用父类的构造方法,this()在同一类内调用其它方法。
    3)super()和this()均需放在构造方法内第一行。
    4)尽管可以用this调用一个构造器,但却不能调用两个。
    5)this和super不能同时出现在一个构造函数里面,因为this必然会调用其它的构造函数,其它的构造函数必然也会有super语句的存在,所以在同一个构造函数里面有相同的语句,就失去了语句的意义,编译器也不会通过。
    6)this()和super()都指的是对象,所以,均不可以在static环境中使用。包括:static变量,static方法,static语句块。
    7)从本质上讲,this是一个指向本对象的指针, 然而super是一个Java关键字。

38.当编译并运行以下程序列会出现什么结果( A )

class A{
public int getNumber(int a){
return a+1;
   }
}

class B extends A{
   public int getNumber(int a, char c){
      return a+2;
}
public static void main(String[] args){
    B b=new B();
    System.out.println(b.getNumber(0));
   }
}

A.编译错误
B.运行错误
C.1
D.2

39.阅读下列程序,选择哪一个是正确的输出结果() 没有图片

A.static A I’m A class static B I’m B class
B.I’m A class I’m B class static A static B
C.static A static B I’m A class I’m B class
D.I’m A class static A I’m B class static B

注释:静态成员是累的共享成员
     静态变量要在定义时就初始化
     调用静态方法时通过类或对象激活

40.如下题:在子类Child2的方法f()中不可以操作的变量是( A )

package a;
class Parent{
private int i=20;
protected int j=30;
public int k=40;
int h=50;
}

class Child1 extends Parent {    }

class Child2 extends Child1{

void f(){   }

}

A.i            B.j          C.k          D.h

41.下列程序的运行结果是( )。

class Parent{
    int i=20;
    int j=30;
    void f(){
    System.out.print(” “+i);
   }
}

class Child extends Parent {
    int i=30;
    int k=40;
    void f(){
    System.out.print(” “+i);
}
    void g(){
        System.out.print(” “+k);
}

public static void main(String args[]){
Parent x=new Child();
System.out.print(x.i);
    x.f();
Child x1=(Child)x;
System.out.print(” “+x1.i);
x1.f();
   }
}

A.30 30 30 30       B.20 20 20 20     C.20 30 30 30     D.都不对

42.在JAVA 中( C )。

A.一个子类可以有多个父类,一个父类也可以有多个子类
B.一个子类可以有多个父类,但一个父类只可以有一个子类
C.一个子类只可以有一个父类,但一个父类可以有多个子类
D.上述说法都不对

43.下列哪一种叙述是正确的( D )

A. abstract修饰符可修饰字段、方法和类
B. 抽象方法的body部分必须用一对大括号{ }包住
C. 声明抽象方法,大括号可有可无
D. 声明抽象方法不可写出大括号

44.设int a=-2,则表达式a>>3的值为( D )。

A.8
B.0
C.3
D.-1

1000 0010    右移之后 1000  0001

45.看下面的程序,请给出结果:( B )

public class TestObj{
    public static void main(String[] args){
        Object o=new Object(){
            public boolean equals(Object obj){
                return true;
    }
};
    System.out.println(o.equals("Fred"));
    }
}

A.运行时抛出异常
B.true
C.Fred
D.第三行编译错误

46.下面程序问题( C )

interface C {
   name = “”;
   void f();
   abstract void g();
   void h(){};
}

A.第2行编译错误
B.第4行编译错误
C.第5行编译错误
D.没有错误,正确

47.以下对抽象类的描述正确的是( D )

A.抽象类没有构造方法
B.抽象类必须提供抽象方法
C.抽象类可以通过new关键字直接实例化
D.有抽象方法的类一定是抽象类

48.以下描述错误的有( C )

A.abstract 可以修饰类、接口、方法
B.abstract修饰的类主要用于被继承
C.abstract 可以修饰变量
D.abstract修饰的类,其子类也可以是abstract修饰的
E.final可以用来修饰类、方法、变量

49.关于String,StringBuilder以及StringBuffer,描述错误的是( B )

A.对String对象的任何改变都不影响到原对象,相关的任何change操作都会生成新的对象
B.StringBuilder是线程安全
C.StringBuffer是线程安全
D.可以修改StringBuilder和StringBuffer的内容

String 
final 修饰,不可变

StringBuilder  非线程安全、不使用多线程的情况下,效率高

StringBuffer 
线程安全

50.在类的定义中可以有两个同名函数,这种现象称为函数( C )。

A.封装
B.重写
C.重载
D.继承

二、多选题(每题2分 * 10 = 20分)

1.关于final的说法正确的是( C D)

A.final一般修饰静态变量,静态变量不会发生变化
B.final不能修饰抽象类,抽象类是用来继承的
C.final修饰的方法,不能被重写,但是可以重载
D.final修饰类,类不能被继承, String就是final类

2. 下列标识符不合法的有( ACD )

A.new    B.$Usdollars    C.1234    D.car.taxi

3. 下面错误的初始化语句是( CD )

A.char str[]=”hello”;
B.char str[100]=”hello”;
C.char str[]={‘h’,’e’,’l’,’l’,’o’};
D.char str[]={‘hello’};

4.在Java中,下面关于包的陈述中正确的是( A D )

A.包的声明必须是源文件的第一句代码。
B.包的声明必须紧跟在import语句的后面。
C.只有公共类才能放在包中。
D.可以将多个源文件中的类放在同一个包中。

5. 关于数组的描述正确的是 ( ACD )

A. 数组有一个属性是length
B. 数组有一个方法是length()
C. 数组是固定长度,相同类型,连续的物理存储空间
D. 数组的声明可以是基本数据类型,也可以是对象类型数组,但是数组本身是引用类型

6.对于二分搜索法,下面描述正确的是(A C)

A.可用于数组
B.可用于单链表
C.只能在已排序的数据上进行
D.最坏情况下时间复杂度是O(N*LogN)  

二分查找需要在已排序的数组上进行,需要能够通过下标直接索引到值,因此无法在链表上进行
二分查找首先要求数据是有序的,同时要求能随机访问数据元素, 有序数组可以, 链表不行,
二分查找因为每次都是从中间点开始查找,所以最坏情况是目标元素存在于最边缘的情况。最坏为O(LogN)

7.下列关于类的继承的描述,正确的有?(B )

A.一个类可以直接继承多个父类
B.一个类可以具有多个子类
C.子类会自动拥有父类定义的有效访问权限的方法以及成员变量
D.一个类继承另一个类必须重写父类的方法

8. 下列描述错误的是?(B D)

A.类只能继承一个父类,但是可以实现多个接口
B.抽象类自身可以定义成员而接口不可以
C.抽象类和接口都不能被实例化
D.一个类可以有多个基类和多个基接口

Java不支持多继承,只能有一个基类
接口中定义的成员变量默认为public static final,只能够有静态的不能被修改的数据成员;而且,必须给你赋初值,其所有成员方法都是public、abstract的,而且只能被这两个关键字修饰。

9. 数据的存储结构包括?( A B)

A.顺序存储
B.链式存储
C.图存储
D.二叉存储

10. 关于下面的代码说法正确的是()

final class D{

final int no=1;

final void f(){

final String s=””;

s = “some thing”;

}

}

A.该类不可被继承

B.第2行可不对no赋值

C.f方法不可被重写

D.没有编译错误

三、填空题(每题2分 * 5 = 10分)

1、如果一个 Java 源程序文件中定义了4个类,则使用编译命令 编译该源程序文件,将生成 个扩展名为class 的字节码文件。

2、设 x = 2 则表达式 (x++)*3 的值是 。

3、Java 语言的各种数据类型之间提供了两种转换: 、 。

4、Java 设计有 关键字,这不仅防止了内存地址计算错误的问题,也省去了编程时对内存进行分配的烦恼。

5、我们在Java 程序中把关键字 加到方法名称的面前,来实现子类调用父类的方法。

四、简答题(每题5分 * 4 = 20分)

1、抽象类(abstract class)和接口(interface)有什么异同?

2、什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”?

3、说明overload和override的区别。

4、&和&&的区别?

五、编程题(每题10分 * 2 = 20分 )

1、求100之内的素数(能被1和本身整除)。

2、请使用Java编写程序对数组进行冒泡排序。

public class X{
    public static void main(String[] args){
        int[] arr = {34,2,6,4,23};
        for(int i =0;i<arr.length;i++){
            for(int j = 0;j<i;j++){
                if(arr[i]>arr[j]){
                    int temp = arr[i];
                    arr[i] = arr[j];
                    arr[j] = temp;
                }
            }
        }
        for(int i = 0;i<arr.length;i++){
            System.out.println(arr[i]);
        }
    }
}

2018.6.19 Java模拟考试(基础习题)

标签:类型   否则   boolean   als   数组声明   访问权限   简答题   二次   结果   

原文地址:https://www.cnblogs.com/qichunlin/p/9163507.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!