Java 复习题

2018-01-09  本文已影响0人  陌航__ZYH

1.水仙花数

打印出100-999所有的“水仙花数”。

思路:

水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。

(例如:1^3 + 5^3+ 3^3 = 153)

public class NarcissisticNumber
{
    public static void main(String[] args)
    {
        int b, s, g;
        for(int i = 100; i < 1000; i++)  
        {
            g = i % 10;                //g存个位数  
            s = ( i / 10 ) % 10;       //s存十位数  
            b = i / 100;               //b存百位数          
            //如果它的个十百位数字的3次幂之和等于它本身则打出
            if( i == ( (g*g*g) + (s*s*s) + (b*b*b) ) )  
            {
                System.out.println(i + "是水仙花数");
            } 
        }
    }
}

2.输入五个数求最大值

package com.company;

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        // write your code here
        Scanner scanner= new Scanner(System.in);
        System.out.println("输入五个数");
        int[] num = new int[5];
        for (int i = 0 ; i < num.length ; i++)
        {
            System.out.println("输入第"+(i+1)+"个数");
            num[i] = scanner.nextInt();
        }
        int max = num[0];
        for (int i = 0 ; i < num .length ; i++)
        {
            if (max < num[i])
            {
                max = num[i];
            }
            
        }

        System.out.println(max);


    }



        }


变量和数据类型

1.下列代码的输出结果是(A)。

 int j=0;
for(int i=0;i<100;i++){
j=j++;
}
System.out.println(j);

A.0
B.99
C.100
D.101

2.

class Example{

 public static void main(String args[])

{

 int var1 = 10;

int var2 = 20;

System.out.println(var1 + var2++ + " " + var2);

}

}

请选择一个正确答案:B

(A). 打印输出:30 20

(B). 打印输出:30 21

(C). 打印输出:31 20

(D). 打印输出:31 21

3.执行下列语句:
int a = 0x9af700; //1001 1010 1111 0111 0000 0000

a <<= 2;

变量a的值为:(B)。

A. 0x26bdc00

B. 0xc6bdc00

C. 0x3fa0000

D. 0x7e02ffff

4.下列程序 test 类中的变量 c 的最后结果为 (D )


Public static void main(String args[]){

Int a = 10;

Int b;

Int c;

If(a>50){

b=9;

}

c=b+a;

}

}

A.10

B.0

C.19

D.编译出错

5.存在使i + 1 < i的数吗(存在)

6.0.633的数据类型是(B)

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

6.分析下面这段Java代码,它的运行结果是(C )。

Import java.io.*;
Public class B{
Public static void main(string [] args){
int i=12;
System.out.println(i+=i-=i*=i);}}

A) 100
B) 0
C) -120
D) 程序无法编译

7.如下程序段:

int total = 0;

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

 if ( i == 1) continue;

 if ( i == 2) break;

 total += i;

}

则执行完该程序段后total的值为:(A )。

A、0 B、1 C、3 D、6

8.给出以下代码,请问该程序的运行结果是什么?


class Example {

public static void main(String args[]){

boolean flag = false;

if (flag = true){

System.out.println("true");

}

else{

System.out.println("false");

}

}

}

请选择一个正确答案:C

(A) 代码编译失败,因为if语句错误。

(B) 代码编译成功,但在运行期时if语句处抛出异常。

(C) 打印输出:true

(D) 打印输出:false

9.有以下程序:

public static void main(String[] args)

{

int i;

for(i=0;i<3;i++)

switch(i)

{ case 1:

System.out.print(i);

case 2:

System.out.print(i);

default:

System.out.print(i);

}

}

执行后输出结果是011122

10.如下结果选择哪个

public class FooBar{

 public static void main(String[] args){

 int i=0,j=5;

 tp: for(;;i++){

 for(;;--j)

 if(i>j)break tp;

 }

 System.out.println("i="+i+",j="+j);

 }

 }

what is the result?B

A.i=1,j=-1
B. i=0,j=-1
C.i=1,j=4
D.i=0,j=4
E.compile error at line 4

11.有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少

public class Rabbit {

 public static void main(String[] args) {

 List list = new ArrayList();

 list.add(new littleRabbit());

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

 for (int j = 0; j < list.size(); j++) {

 littleRabbit rabbit = (littleRabbit) list.get(j);

 int age = rabbit.getAge();

 if (age >= 3) {

 list.add(new littleRabbit());

 }

 age++;

 rabbit.setAge(age);

 }

 System.out.println("第" + k + "个月有" + list.size() + "对兔子,一共"+list.size()*2+"只。");

 // System.out.print(list.size()+",");

 }

 }

 }

 class littleRabbit {

 private int age = 1;

 public void growUp() {

 this.age++;

 }

 public int getAge() {

 return age;

 }

 public void setAge(int age) {

 this.age = age;

 }

12.接口:接口是Java面向对象的实现机制之一,以下说法正确的是:B

A. Java支持多重继承,一个类可以实现多个接口;

B. Java只支持单重继承,一个类可以实现多个接口;

C. Java只支持单重继承,一个类只可以实现一个接口;

D. Java支持多重继承,但一个类只可以实现一个接口。

13.接口:

interface A{

 String x = "A";

}

class B{

 String x ="B";

}

public class C extends B implements A {

 public void print(){

 System.out.println(x);

 }

 public static void main(String[] args) {

 new C().print();

 }

}

下面的描述哪一个正确:B

A) 程序编译错误,因为extends和implements不能同时使用,因为java只支持单继承。

