Corejava试题

                         Corejava试题

  

  • 选择题(每题2分,总分40分)

1、下列关于JDK、JRE和JVM的描述。哪项正确?(D )
A. JDK中包含了JRE,JVM中包含了JRE

B. JRE中包含了JDK,JDK中包含了JVM

C. JRE中包含了JDK,JVM中包含了JRE

D.  JDK中包含了JRE,JRE中包含了JVM

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

3、下面叙述正确的有_______B___D________。

A.在一个java原文件中只能定义一个class

B.在一个java原文件中可以定义多个class

C.在一个java原文件中只能定义public class

D.java原文件的前缀一定是所包含public类型的名字

 

 

4、java程序中程序运行入口方法main的签名正确的有_A_B____。

A. public static void main(String args[])

B. static public void main(String[] args)

C. public void static main(String[] args)

D. public void main(String args[])

  1. public class Test {

void printValue(int m){

do {

System.out.println("The value is"+m);

} while( --m > =10 );

}

public static void main(String args[]) {

int i=10;

Test t= new Test();

t.printValue(i);

}

}

  输出将是什么? (C)

A. The value is 8

    B. The value is 9

C. The value is 10

D. The value is 11

6、以下能作为class, interface, method或variable有效标识符的有____A__D__F______。以$ _字母开头,后接$ _字母 数字 不能以关键字和保留字作为标识符

A.For      B.boolean       C.23age

D. _id      E.my name      F. $this_is_a_long_variable_name

7.为将数组myArray的长度由3改为6,现采取以下编码:

    int[]myArray=new int [3];

    myArray=new  int[6];

    代码执行后,以下叙述哪项是正确的?D

A.数组myArray的长度已由3改为6,其中前3个元素的值不变,后3个元素的值为空。

B.数组myArray的长度已由3改为6,其中前3个元素的值不变,后3个元素,需再经过初始化后才能使用。

C.数组myArray的长度没有变化。

D.数组myArray的长度已由3改为6,原来3个元素的值全部丢失

8.以下哪种初始化数组的方式是错误的?(D  )

 A. String[] names={"zhang",   "wang",   "li"};

 B. String  names[]  =new  String [3];

    names [0]  ="zhang";  

names [1]  ="wang";  

names [2]  ="li";

 C. String[]  names={"zhang", "wang", "li"};

 D. String[] name=new String[3]{“zhang”,”wang”,”li”};

9、 class Test2 {

    public  static void main (String []  args)  {

    short  a,b,C;

    a=l;

    b=2;

    C=(short)a+b;

    a+=2;//自动转换为(short)

      }

    }

以上代码中,哪一句是错误的?( B )

   A. a=1:

   B.C=a+b;      

  C.  a+=2;  

      D.  short a,b,C;

10、以下正确的有__A_C__。

A. int i = 32;           B.float f = 45.32;          

C. double d=3.2; D.char = “hello”;

11、以下方法申明正确的有__A____C_D_____。

A.public static void writeLog(String msg)

B. public static writeLog(String msg)

C. public final void writeLog(String msg)

D.static public void writeLog(String msg)

12、方法重载(overloading)必须满足_B C_E_ 。

A. 在不同class中定义的方法     B.在同一类中定义的方法

C. 方法名必须相同              D.返回类型必须相同

E. 参数一定不同                F.参数可以相同

13、请看以下程序:

class Vehicle {

     public void drive() {

         System.out.println("Vehicle: drive");

     }

 }    

 class Car extends Vehicle {

     public void drive() {

         System.out.println("Car: drive");

     }

 }   

 public class Test {

     public static void main (String args []) {

         Vehicle v;

         Car c;

         v = new Vehicle();

         c = new Car();

         v.drive();

         c.drive();

         v = c;         

v.drive();

     }

 }

以下描述正确的有___C__。

  1. 对于语句v=c;会导致编译错误  

B.对于语句v=c;会导致运行错误

C.运行输出:

Vehicle: drive

