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");
}
}
}