B) 程序编译错误,因为对象C中的x不能确定引用的源。

C) 程序编译正确,结果输出为A.

D) 程序编译正确,结果输出为B.

14.接口:

final class Test1 {}

abstract class Test2{}

interface Test3{}

下面的描述中哪一个是正确的:C

A) Test1,Test3可以被实例化;Test2不可以。

B) Test2,Test3可以被实例化;Test1不可以。

C) Test1可以被实例化;Test2,Test3不可以

D) 都不可被实例化。

15.this:下列说法那些是正确的?C

A. 类本身可以使用this表达。

B. 类对象本身可以使用this表达。

C. 使用this()可以在方法内部调用本类的其他方法。

D.在构造方法中使用this()可以使用多次

16.接口:

请看下列代码:

public interface A {

String DEFAULT_GREETING = “Hello World”;

public void method1();

}

现有接口B,是A接口的子接口,下列选择中B接口的声明正确的是:A

A. public interface B extends A { }

B. public interface B implements A {}

C. public interface B instanceOf A {}

D. public interface B inheritsFrom A { }

17.接口:下列那些说法是正确的? (B )

A:定义类时,final和abstract修饰符必须选择一个,不能同时都选。

B:abstract修饰的类,可以没有abstract方法。

C:abstract修饰的类,不能有父类。

D:abstract修饰的类,不能有子类。

E:abstract修饰的类,必须有abstract方法。

F:以上说法都不对。

18.重写:

以下程序的运行输出结果是____child____。

class Parent{

 void display(){

 System.out.println("parent");

 }

}

class Child extends Parent{

 void display(){

 System.out.println("child");

 }

}

class UseOverride {

 public static void main(String args[]){

 Parent p = new Child();

 p.display();

 }

}

19.继承

class A {

 private int a = 100;

 A() {

 System.out.print(“A()”);

 System.out.println(a);

 }

}

class B extends A {

 private int a = 200;

 B() {

 System.out.print(“B()”);

 System.out.println(a);

 }

}

运行下面的代码:

new B();

输出的结果是:(A)。

A. A() 100

B() 200

B. A() 200

B() 200

C. B() 200

A() 100

D. B() 200

A() 200

20.方法:

如下方法声明中,错误的是(B )。

A.

public void say()

{ System.out.print(“Hi”); }

B.

public void say()

{ System.out.print(“Hi”); return; }

C.

public int say()

{ System.out.print(“Hi”); return; }

D.

public int say()

{ System.out.print(“Hi”); return 0; }

21.方法:

下述程序的输出结果为 _____8___。

public class Demo {

private static int i = 7;

private static int j = 10;

private static int firstMethod(int i, int j){

 j = Demo.j % i;

 return Demo.i + j;

}

public static void main(String[] args) {

 int result = Demo.firstMethod(3, 10);

 System.out.println(result);

}

}

22.方法:

下面给出的代码片断:

public class Test9 {

 public void setVar(int a, int b, float c) {

 }

}

下面的哪些方法可以在继承该类的子类中声明:(多选)AC

A. private void setVar (int a, float c, int b) { }

B. potected void setVar (int a, int b, float c) { }

C. public int setVar (int a, float c, int b) {return a;}

D. public int setVar (int a, int b, float c) {return a;}

类:

下列类的定义,错误的是()

A. public class Test extends Object{……}
B. final class Operators{……} C. void class Point{……} D.public static class Demo1{……}

方法:

public class Foo {
public void method(String str,int age){}
} 和Foo类中method方法重载的方法是:
A. public int method(String str,int age){}
B. public void method(String s,int year){} C. public void method(int year,String s){}
D. public int method(int year,String s){}

访问控制

在Java语言中,下列说法正确的是:()。 A. Java访问修饰符按照访问范围由低到高的排列顺序是public,default,protected,private
B. private可以用于外部类的声明 C. 一个Java源文件中声明为public的外部类只能有一个 D. protected声明的方法不可以被子类重写

对象:

给出以下代码,请问该程序的运行结果是什么?

1. public class Example{

2. private int i = giveMeJ();

3. private int j = 10;

4. private int giveMeJ(){

5. return j;

6. }

7. public static void main(String args[]){

8. System.out.println((new Example()).i);

9. }

10. }

请选择一个正确答案:

(A) 第8行代码编译错误。

