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
选择
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
执行下列语句:
int a = 0x9af700; //1001 1010 1111 0111 0000 0000
a <<= 2;
变量a的值为:(B)。
A. 0x26bdc00
B. 0xc6bdc00
C. 0x3fa0000
D. 0x7e02ffff
下列程序 test 类中的变量 c 的最后结果为 (D )
Public class test{
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.编译出错
存在使i + 1 < i的数吗(存在)
0.6332的数据类型是(B)
A float B double C Float D Double
分析下面这段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) 程序无法编译
2.流程控制
如下程序段:
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
给出以下代码,请问该程序的运行结果是什么?
|
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
有以下程序:
|
|
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__。
如下结果选择哪个(B)
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?
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
编程题:
有一对兔子,从出生后第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;
}
}
3.面向对象:
接口:接口是Java面向对象的实现机制之一,以下说法正确的是:(B)
A. Java支持多重继承,一个类可以实现多个接口;
B. Java只支持单重继承,一个类可以实现多个接口;
C. Java只支持单重继承,一个类只可以实现一个接口;
D. Java支持多重继承,但一个类只可以实现一个接口。
接口:
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.
接口:
final class Test1 {}
abstract class Test2{}
interface Test3{}
下面的描述中哪一个是正确的:(C)
A) Test1,Test3可以被实例化;Test2不可以。
B) Test2,Test3可以被实例化;Test1不可以。
C) Test1可以被实例化;Test2,Test3不可以
D) 都不可被实例化。
this:下列说法那些是正确的?(C)
A. 类本身可以使用this表达。
B. 类对象本身可以使用this表达。
C. 使用this()可以在方法内部调用本类的其他方法。
D.在构造方法中使用this()可以使用多次
接口:
请看下列代码:
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 { }
接口:下列那些说法是正确的? (B )
A:定义类时,final和abstract修饰符必须选择一个,不能同时都选。
B:abstract修饰的类,可以没有abstract方法。
C:abstract修饰的类,不能有父类。
D:abstract修饰的类,不能有子类。
E:abstract修饰的类,必须有abstract方法。
F:以上说法都不对。
重写:
以下程序的运行输出结果是________。
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();
}
}
child
继承
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
方法:
如下方法声明中,错误的是( 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; }
方法:
**下述程序的输出结果为 _____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);
}
}
方法:
下面给出的代码片断:
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;}
类:
下列类的定义,错误的是(C)
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方法重载的方法是: (CD)
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语言中,下列说法正确的是:(C)。
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\. }
请选择一个正确答案:C
(A) 第8行代码编译错误。
(B) 第2行代码编译错误。
(C) 打印输出:0
(D) 打印输出:10
对象:
在创建对象时必须 (C)
A.先声明对象,然后才能使用对象
B.先声明对象,为对象分配内存空间,然后才能使用对象
C.先声明对象,为对象分配内存空间,对对象初始化,然后才能使用对象
D.上述说法都对
Static:
程序中 classDemo 中定义了一个静态变量 sum,分析程序段的输出结果 (C )
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___。(C)
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:
以下描述错误的有(C)
A) abstract 可以修饰类、接口、方法
B) abstract修饰的类主要用于被继承
C) abstract 可以修饰变量
D) abstract修饰的类,其子类也可以是abstract修饰的
继承
以下程序运行结果是(A)
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)
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)
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()
继承
运行结果为:(D)
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)
A) 在子类构造方法中使用super()显示调用父类的构造方法,super()必须写在子类构造方法的第一行,否则编译不通过
B) super()和this()不一定要放在构造方法内第一行
C) this()和super()可以同时出现在一个构造函数中
D) this()和super()可以在static环境中使用,包括static方法和static语句块
super
(D)
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) 运行出错
D)编译有两处错误
4.数组
运行下列代码:
int[] oneArr = { 2, 11, 26, 27, 37, 44, 48, 60 };
int[] twoArr = { 19, 35, 49, 55, 58, 75, 83, 84, 91, 93 };
int[] threeArr = new int[oneArr.length + twoArr.length];
int p = 0, q = 0;
while (p < oneArr.length && q < twoArr.length) {
threeArr[p + q] =
oneArr[p] < twoArr[q] ? oneArr[p++] : twoArr[q++];
}
if (p < oneArr.length) {
System.arraycopy(oneArr, p, threeArr, p + q, oneArr.length – p);
}
else if (q < twoArr.length) {
System.arraycopy(twoArr, q, threeArr, p + q, twoArr.length – q);
}
System.out.println(Arrays.toString(threeArr));
输出的结果是:(B)。
A. [2,11,26,27,37,44,48,60,19,35,49,55,58,75,83,84,91,93];
B. [2,11,19,26,27,35,37,44,48,49,55,58,60,75,83,84,91,93];
C. [19,35,49,55,58,75,83,84,91,93,2,11,26,27,37,44,48,60];
D. [2,19,11,35,26,49,27,55,37,58,44,75,48,83,60,84,91,93];
已经定义了int类型的数组变量m,下列哪个为m进行初始化的语句是正确的?(B)
A.m=[1,2,3,4];
B.m=new int[]{1,2,3,4};
C.m=new int[4]{1,2,3,4};
D.m=new int(1,2,3,4)
String foo="blue";
boolean[] bar=new boolean[1];
if(bar[0]){
foo="green";
}
what is the value of foo? (C)
A."" B.null C.blue D.green
5.异常
Error和Exception的联系
继承结构:Error和Exception都是继承于Throwable,RuntimeException继承自Exception。
Error和RuntimeException及其子类称为未检查异常(Unchecked exception),其它异常成为受检查异常(Checked Exception)。
Error和Exception的区别
Error类一般是指与虚拟机相关的问题,如系统崩溃,虚拟机错误,内存空间不足,方法调用栈溢出等。如java.lang.StackOverFlowError和Java.lang.OutOfMemoryError。对于这类错误,Java编译器不去检查他们。对于这类错误的导致的应用程序中断,仅靠程序本身无法恢复和预防,遇到这样的错误,建议让程序终止。
Exception类表示程序可以处理的异常,可以捕获且可能恢复。遇到这类异常,应该尽可能处理异常,使程序恢复运行,而不应该随意终止异常。
运行时异常和受检查的异常
Exception又分为运行时异常(Runtime Exception)和受检查的异常(Checked Exception )。
RuntimeException:其特点是Java编译器不去检查它,也就是说,当程序中可能出现这类异常时,即使没有用try……catch捕获,也没有用throws抛出,还是会编译通过,如除数为零的ArithmeticException、错误的类型转换、数组越界访问和试图访问空指针等。处理RuntimeException的原则是:如果出现RuntimeException,那么一定是程序员的错误。
受检查的异常(IOException等):这类异常如果没有try……catch也没有throws抛出,编译是通不过的。这类异常一般是外部错误,例如文件找不到、试图从文件尾后读取数据等,这并不是程序本身的错误,而是在应用环境中出现的外部错误。
throw 和 throws两个关键字有什么不同
throw 是用来抛出任意异常的,你可以抛出任意 Throwable,包括自定义的异常类对象;throws总是出现在一个函数头中,用来标明该成员函数可能抛出的各种异常。如果方法抛出了异常,那么调用这个方法的时候就需要处理这个异常。
已经定义数组:int[] m=new int[4], 当使用语句m[10]=10; 时可以捕获的异常类型是?
A. java.lang.ArrayIndexOutOfBoundException
B. java.lang.NullPointerException
C. java.io.IOException
D. java.sql.SQLException
这个方法的返回值是_ return 3_______。(3)
public int count() {
try{
return 5 / 0;
} catch(Exception e){
return 2*3;
} finally {
return 3;
}
}