一.選擇和填空 (不定項哦!)
1,如下是一份文件名為Test2.java的源文件,請問,編譯該文件之后會生成幾份字節碼文件
class Test{
class Inner{}
static class hh{}
}
class Test1{
interface IInterface{}
}
enum Gender{
}
A 1 B 3 C 5 D 6
解析: D,一個java文件中的每個類\接口\枚舉都會編譯成class文件,如果class前加了public修飾,那么必須與文件名相同

2,下列代碼C.java
public class Hello{
/**
* 只是一個測試類
* /**
* 您好,java
* **/
* // 請仔細找茬喔,親!
**/
static public void main(String[] a){
System.out.println('您好,java');
}
}
請標出上面代碼錯誤的地方________________
解析:
/**
錯誤1. 如果有public修飾類名應與文件名一致
錯誤2. 應該 public static void
錯誤3. 參數 應該為 args
錯誤4. 打印輸出的字符串 應該用雙引號
*/
3,下列哪些是java的關鍵字
A、default //java中的權限修飾符
B、loop //
C、do // do while結構
D、Class // 只是一個類名稱
E、null //空值
F、java //
G、String //只是一個類名稱
H、false // 布爾值
解析: A、C、E、H
4,下列哪些代碼符合java規范(編譯不會報錯):
A、public static void main(){}
B、public void method(){
private Integer num; //局部變量不能添加權限修飾符
}
C、public Method(){
int num; // 未初始化不能使用
System.out.println(num);
}
D、private $5person=5; //沒有指定變量類型
E、public int 5i = 100; //變量名稱不能以數字開頭
解析: A
5,下列哪些變量的聲明是正確的?
A、byte i=128; //-128~127
B、int i = 0220; // 相當於 144
C、boolean flag = Boolean.TRUE; //正確
D、int number = 'A'; // ascii 碼 65
E、float y = 0x123; // java中默認的是10進制數據,在數字前加0可以表示8進制的,加0x則可以表示16進制的
F、long a = 0x123l; // java中默認的是10進制數據,在數字前加0可以表示8進制的,加0x則可以表示16進制的
解析:C
6,下列代碼運行結果是:
public static void main(String[] args){
boolean flag=false;
int i=0;
if(flag||i>100){
System.out.println("step1");
}else if(!!flag && i/0>8){
System.out.println("step2");
}else{
System.out.println("step3");
}
}
A、運行時報錯
B、打印step1
C、打印step2
D、打印step3
E、編譯時報錯
解析: D
7,下面代碼的運行結果是:
public static void main(String[] args){
int i=1;
int j=++i;
if(j++>3){
++j;
}else{
i++;
}
int k=++j>4?j++:i++;
System.out.println(i);
}
A、2
B、3
C、4
D、運行時報錯
解析: C
8、下面的程序執行結果是:
public static void main(String[] args) {
int i = 0;
for (i++; i++ < 10; i++);
System.out.println(++i);
}
A、輸出0
B、輸出13
C、輸出1
D、輸出12
解析: B
9,下面的程序輸出
public static void main(String[] args){
for(int i=0;i<3;i++){
switch(i){
case 1:
System.out.println("a");
break;
case 0:
System.out.println("b");
break;
default:
System.out.println("c");
case 2:
System.out.println("d");
}
}
}
請寫出執行的結果______________
解析:b a d
10,下面哪些方法是void show(int a,char b,boolean c){}方法的重載?
A、void show(char b, int a, boolean c){} //是
B、int show(boolean a,char c ,int b){} //是
C、void show(int a,char b,double c){} //是
D、void show(int x,char y,boolean z){} //不是 參數類型 一樣
E、int show(int x,double y){} // 是
F、int show(int x, char y,boolean z){} //不 是
解析: A B C E 重載的時候,方法名要一樣,但是參數類型和個數不一樣,返回值類型可以相同也可以不相同。無法以返回型別作為重載函數的區分標准。
11,下面哪個聲明數組的方式是正確的?
A、int i[]=null;
B、int[] j=new Integer[](); //編譯報錯
C、int[] k=new int[]{1,2,3};
D、int[] L={1,2,3};
E、int[] m={};
F、String[] s=new String[]{"1",'2',"3"}; //不能放 '2' 類型的數據
G、String[] s=new String[3];
H、class A{}
public class B{
private A[] ={new A(),new A(),new A()}; // 卻少變量名稱 private A[] arr ={new A(),new A(),new A()};
}
I、class A{}
public class B{
private A[] =new A[]{new A(),new A(),new A()}; //缺少變量名稱
}
12,下面哪一項說法是正確的?
A.在一個子類中一個方法不是public的就不能被重載 //錯誤
B.覆蓋一個方法只需要滿足相同的方法名和參數類型就可以了 //對
C.覆蓋一個方法必須需要相同的方法名參數和返回類型 //錯
D.一個覆蓋的方法必須有相同的方法名、參數名和參數類型 //錯
13,下面代碼的輸出結果是多少?___________
class A {
public static void prt() {
System.out.println("1");
}
public A() {
System.out.println("A");
}
}
public class B extends A {
public static void prt() {
System.out.println("2");
}
public B() {
System.out.println("B");
}
public static void main(String[] args) {
A a = new B();
a = new A();
}
}
解析: A B A
14,下面代碼的輸出結果是多少?__________
class Parent {
protected String value = "123";
public String getValue() {
return value;
}
}
public class Child extends Parent {
protected String value = "456";
public static void main(String[] args){
Child c=new Child();
System.out.println(c.getValue());
}
}
解析:123
15,表達式(0 > 0 || 0/0 == 0)結果為_____________;
解析: Exception in thread "main" java.lang.ArithmeticException: / by zero
二,主觀題
1,請簡要寫出搭建java開發環境的步驟和java跨平台原理。
2,int和Integer都可以代表一個整數,這兩者在使用上有什么區別嗎?為什么JDK中要設計兩個數據類型來表示同一種數據?
3,談談你對面向對象特征的理解並舉例說明。
4,談談你對抽象類和接口的理解。
5,請說說方法覆寫和方法重載的區別
6,面向對象的基本特征,並簡單述之
7,多態的作用