(B) 第2行代码编译错误。

(C) 打印输出:0

(D) 打印输出:10

对象:

在创建对象时必须 ()

A.先声明对象,然后才能使用对象

B.先声明对象,为对象分配内存空间,然后才能使用对象

C.先声明对象,为对象分配内存空间,对对象初始化,然后才能使用对象

D.上述说法都对

Static:

程序中 classDemo 中定义了一个静态变量 sum,分析程序段的输出结果 ( )

class ClassDemo{

public static int sum=1;

public ClassDemo(){

sum=sum+5;

}

}

public class ClassDemoTest{

public static void main(String args[]){

ClassDemo demo1=new ClassDemo();

ClassDemo demo2=new ClassDemo();

System.out.pringln(demo1.sum);

}

}

A.0

B.6

C.11

D.2

下述程序的输出结果为1977-8-16

public class ParentConstructor {

public int year;//0

public int month;//0

public int day;//0

public static final int default_month = 2;

public static final int default_day = 16;

public ParentConstructor(int y, int m, int d) {

year = y; month = m; day = d;

}

public ParentConstructor(int y) {

this(y, default_month, default_day);

}

public ParentConstructor(int y, int m) {

this(y, m, default_day);

}

}

public class ChildConstructor extends ParentConstructor{

public ChildConstructor(int h) {

super(1977, 8);

}

public static void main(String[] args) {

ChildConstructor t = new ChildConstructor(12);

System.out.println(t.year + "-" + t.month + "-" + t.day);

}

}

继承

以下代码运行输出是()

public class Person{

private String name=”Person”;

int age=0;

}

public class Child extends Person{

public String grade;

public static void main(String[] args){

Person p = new Child();

System.out.println(p.name);

}

}

A) 输出:Person

B) 没有输出

C) 编译出错

D) 运行出错

Abstract:

以下描述错误的有()

A) abstract 可以修饰类、接口、方法

B) abstract修饰的类主要用于被继承

C) abstract 可以修饰变量

D) abstract修饰的类,其子类也可以是abstract修饰的

继承

以下程序运行结果是()

public class Test extends Father{

private String name=”test”;

public static void main(String[] args){

Test test = new Test();

System.out.println(test.getName());

}

}

class Father{

private String name=”father”;

public String getName() {

return name;

}

}

A) father

B) test

C) 编译出错

D) 运行出错,无输出

Static

程序是否能正常运行

public class NULL {

public static void haha(){

System.out.println("haha");

}

public static void main(String[] args) {

((NULL)null).haha();

}

}

可以

Static

输出结果为:

class HelloA {

public HelloA() {

System.out.println("HelloA");

}

{ System.out.println("I'm A class"); }

static { System.out.println("static A"); }

}

public class HelloB extends HelloA {

public HelloB() {

System.out.println("HelloB");

}

{ System.out.println("I'm B class"); }

static { System.out.println("static B"); }

public static void main(String[] args) {

new HelloB();

}

}

运行结果是什么?

static A

static B

I'm A class

HelloA

I'm B class

HelloB

Static

1. public class Test {

2. static boolean foo(char c) {

3. System.out.print(c);

4. return true;

5. }

6. public static void main( String[] argv ) {

7. int i =0;

8. for ( foo(‘A’); foo(‘B’)&&(i<2); foo(‘C’)){

9. i++ ;

10. foo(‘D’);

12. }

13. }

14. }

What is the result?

A. ABDCBDCB

B. ABCDABCD

C. Compilation fails.

D. An exception is thrown at runtime.

内部类

public class Outer{

2. public void someOuterMethod() {

3. // Line 3

4. }

5. public class Inner{}

6. public static void main( String[]argv ) {

7. Outer o = new Outer();

8. // Line 8

9. }

10.}

Which instantiates an instance of Inner?

A. new Inner(); // At line 3

B. new Inner(); // At line 8

C. new o.Inner(); // At line 8

D. new Outer.Inner(); // At line 8//new Outer().new Inner()

继承

运行结果为:

class People {

String name;

public People() {

System.out.print(1);

}

public People(String name) {

System.out.print(2);

this.name = name;

}

}

class Child extends People {

People father;

public Child(String name) {

System.out.print(3);

this.name = name;

father = new People(name + ":F");

}

public Child() {

System.out.print(4);

}

}

A312 B 32 C 432 D 132

Super

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

super

class Person{
public Person(){
System.out.println(“this is a Person”);
}
}
public class Teacher extends Person{
private String name=”tom”;
public Teacher(){
System.out.println(“this is a teacher”);
super();
}
public static void main(String[] args){
Teacher teacher = new Teacher();
System.out.println(this.name);
}
}
A) this is a Person
this is a teacher
tom
B) this is a teacher
this is a Person
tom
C) 运行出错 <a name="_GoBack">D)</a> 编译有两处错误

上一篇下一篇

猜你喜欢

热点阅读