1. 程式人生 > >Java基礎練習題一

Java基礎練習題一

以下為java入門的一些練習題,特意總結一下,主要包含Java基礎概念、語言基礎(資料型別、變數、運算子等等)、流程控制(分支結構、迴圈結構)、陣列與字串。

一、 選擇題

1. 以下說法不正確的是( B )
A. Java 是 sun 公司開發的,目前屬於甲骨文公司
B. Java 是一門簡單易學的面向過程語言
C. J2SE 是 Java 平臺標準版
D. Java 之父是James Gosling
2. Java語言具有許多特點,下列選項中反映了Java程式並行機制的特點( B )
A.安全性 B.多執行緒 C.跨平臺 D.可移植
3. 八種基本型別中包括下列哪些( A )


A.int B.public C.String D.void
4. 變數命名規範說法正確的是( B )
A.變數由字母、下劃線、數字、$符號隨意組成;
B.變數不能以數字作為開頭;
C.A和a在java中是同一個變數;
D.不同型別的變數,可以起相同的名字;
5. 運算子優先級別排序正確的是( A )
A.由高向低分別是:算術運算子、關係運算符、邏輯運算子、賦值運算子
B.由高向低分別是:關係運算符、算術運算子、賦值運算子、邏輯運算子
C.由高向低分別是:算術運算子、邏輯運算子、關係運算符、賦值運算子
D.由高向低分別是:關係運算符、賦值運算子、算術運算子、邏輯運算子
6. 下列程式碼輸出結果是( B )

int i = 10;
while ( i > 0 ){
i = i + 1;
if ( i = =10 ){
break;
}
}
A.while迴圈執行10次
B.死迴圈
C.迴圈一次都不執行
D.迴圈執行一次
7. score是一個整數陣列,有五個元素,已經正確初始化並賦值,仔細閱讀下面程式碼,程式執行結果是( B )
temp = score[0];
for (int index = 1;index < 5;index++) {
if (score[index] < temp) {
temp = score[index];
}
}
A.求最大數 B.求最小數
C.找到陣列最後一個元素 D.編譯出錯
8. 在java中語句:37.2%10的運算結果為( A )

A.7.2 B.7 C.3 D. 0.2
9. 下面陣列定義錯誤的是( C )
A. int[] arr ={23,45,65,78,89};
B. int[] arr=new int[10];
C. int[] arr=new int[4]{3,4,5,6};
D. int[][] arr=new int[10][];
10. 已知i為整形變數,關於一元運算 ++i和i++,下列說法正確的是( D )
A.++i運算將出錯
B.在任何情況下執行程式結果都一樣
C. 在任何情況下執行程式結果都不一樣
D. 在任何情況下變數i的值都增1

二、 簡答題

1. 環境變數path和classpath的作用是什麼?如何設定這兩個環境變數?

  • Path:
    安裝完JDK(Java Development Kit,Java開發工具包)之後,可以在安裝目錄下找到兩個子目錄(bin目錄和lib目錄)。bin目錄中包含著Java編譯器等可執行檔案。
    如果要執行執行java命令,必須得執行java命令對應的可執行檔案的路徑,通常有兩種方式:
    在%JAVA_HOME%目錄下執行。
    執行命令的時候,指明路徑%JAVA_HOME%/bin/java
    但是,這樣不是特別方便,這就是為什麼配置環境變數。如果將%JAVA_HOME%/bin/,新增到環境變數PATH中。再執行java命令時(無論在哪個目錄下執行),系統就會從左到右搜尋(這裡的順序很重要,可以利用這個特性覆蓋掉某個舊版本的jdk。)環境變數PATH中執行的目錄,直到找到對應的可執行檔案並執行(找到之後,後面的目錄都會被忽略掉)。如果找不到,提示該命令不存在。這就是PATH環境變數的作用。

  • Classpath:
    指定Java類所在的目錄。當執行java程式的時候,要指定相應的類名.如果缺少這個環境變數,這裡將會報找不到或無法載入主類的錯誤

2. 什麼是平臺無關性?Java語言是怎樣實現平臺無關性的?

  • 平臺無關性是指Java語言可在任何具有JVM的平臺上進行執行。
  • Java程式編寫後,經java編譯器編譯成獨立於機器平臺的位元組碼。位元組碼檔案在任何具有JVM 的平臺上均可執行

