Java 复习题
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> 编译有两处错误