Car: drive

Car: drive

D.运行输出:

Vehicle: drive

Car: drive

Vehicle: drive

14、程序:

  public class StaticTest {

    static {

       System.out.println("Hi there");

    }

    public void print() {

       System.out.println("Hello");

    }

    public static void main(String args []) {

        StaticTest st1 = new StaticTest();

       st1.print();

       StaticTest st2 = new StaticTest();

       st2.print();

    }

 }

什么时候字符串“Hi there”会输出____C____。

A.永远都不会输出          B.创建st1和st2时

C.第一次将StaticTest类型装载进内存时 D.显示调用print方法时

15、在一个java源文件中,import,class,package语句的顺序是(B)。

A. Import class package

B. Package class import

C. Import package class

D. Package import class

16. 设x = 1 , y = 2 , z = 3,则表达式y+=z--/++x 的值是(A )。

Y=y+(z--/++x)//如果是int选A如果是double选B

A. 3   B. 3. 5    C. 4    D. 5

17、下面的代码段中,执行之后i 和j 的值是什么? __C

int i = 1;

int j;

j = i++; 

 A、 1, 1           B、1, 2          C、2, 1        D、2, 2

18、对记录序列

{314,298,508,123,486,145}

按从小到大的顺序进行插入排序,经过两趟排序后的结果为:( B)

A. {314,298,508,123,145,486}

B. {298,314,508,123,486,145}

C. {298,123,314,508,486,145}

D. {123,298,314,508,486,145}

19. 如下程序:

public class ArugmentTest{

static public void change(int a){

  a = 3;

}

public static void main(String[] args){

   int a = 2;

   change(a);  

   System.out.print(a);

}

}

在控制台上输出的是___D___。

A. 运行出错      B.3      C.编译出错       D.2

20. Given:       

public class Test {

public static void main (String[]args) {   

String foo = args[1];           

String bar = args[2];           

String baz = args[3];             

System.out.println(“baz = ” + baz);         

}     

}    

And the output:     baz = 2     

使用哪个命令会输出上述结果?(C)

  1. java Test  2222   B. java Test   1 2 3 4  

C. java Test  4 2 4 2     D. java Test   4 3 2 1  

  • 填空题(每空1分,总分9分)
  1. Java方法的参数传递对于基本数据类型如int, byte等,参数传递是____值传递____;对自定义数据类型,参数传递是__引用地址值传递_____。

2、当声明一个数组int arr[] = new int[5]; 时,这代表这个数组所保存的变量类型是___int_____,数组名是_____arr___,数组的大小为_____5____,数组元素下标的使用范围是__0__到_4___。

3、任何一个java程序都默认引入了一个包,这个包名是_java.lang_____,所有类的父类是这个包下的__Object__ 类。

三、简答题(每题4分,总分24分)

1.面向对象的特征有哪些方面?

封装性、继承性、多态性、(抽象性)

答:面向对象有三大特点:封装、继承、多态。(如果要回答四个,可加上 抽象性 这一特点)
1.继承:
继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。
2.封装:
封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。
3. 多态性:
多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。
4.抽象:
抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。

  1. 请简述重载和重写的区别?

1,发生的地方不同,重载是在同一个类同,重写实在继承的时候子类中。

2,实现的功能不同,重载是为了满足不同的参数需求,方便调用,体现灵活性。

而重写是覆盖父类的方法,对父类方法进行修改。

3,语法不同,重载是要求方法名相同,形参必须不同,返回值和修饰符无要求。

而重写则是要求方法名和形参相同,并且父类私有方法和静态方法不能被重写。

普通方法也不能被重写为静态的,子类能定义与父类相同的静态方法但这不是重写。

3.请写出八大基本数据类型按照数据类型分别归类,以及四个引用数据类型

4.Java中继承的特点是什么?继承时,子父类的构造器是如何调用的?

 1.只支持单继承,即一个子类只允许有一个父类。

       2. 子类可以拥有父类的属性和方法

       3. 子类可以拥有自己的属性和方法

       4. 子类可以重写覆盖父类的方法

 

