- 簡單題(每題5分,共計50分)
- 簡述Java語言跨平台的原理
Java跨平台的特性,也就是同一份字節碼文件可以在不同的系統上執行,
由不同系統中的Java虛擬機負責翻譯成對應的機器指令。
- 寫出以下名詞的概念和各自作用
jre - Java運行時環境信息,只要運行Java編寫的應用程序就需要安裝。
jdk - Java開發工具包,只要編寫Java應用程序就需要安裝,該工具包中包含了jre。
jvm - Java虛擬機,將字節碼文件解釋為機器指令。
javac.exe - Java編譯器,用於將高級源代碼文件轉換為字節碼文件。
java.exe - Java解釋執行器,用於將字節碼文件通過Java虛擬機解釋並執行起來。
- 簡述Java中變量的基本概念和定義形式
變量就是指在內存中申請的一塊存儲區域,用來存儲各種類型的數據。根據所存儲的數據大小不同,有各種不同數據類型的變量。具體的形式為:
數據類型 變量名 = 初始值; -其中=初始值可以省略,分號不可以省略。
- 變量的主要分類
按所屬的數據類型划分:
基本數據類型變量
引用數據類型變量
按被聲明的位置划分:
局部變量:方法或語句塊內部定義的變量
成員變量:方法外部、類的內部定義的變量
- 標識符的命名規則
(1)由字母、數字、下划線以及美元$組成,數字不能開頭。
(2)標識符長度沒有明確的限定,但是不要太長。
(3)不能與java中的關鍵字同名,如:public class int ...
(4)區分大小寫。
(5)可以是漢字,但是不推薦使用。
- 簡述Java語言中的所有基本數據類型以及每種數據類型占用內存空間的大小
描述整數的數據類型主要有:byte/short/int/long,分別占用1個/2個/4個/8個字節大小。
描述小數的數據類型主要有:float/double,分別占用4個/8個字節大小。
描述真假的數據類型有:boolean,占用1個字節大小。
描述字符的數據類型有:char,占用2個字節。
- 簡述二進制和十進制,十進制和二進制之間的轉換方法
(1)非負十進制轉換為二進制
除2取余法,使用十進制整數不斷地除以2取出余數,當商為0時反向組織所有二進制數字。
拆分法:就是將十進制整數拆分為多個2的次方組成的和。
(2)非負二進制轉換為十進制
采用加權法,也就是將每個數字和當前的權重相乘,再加起來即可。
(3)負二進制轉換為十進制
將二進制的每位數字按位取反,再加1,轉換為十進制后再添加負號。
(4)負十進制轉換為二進制
將十進制整數的絕對值拆分為二進制,再按位取反,最后加1。
- 請寫出if語句的三種語法格式
(1)if(條件表達式) {語句塊;}
(2)if(條件表達式) {語句塊1;}
else {語句塊2;}
(3)if(條件表達式1) {語句塊1;}
else if(條件表達式2) {語句塊2; }
... ...
else {語句塊3;}
- 請寫出聲明定義數組的方式(至少兩種)
元素類型[] 變量名 = new 元素類型[元素的個數];
元素類型[] 變量名 = {元素1,元素2...};
元素類型[] 變量名 = new 元素類型[]{元素1,元素2...}
- 述單個字節表示的數值范圍並寫出推導過程。
非負數的表示范圍是:0000 0000 ~ 0111 1111 => 0 ~ 127 => 0 ~ 2^7-1
0111 1111 => 64 + 32 + 16 + 8 + 4 + 2 + 1 => 127
負數的表示范圍是:1000 0000 ~ 1111 1111 => -128 ~ -1 => -2^7 ~ -2^0
1000 0000 => 0111 1111 => 1000 0000 => 128 => -128
1111 1111 => 0000 0000 => 0000 0001 => 1 => -1
綜上所述:
1個字節所能表示的十進制整數范圍是:-128 ~ 127,也就是-2^7 ~ 2^7-1。
- 編程題(每題10分,共計50分)
- 使用if-else if-else分支結構根據用戶輸入的成績判斷所在的等級並打印出來。
[90 ~ 100] 打印等級A
[80 ~ 89] 打印等級B
[70 ~ 79] 打印等級C
[60 ~ 69] 打印等級D
[0 ~ 59] 打印等級E
import java.util.Scanner;
public class text {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("請輸入查詢成績: ");
int aa = sc.nextInt();
if(aa >= 90 && aa<=100) {
System.out.println("A");
}
if(aa>=80&&aa<=89) {
System.out.println("B");
}
if(aa>=70&&aa<=79) {
System.out.println("C");
}
if(aa>=60&&aa<=69) {
System.out.println("D");
}
if(aa>=0&&aa<=59) {
System.out.println("E");
}
}
}
- 提示用戶輸入一個正整數並逆序輸出。
import java.util.Scanner;
public class text {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("請輸入整數: ");
int bb = sc.nextInt();
int num=0;
while (bb!=0) {
num = bb%10+num*10;
bb = bb/10;
}
System.out.println("倒序輸出:"+num);
}
}
3.編程實現1 - 100之間隨機數的生成,給用戶十次輸入機會來猜出生成的數字,如果輸入數字等於隨機數就打印“恭喜你猜對了”,並結束循環;如果輸入數字小於隨機數就打印“太小了,再大一點吧”;如果輸入數字大於隨機數就打印“太大了,再小一點吧”;如果十次機會用完也沒有猜對就打印“太笨了,下次再來吧”。
import java.util.Random;
import java.util.Scanner;
public class text {
public static void main(String[] args) {
int number = (int)(Math.random()*100);
Scanner sc = new Scanner(System.in);
int a=0;
do {
a++;
if(a>10) {
System.out.println("太笨了,下次再來吧");
break;
}
System.out.println("請輸入100以內整數: ");
int bb = sc.nextInt();
if(bb<number) {
System.out.println("太小了,再大一點吧");
}else if(bb>number) {
System.out.println("太大了,再小一點吧");
}else{
System.out.println("恭喜你猜對了");
break;
}
System.out.println("還剩"+(10-a)+"次機會");
}while(true);
}
}
4.使用雙重循環打印2~200之間的所有素數。
public class text {
public static void main(String[] args) {
for (int i = 2; i < 200; i++) {
boolean a = true;
for (int j = 3; j < i; j++) {
if(i%j==0) {
a = false;
break;
}
}
if(a) {
System.out.println(i);
}
}
}
}
- 已知一個int數組arr = {12,4,22,11,24,9},找出最大值和最小值並打印。
public class text {
public static void main(String[] args) {
int []arr ={12,4,22,11,24,9};
int min =0;
int max =0;
min=max=arr[0];
for(int i=0;i<arr.length;i++) {
if(arr[i]>max)
max=arr[i];
if(arr[i]<min)
min=arr[i];
}
System.out.println("數組的最大值是:"+max);
System.out.println("數組的最小值是:"+min);
}
}