3. 什麼是 JDK,什麼是 JRE,什麼是 JVM。以及他們的聯絡與區別?

  • JDK: 顧名思義它是給開發者提供的開發工具箱,是給程式開發者用的。它除了包括完整的JRE(Java Runtime Environment),Java執行環境,還包含了其他供開發者使用的工具包。

  • JRE: 普通使用者而只需要安裝 JRE(Java Runtime Environment)來執行 Java 程式。而程式開發者必須安裝JDK來編譯、除錯程式。

  • JVM: 當我們執行一個程式時,JVM 負責將位元組碼轉換為特定機器程式碼,JVM 提供了記憶體管理/垃圾回收和安全機制等。這種獨立於硬體和作業系統,正是 java 程式可以一次編寫多處執行的原因。

  • 區別與聯絡:
    JDK 用於開發,JRE 用於執行java程式 ;
    JDK 和 JRE 中都包含 JVM ;
    JVM 是 java 程式語言的核心並且具有平臺獨立性。

三.程式設計題

1. 有一分數序列:2/1,3/2,5/3,8/5,13/8,21/13…求出這個數列的前20項之和。

public class Test_1 {

    public static void main(String[] args){
        double n1 = 1;
        double n2 = 1;
        double fraction = n1/n2;
        double Sn = 0;

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

            double t1 = n1;
            double t2 = n2;

            n1 = t1+t2;

            n2 = t1;

            fraction = n1/n2;

            Sn += fraction;

        }
        System.out.print(Sn);
    }
}

2. 編寫一個應用程式,接受使用者輸入的一行字串,判斷該字串是否是迴文數?

第一種方法:

public class Test_2_1 {

    public static void main(String[] args) {
        String s = "";
        int a = 0;
        System.out.println("請輸入一個字串");
        Scanner input = new Scanner(System.in);
        s = input.next();
        for(int i=0;i<s.length()/2;i++){
            if(s.charAt(i)!=s.charAt(s.length()-i-1)){
                a = 1;
            }
        }
        if(a==1){
            System.out.println("此字串不是一個迴文字串");
        } else {
            System.out.println("此字串是一個迴文字串");
        }
    }
}

第二種方法

public class Test_2_2 {

    public static void main(String[] args) {
        String str = "";
        System.out.println("請輸入一個字串");
        Scanner input = new Scanner(System.in);
        str = input.next();
        StringBuffer sb = new StringBuffer(str);
        sb.reverse();// 將Str中的字串倒置

        int count = 0;
        for (int i = 0; i < str.length(); i++) {
            if (str.charAt(i) == sb.charAt(i)) {
                count++;
            }
        }
        if (count == str.length()) {
            System.out.println("此字串是一個迴文字串");
        } else {
            System.out.println("此字串不是一個迴文字串");
        }
    }
}

第三種方法:

public class Test_2_3 {
    public static void main(String[] args) {
        System.out.println("請輸入一個字串");
        Scanner input = new Scanner(System.in);
        String str = input.next();
        StringBuilder sb=new StringBuilder(str);
        sb.reverse();//將str倒置的方法
        String newStr=new String(sb);
        if(str.equals(newStr)){
            System.out.println("此字串是一個迴文字串");
        }else{
            System.out.println("此字串不是一個迴文字串");
        }
    }
}

3. 有1、2、3、4、5五個數字,能組成多少個互不相同且無重複數字的三位數?都是多少?有1、2、3、4、5五個數字,能組成多少個互不相同且無重複數字的三位數?都是多少?

public class Test_3 {

    public static void main(String[] args) {
        int sum = 0;
        for(int i =1;i<6;i++){
             for(int j =1;j<6;j++){
                 for(int k =1;k<6;k++){
                     if ((i != k) &&((i != j) && (j != k))){
                         sum++;
                         System.out.println("組成的三位數:"+i+j+k);
                     }
                 }
             }
        }
        System.out.println("總個數:"+sum);
    }
}

4. 輸入一個字元,是字母則輸入"YES!"否則輸出"NO!"

public class Test_4 {

    public static void main(String[] args) {
        System.out.println("請輸入一個字元");
        Scanner input = new Scanner(System.in);
        String str = input.next();
        char c = str.charAt(0);
        if ((c>=65 && c<=90) || (c>=97 && c<=122)) {
            System.out.println("YES");
        }else{
            System.out.println("NO");
        }
    }
}