5. 现有:

 class  Ifs  {

      public  static void main (String  []  args)  {

        boolean state=false;

        int i=2;

        if( (++i>2) && (state=true))         

 i++;//i=4

        if( (++i>4) || (state=false))

          i++;//i=6.

         System.out .println (i);

        }

请问输出的结果是多少:____6__

6.现有:

          class Test{

            public static void mian(String[] args){

                 int i=5;

                do{

i++;

}while(i>=5){

 i--;

                System.out.println(i);

}

}

        请输出程序运行的结果:___编译时异常_____;  

 

四、编程题(第一小题8分,第二小题9分,第三小题10分,总分27分)

1,题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。

public void digit() {

int count=0;

for (int i = 1; i <= 4; i++) {

for (int j = 1; j <= 4; j++) {

for (int k = 1; k <= 4; k++) {

if (i != j && i != k && j != k) {

System.out.print(i * 100 + j * 10 + k+"\t");

count++;

}

}

}

}

System.out.println();

System.out.println("一共有:"+count+"个数");

}

 

  1. 以二进制形式输出一个十进制数,利用for循环和移位以及&运算。

import java.util.Scanner;

 

public class ToBinary {

private int number;

 

public void setNumber(int number) {

this.number=number;

}

public int getNumber() {

return number;

}

 

public ToBinary() {

}

public ToBinary(int number) {

this.number=number;

}

 

public void toBinary() {

String result="";

for(int i=number;i!=0;i=i/2) {

result=i%2+result;

}

System.out.println("结果为:"+result);

}

public void toBinary2() {

String result="";

int number=this.number;

for(int i = 0;i<32;number>>=1,i++) {

result=(number&1)+result;

// if(number==0)break;

// System.out.println(result);

}

System.out.println("结果1为:"+result);

}

public void toBinary4() {

int[]a=new int[32];

int number=this.number;

for(int i = 0;i<32;number>>=1,i++) {

a[a.length-i-1]=(number&1);

if(number==0)break;

}

System.out.print("结果4为:");

for(int i:a) {

System.out.print(i);

}

}

public void toBinary3() {

String result=Integer.toBinaryString(number);

System.out.println("结果3为:"+result);

}

public static void main (String[] args) {

System.out.println("请输入需要转换的十进制数:");

Scanner input=new Scanner(System.in);

int i=input.nextInt();

ToBinary tb=new ToBinary(i);

tb.toBinary();

tb.toBinary2();

tb.toBinary3();

tb.toBinary4();

}

}

 3、常用的排序算法有哪些,请列举?

使用java实现选择排序,对数组int[] array = {2,5,1,98,198,43};进行

排序

For(int i=0;i

Int result=0;

For(int j=1+i;j

If(array[j]

Result=j;

}

}

Array[i]=array[i]^j;

J=i^j;//i^j^j

I=i^j;//i^i^j^j

}

 

import java.util.Arrays;

public class Selection {

public int[] selection(int array[]) {

for(int i=0;i<array.length;i++) {//遍历这个数组

int min=array[i];//默认当前数最小

int index=i;//将当前的索引赋给index

for(int j=i+1;j<array.length;j++) {

if(array[j]<min) {

min=array[j];//min为找到的比当前数小的数

index=j;//保留最小数的索引,用于找到最小数后的交换操作

}

}

array[index]=array[i];//将最小数与当前数交换

array[i]=min;

}

return array;

}

public void print(int array[]) {

for(int i=0;i<array.length;i++) {

System.out.print("array["+i+"]="+array[i]+"\t");

if((i+1)%5==0) {

System.out.println();

}

}

}

public static void main(String[] args) {

Selection s=new Selection();

int array[]= {99,45,12,34,82,46,75,28,43,19};

s.selection(array);

s.print(array);

System.out.println(Arrays.toString(array));

}

}

你可能感兴趣的:(Java基础)