18luck网站

18luck网站電子設計 | 18luck网站Rss 2.0 會員中心 會員注冊
搜索: 您現在的位置: 18luck网站 >> 編程學習 >> Java >> 正文

JAVA基礎語法,JAVA入門

作者:佚名    文章來源:網絡整理    點擊數:    更新時間:2025/2/5

前言

本文是前三篇文章的整合。

1. Java概述

1.1 Java語言背景介紹(了解)

語言:人與(yu) 人交流溝通的表達方式

計算機語言:人與(yu) 計算機之間進行信息交流溝通的一種特殊語言

Java語言是美國Sun公司(Stanford University Network)在1995年推出的計算機語言

Java之父:詹姆斯·高斯林(James Gosling)

2009年,Sun公司被甲骨文公司收購,所以我們(men) 現在訪問oracle官網即可:

java語言的三個(ge) 版本:

JavaSE: Java 語言的(標準版),用於(yu) 桌麵應用的開發,是其他兩(liang) 個(ge) 版本的基礎

JavaME: Java 語言的(小型版),用於(yu) 嵌入式消費類電子設備

JavaEE: Java 語言的(企業(ye) 版),用於(yu) Web 方向的網站開發

1.2 Java語言跨平台原理(理解)

Java程序並非是直接運行的,Java編譯器將Java源程序編譯成與(yu) 平台無關(guan) 的字節碼文件(class文件),然後由Java虛擬機(JVM)對字節碼文件解釋執行。所以在不同的操作係統下,隻需安裝不同的Java虛擬機即可實現java程序的跨平台。

1.3 JRE和JDK(記憶)

JVM(Java Virtual Machine),Java虛擬機

JRE(Java Runtime Environment),Java運行環境,包含了JVM和Java的核心類庫(Java API)

JDK(Java Development Kit)稱為(wei) Java開發工具,包含了JRE和開發工具

 

總結:我們(men) 隻需安裝JDK即可,它包含了java的運行環境和虛擬機。

1.4 JDK的下載和安裝(應用)
1.4.1 下載

通過官方網站獲取JDK

注意:針對不同的操作係統,需要下載對應版本的JDK。

1.4.2 安裝

傻瓜式安裝,下一步即可。但默認的安裝路徑是在C:\Program Files下,為(wei) 方便統一管理建議修改安裝路徑,將與(yu) 開發相關(guan) 的軟件都安裝到一個(ge) 目錄下,例如:E:\develop。

注意:安裝路徑不要包含中文或者空格等特殊字符(使用純英文目錄)。

1.4.3 JDK的安裝目錄介紹
目錄名稱 說明
bin 該路徑下存放了JDK的各種工具命令。javac和java就放在這個目錄。
conf 該路徑下存放了JDK的相關配置文件。
include 該路徑下存放了一些平台特定的頭文件。
jmods 該路徑下存放了JDK的各種模塊。
legal 該路徑下存放了JDK各模塊的授權文檔。
lib 該路徑下存放了JDK工具的一些補充JAR包。

2. 第一個演示程序

2.1 常用DOS命令(應用)

在接觸集成開發環境之前,我們(men) 需要使用命令行窗口對java程序進行編譯和運行,所以需要知道一些常用DOS命令。

1、打開命令行窗口的方式:win + r打開運行窗口,輸入cmd,回車。

 

2、常用命令及其作用

操作 說明
盤符名稱: 盤符切換。E:回車,表示切換到E盤。
dir 查看當前路徑下的內容。
cd 目錄 進入單級目錄。cd wedu
cd .. 回退到上一級目錄。
cd 目錄1\目錄2... 進入多級目錄。cd wedu\JavaSE
cd \ 回退到盤符目錄。
cls 清屏。
exit 退出命令提示符窗口。
2.2 Path環境變量的配置(應用)
2.2.1 為什麽配置環境變量

開發Java程序,需要使用JDK提供的開發工具(比如javac.exe、java.exe等命令),而這些工具在JDK的安裝目錄的bin目錄下,如果不配置環境變量,那麽(me) 這些命令隻可以在該目錄下執行。我們(men) 不可能把所有的java文件都放到JDK的bin目錄下,所以配置環境變量的作用就是可以使bin目錄下的java相關(guan) 命令可以在任意目錄下使用。

2.3 HelloWorld案例(應用)

HelloWorld案例是指在計算機屏幕上輸出“HelloWorld”這行文字。

各種計算機語言都習(xi) 慣使用該案例作為(wei) 第一個(ge) 演示案例。

2.3.1 Java程序開發運行流程

開發Java程序,需要三個(ge) 步驟:編寫(xie) 程序,編譯程序,運行程序。

2.3.2 HelloWorld案例的編寫

1、新建文本文檔文件,修改名稱為(wei) HelloWorld.java。

2、用記事本打開HelloWorld.java文件,輸寫(xie) 程序內(nei) 容。

public class HelloWorld { public static void main(String[] args) { System.out.println("HelloWorld"); } }

2.3.3 HelloWorld案例的編譯和運行

存文件,打開命令行窗口,將目錄切換至java文件所在目錄,編譯java文件生成class文件,運行class文件。

編譯:javac 文件名.java

範例:javac HelloWorld.java

執行:java 類名

範例:java HelloWorld

 

 

2.4 HelloWorld案例詳解(理解)

 

2.5 HelloWorld案例常見問題(理解)
2.5.1 BUG

在電腦係統或程序中,隱藏著的一些未被發現的缺陷或問題統稱為(wei) bug(漏洞)。

2.5.2 BUG的解決

1、具備識別BUG的能力:多看

2、具備分析BUG的能力:多思考,多查資料

3、具備解決(jue) BUG的能力:多嚐試,多總結

2.5.3 HelloWorld案例常見問題

1、非法字符問題。Java中的符號都是英文格式的。

2、大小寫(xie) 問題。Java語言對大小寫(xie) 敏感(區分大小寫(xie) )。

3、在係統中顯示文件的擴展名,避免出現HelloWorld.java.txt文件。

4、編譯命令後的java文件名需要帶文件後綴.java

5、運行命令後的class文件名(類名)不帶文件後綴

2.6 Notepad++軟件的安裝和使用(應用)
2.6.1 什麽要使用Notepad++軟件

Notepad++功能比windows中的自帶記事本功能強大,除了可以用來製作一般的純文字說明文件,也十分適合編寫(xie) 計算機程序代碼。Notepad++有行號,能夠快速定位問題位置,還有語法高亮度顯示、代碼折疊等功能。而且它是免費的。

2.6.2 Notepad++軟件安裝

安裝:傻瓜式安裝,一直下一步即可。建議也安裝到統一的開發軟件目錄下,比如E:\develop。

2.6.3Notepad++軟件配置

安裝完畢之後,為(wei) 了使用方便,做一個(ge) 簡單的配置:修改默認語言和編碼。

3. java基礎語法

3.1 注釋(理解)

注釋是對代碼的解釋和說明文字,可以提高程序的可讀性,因此在程序中添加必要的注釋文字十分重要。Java中的注釋分為(wei) 三種:

單行注釋。單行注釋的格式是使用//,從(cong) //開始至本行結尾的文字將作為(wei) 注釋文字。

// 這是單行注釋文字

多行注釋。多行注釋的格式是使用/* 和 */將一段較長的注釋括起來。

/* 這是多行注釋文字 這是多行注釋文字 這是多行注釋文字 */ 注意:多行注釋不能嵌套使用。

文檔注釋。文檔注釋以/**開始,以*/結束。

3.2 關鍵字(理解)

關(guan) 鍵字是指被java語言賦予了特殊含義(yi) 的單詞。

關(guan) 鍵字的特點:

關(guan) 鍵字的字母全部小寫(xie) 。

常用的代碼編輯器對關(guan) 鍵字都有高亮顯示,比如現在我們(men) 能看到的public、class、static等。

3.3 常量(應用)

常量:在程序運行過程中,其值不可以發生改變的量。

Java中的常量分類:

字符串常量 用雙引號括起來的多個(ge) 字符(可以包含0個(ge) 、一個(ge) 或多個(ge) ),例如"a"、"abc"、"中國"等

整數常量 整數,例如:-10、0、88等

小數常量 小數,例如:-5.5、1.0、88.88等

字符常量 用單引號括起來的一個(ge) 字符,例如:'a'、'5'、'B'、'中'等

布爾常量 布爾值,表示真假,隻有兩(liang) 個(ge) 值true和false

空常量 一個(ge) 特殊的值,空值,值為(wei) null

除空常量外,其他常量均可使用輸出語句直接輸出。

public class Demo { public static void main(String[] args) { System.out.println(10); // 輸出一個(ge) 整數 System.out.println(5.5); // 輸出一個(ge) 小數 System.out.println('a'); // 輸出一個(ge) 字符 System.out.println(true); // 輸出boolean值true System.out.println("歡迎來到中科文峰"); // 輸出字符串 } }

3.4 變量的介紹(理解)

變量的定義(yi) 格式:

數據類型 變量名 = 數據值;

數據類型:為(wei) 空間中存儲(chu) 的數據加入類型限製。整數?小數?

變量名:自己要為(wei) 空間起的名字,沒有難度

數據值: 空間中要存儲(chu) 的數值,沒有難度

3.5 數據類型(應用)
3.5.1 計算機存儲單元

我們(men) 知道計算機是可以用來存儲(chu) 數據的,但是無論是內(nei) 存還是硬盤,計算機存儲(chu) 設備的最小信息單元叫“位(bit)”,我們(men) 又稱之為(wei) “比特位”,通常用小寫(xie) 的字母”b”表示。而計算機中最基本的存儲(chu) 單元叫“字節(byte)”,

通常用大寫(xie) 字母”B”表示,字節是由連續的8個(ge) 位組成。

除了字節外還有一些常用的存儲(chu) 單位,其換算單位如下:

1B(字節) = 8bit

1KB = 1024B

1MB = 1024KB

1GB = 1024MB

1TB = 1024GB

3.5.2 Java中的數據類型

Java是一個(ge) 強類型語言,Java中的數據必須明確數據類型。在Java中的數據類型包括基本數據類型和引用數據類型兩(liang) 種。

Java中的基本數據類型:

數據類型 關鍵字 內存占用 取值範圍
整數類型 byte 1 -128~127
short 2 -32768~32767
int(默認) 4 -2的31次方到2的31次方-1
long 8 -2的63次方到2的63次方-1
浮點類型 float 4 負數:-3.402823E+38到-1.401298E-45 正數: 1.401298E-45到3.402823E+38
double(默認) 8 負數:-1.797693E+308到-4.9000000E-324 正數:4.9000000E-324 到1.797693E+308
字符類型 char 2 0-65535
布爾類型 boolean 1 true,false

說明:

e+38表示是乘以10的38次方,同樣,e-45表示乘以10的負45次方。

在java中整數默認是int類型,浮點數默認是double類型。

3.6 變量(應用)
3.6.1 變量的定義

變量:在程序運行過程中,其值可以發生改變的量。

從(cong) 本質上講,變量是內(nei) 存中的一小塊區域,其值可以在一定範圍內(nei) 變化。

變量的定義(yi) 格式:

數據類型 變量名 = 初始化值; // 聲明變量並賦值 int age = 18; System.out.println(age);

或者(擴展)

// 先聲明,後賦值(使用前賦值即可) 數據類型 變量名; 變量名 = 初始化值; double money; money = 55.5; System.out.println(money);

還可以(擴展)

在同一行定義(yi) 多個(ge) 同一種數據類型的變量,中間使用逗號隔開。但不建議使用這種方式,降低程序的可讀性。

int a = 10, b = 20; // 定義(yi) int類型的變量a和b,中間使用逗號隔開 System.out.println(a); System.out.println(b); ​ int c,d; // 聲明int類型的變量c和d,中間使用逗號隔開 c = 30; d = 40; System.out.println(c); System.out.println(d);

3.6.2 變量的修改
int a = 10;
a = 30;  //修改變量的值
System.out.println(a);

變量前麵不加數據類型時,表示修改已存在的變量的值。

3.7 變量的注意事項(理解)
  1. 在同一對花括號中,變量名不能重複。

  2. 變量在使用之前,必須初始化(賦值)。

  3. 定義(yi) long類型的變量時,需要在整數的後麵加L(大小寫(xie) 均可,建議大寫(xie) )。因為(wei) 整數默認是int類型,整數太大可能超出int範圍。

  4. 定義(yi) float類型的變量時,需要在小數的後麵加F(大小寫(xie) 均可,建議大寫(xie) )。因為(wei) 浮點數的默認類型是double, double的取值範圍是大於(yu) float的,類型不兼容。

3.8 鍵盤錄入(理解)

我們(men) 可以通過 Scanner 類來獲取用戶的輸入。使用步驟如下:

1、導包。Scanner 類在java.util包下,所以需要將該類導入。導包的語句需要定義(yi) 在類的上麵。

import java.util.Scanner;

2、創建Scanner對象。

Scanner sc = new Scanner(System.in);// 創建Scanner對象,sc表示變量名,其他均不可變

3、接收數據

int i = sc.nextInt(); // 表示將鍵盤錄入的值作為(wei) int數返回。

示例:

import java.util.Scanner; public class ScannerDemo { public static void main(String[] args) { //創建對象 Scanner sc = new Scanner(System.in); //接收數據 int a = sc.nextInt(); //輸出數據 System.out.println(a); } }

3.9 標識符(理解)

標識符是用戶編程時使用的名字,用於(yu) 給類、方法、變量、常量等命名。

Java中標識符的組成規則:

由字母、數字、下劃線“_”、美元符號“$”組成,第一個(ge) 字符不能是數字。

不能使用java中的關(guan) 鍵字作為(wei) 標識符。

標識符對大小寫(xie) 敏感(區分大小寫(xie) )。

Java中標識符的命名約定:

小駝峰式命名:變量名、方法名

首字母小寫(xie) ,從(cong) 第二個(ge) 單詞開始每個(ge) 單詞的首字母大寫(xie) 。

大駝峰式命名:類名

每個(ge) 單詞的首字母都大寫(xie) 。

另外,標識符的命名最好可以做到見名知意

例如:username、studentNumber等。

4 類型轉換

在Java中,一些數據類型之間是可以相互轉換的。分為(wei) 兩(liang) 種情況:自動類型轉換和強製類型轉換。

4.1 隱式轉換(理解)

把一個(ge) 表示數據範圍小的數值或者變量賦值給另一個(ge) 表示數據範圍大的變量。這種轉換方式是自動的,直接書(shu) 寫(xie) 即可。例如:

double num = 10; // 將int類型的10直接賦值給double類型 System.out.println(num); // 輸出10.0

類型從(cong) 小到大關(guan) 係圖:

 

說明:

  1. 整數默認是int類型,byte、short和char類型數據參與(yu) 運算均會(hui) 自動轉換為(wei) int類型。

byte b1 = 10; byte b2 = 20; byte b3 = b1 + b2; // 第三行代碼會(hui) 報錯,b1和b2會(hui) 自動轉換為(wei) int類型,計算結果為(wei) int,int賦值給byte需要強製類型轉換。 // 修改為(wei) : int num = b1 + b2; // 或者: byte b3 = (byte) (b1 + b2);

2. boolean類型不能與(yu) 其他基本數據類型相互轉換。

4.2 強製轉換(理解)

把一個(ge) 表示數據範圍大的數值或者變量賦值給另一個(ge) 表示數據範圍小的變量。

強製類型轉換格式:目標數據類型 變量名 = (目標數據類型)值或者變量;

例如:

double num1 = 5.5; int num2 = (int) num1; // 將double類型的num1強製轉換為(wei) int類型 System.out.println(num2); // 輸出5(小數位直接舍棄)

4.3 類型轉換案例(理解)

案例代碼:

byte a = 3; byte b = 4; byte c = a + b; //錯誤。因為(wei) 兩(liang) 個(ge) byte變量相加,會(hui) 先提升為(wei) int類型 byte d = 3 + 4; //正確。常量優(you) 化機製

常量優(you) 化機製:

在編譯時,整數常量的計算會(hui) 直接算出結果,並且會(hui) 自動判斷該結果是否在byte取值範圍內(nei) ,

在:編譯通過

不在:編譯失敗

5. 運算符

5.1 算術運算符
5.1.1 運算符和表達式(了解)

運算符:對常量或者變量進行操作的符號

表達式:用運算符把常量或者變量連接起來符合java語法的式子就可以稱為(wei) 表達式。

不同運算符連接的表達式體(ti) 現的是不同類型的表達式。

舉(ju) 例說明:

int a = 10; int b = 20; int c = a + b;

+:是運算符,並且是算術運算符。

a + b:是表達式,由於(yu) +是算術運算符,所以這個(ge) 表達式叫算術表達式。

5.1.2 算術運算符(應用)
符號 作用 說明
+ 參看小學一年級
- 參看小學一年級
* 參看小學二年級,與“×”相同
/ 參看小學二年級,與“÷”相同
% 取餘 獲取的是兩個數據做除法的餘數

注意:

  1. /和%的區別:兩(liang) 個(ge) 數據做除法,/取結果的商,%取結果的餘(yu) 數。

  2. 整數操作隻能得到整數,要想得到小數,必須有浮點數參與(yu) 運算。

int a = 10; int b = 3; System.out.println(a / b); // 輸出結果3 System.out.println(a % b); // 輸出結果1

5.1.3 字符的“+”操作(理解)

char類型參與(yu) 算術運算,使用的是計算機底層對應的十進製數值。需要我們(men) 記住三個(ge) 字符對應的數值:

'a' -- 97 a-z是連續的,所以'b'對應的數值是98,'c'是99,依次遞加

'A' -- 65 A-Z是連續的,所以'B'對應的數值是66,'C'是67,依次遞加

'0' -- 48 0-9是連續的,所以'1'對應的數值是49,'2'是50,依次遞加

// 可以通過使用字符與(yu) 整數做算術運算,得出字符對應的數值是多少 char ch1 = 'a'; System.out.println(ch1 + 1); // 輸出98,97 + 1 = 98 ​ char ch2 = 'A'; System.out.println(ch2 + 1); // 輸出66,65 + 1 = 66 ​ char ch3 = '0'; System.out.println(ch3 + 1); // 輸出49,48 + 1 = 49

算術表達式中包含不同的基本數據類型的值的時候,整個(ge) 算術表達式的類型會(hui) 自動進行提升。

提升規則:

byte類型,short類型和char類型將被提升到int類型,不管是否有其他類型參與(yu) 運算。

整個(ge) 表達式的類型自動提升到與(yu) 表達式中最高等級的操作數相同的類型

等級順序:byte,short,char --> int --> long --> float --> double

例如:

byte b1 = 10; byte b2 = 20; // byte b3 = b1 + b2; // 該行報錯,因為(wei) byte類型參與(yu) 算術運算會(hui) 自動提示為(wei) int,int賦值給byte可能損失精度 int i3 = b1 + b2; // 應該使用int接收 byte b3 = (byte) (b1 + b2); // 或者將結果強製轉換為(wei) byte類型 ------------------------------- int num1 = 10; double num2 = 20.0; double num3 = num1 + num2; // 使用double接收,因為(wei) num1會(hui) 自動提升為(wei) double類型

5.1.4 字符串的“+”操作(理解)

當“+”操作中出現字符串時,這個(ge) ”+”是字符串連接符,而不是算術運算。

System.out.println("wedu"+ 666); // 輸出:wedu666

在”+”操作中,如果出現了字符串,就是連接運算符,否則就是算術運算。當連續進行“+”操作時,從(cong) 左到右逐個(ge) 執行。

System.out.println(1 + 99 + "年文峰"); // 輸出:100年文峰 System.out.println(1 + 2 + "wedu" + 3 + 4); // 輸出:3wedu34 // 可以使用小括號改變運算的優(you) 先級 System.out.println(1 + 2 + "wedu" + (3 + 4)); // 輸出:3wedu7

5.1.5 數值拆分(應用)

需求:

鍵盤錄入一個(ge) 三位數,將其拆分為(wei) 個(ge) 位,十位,百位,打印在控製台

示例代碼:

import java.util.Scanner; public class Test { public static void main(String[] args) { // 1:使用Scanner鍵盤錄入一個(ge) 三位數 Scanner sc = new Scanner(System.in); System.out.println("請輸入一個(ge) 三位數"); int num = sc.nextInt(); // 2:個(ge) 位的計算:數值 % 10 int ge = num % 10; // 3:十位的計算:數值 / 10 % 10 int shi = num / 10 % 10; // 4:百位的計算:數值 / 100 int bai = num / 100; // 5:將個(ge) 位, 十位, 百位拚接上正確的字符串, 打印即可 System.out.println("整數"+num+"個(ge) 位為(wei) :" + ge); System.out.println("整數"+num+"十位為(wei) :" + shi); System.out.println("整數"+num+"百位為(wei) :" + bai); } }

5.2 自增自減運算符(理解)
符號 作用 說明
++ 自增 變量的值加1
-- 自減 變量的值減1

注意事項:

++和-- 既可以放在變量的後邊,也可以放在變量的前邊。

單獨使用的時候, ++和-- 無論是放在變量的前邊還是後邊,結果是一樣的。

參與(yu) 操作的時候,如果放在變量的後邊,先拿變量參與(yu) 操作,後拿變量做++或者--。

參與(yu) 操作的時候,如果放在變量的前邊,先拿變量做++或者--,後拿變量參與(yu) 操作。

最常見的用法:單獨使用。

int i = 10; i++; // 單獨使用 System.out.println("i:" + i); // i:11 ​ int j = 10; ++j; // 單獨使用 System.out.println("j:" + j); // j:11 ​ int x = 10; int y = x++; // 賦值運算,++在後邊,所以是使用x原來的值賦值給y,x本身自增1 System.out.println("x:" + x + ", y:" + y); // x:11,y:10 ​ int m = 10; int n = ++m; // 賦值運算,++在前邊,所以是使用m自增後的值賦值給n,m本身自增1 System.out.println("m:" + m + ", m:" + m); // m:11,m:11

練習(xi) :

int x = 10; int y = x++ + x++ + x++; System.out.println(y); // y的值是多少? /* 解析,三個(ge) 表達式都是++在後,所以每次使用的都是自增前的值,但程序自左至右執行,所以第一次自增時,使用的是10進行計算,但第二次自增時,x的值已經自增到11了,所以第二次使用的是11,然後再次自增。。。 所以整個(ge) 式子應該是:int y = 10 + 11 + 12; 輸出結果為(wei) 33。 */ 注意:通過此練習(xi) 深刻理解自增和自減的規律,但實際開發中強烈建議不要寫(xie) 這樣的代碼!小心挨打!

5.3 賦值運算符(應用)

賦值運算符的作用是將一個(ge) 表達式的值賦給左邊,左邊必須是可修改的,不能是常量。

符號 作用 說明
= 賦值 a=10,將10賦值給變量a
+= 加後賦值 a+=b,將a+b的值給a
-= 減後賦值 a-=b,將a-b的值給a
*= 乘後賦值 a*=b,將a×b的值給a
/= 除後賦值 a/=b,將a÷b的商給a
%= 取餘後賦值 a%=b,將a÷b的餘數給a

注意:

擴展的賦值運算符隱含了強製類型轉換

short s = 10; s = s + 10; // 此行代碼報出,因為(wei) 運算中s提升為(wei) int類型,運算結果int賦值給short可能損失精度 ​ s += 10; // 此行代碼沒有問題,隱含了強製類型轉換,相當於(yu) s = (short) (s + 10);

5.4 關(guan) 係運算符(應用)

關(guan) 係運算符有6種關(guan) 係,分別為(wei) 小於(yu) 、小於(yu) 等於(yu) 、大於(yu) 、等於(yu) 、大於(yu) 等於(yu) 、不等於(yu) 。

符號 說明
== a==b,判斷a和b的值是否相等,成立為true,不成立為false
!= a!=b,判斷a和b的值是否不相等,成立為true,不成立為false
> a>b,判斷a是否大於b,成立為true,不成立為false
>= a>=b,判斷a是否大於等於b,成立為true,不成立為false
< a<b,判斷a是否小於b,成立為true,不成立為false
<= a<=b,判斷a是否小於等於b,成立為true,不成立為false

注意事項:

關(guan) 係運算符的結果都是boolean類型,要麽(me) 是true,要麽(me) 是false。

千萬(wan) 不要把“==”誤寫(xie) 成“=”,"=="是判斷是否相等的關(guan) 係,"="是賦值。

int a = 10; int b = 20; System.out.println(a == b); // false System.out.println(a != b); // true System.out.println(a > b); // false System.out.println(a >= b); // false System.out.println(a < b); // true System.out.println(a <= b); // true ​ // 關(guan) 係運算的結果肯定是boolean類型,所以也可以將運算結果賦值給boolean類型的變量 boolean flag = a > b; System.out.println(flag); // 輸出false

5.5 邏輯運算符(應用)

邏輯運算符把各個(ge) 運算的關(guan) 係表達式連接起來組成一個(ge) 複雜的邏輯表達式,以判斷程序中的表達式是否成立,判斷的結果是 true 或 false。

符號 作用 說明
& 邏輯與 a&b,a和b都是true,結果為true,否則為false
| 邏輯或 a|b,a和b都是false,結果為false,否則為true
^ 邏輯異或 a^b,a和b結果不同為true,相同為false
! 邏輯非 !a,結果和a的結果正好相反

//定義(yi) 變量 int i = 10; int j = 20; int k = 30; ​ //& “與(yu) ”,並且的關(guan) 係,隻要表達式中有一個(ge) 值為(wei) false,結果即為(wei) false System.out.println((i > j) & (i > k)); //false & false,輸出false System.out.println((i < j) & (i > k)); //true & false,輸出false System.out.println((i > j) & (i < k)); //false & true,輸出false System.out.println((i < j) & (i < k)); //true & true,輸出true System.out.println("--------"); ​ //| “或”,或者的關(guan) 係,隻要表達式中有一個(ge) 值為(wei) true,結果即為(wei) true System.out.println((i > j) | (i > k)); //false | false,輸出false System.out.println((i < j) | (i > k)); //true | false,輸出true System.out.println((i > j) | (i < k)); //false | true,輸出true System.out.println((i < j) | (i < k)); //true | true,輸出true System.out.println("--------"); ​ //^ “異或”,相同為(wei) false,不同為(wei) true System.out.println((i > j) ^ (i > k)); //false ^ false,輸出false System.out.println((i < j) ^ (i > k)); //true ^ false,輸出true System.out.println((i > j) ^ (i < k)); //false ^ true,輸出true System.out.println((i < j) ^ (i < k)); //true ^ true,輸出false System.out.println("--------"); ​ //! “非”,取反 System.out.println((i > j)); //false System.out.println(!(i > j)); //!false,,輸出true

5.6 短路邏輯運算符(理解)
符號 作用 說明
&& 短路與(yu) 作用和&相同,但是有短路效果
|| 短路或 作用和|相同,但是有短路效果

在邏輯與(yu) 運算中,隻要有一個(ge) 表達式的值為(wei) false,那麽(me) 結果就可以判定為(wei) false了,沒有必要將所有表達式的值都計算出來,短路與(yu) 操作就有這樣的效果,可以提高效率。同理在邏輯或運算中,一旦發現值為(wei) true,右邊的表達式將不再參與(yu) 運算。

  • 邏輯與(yu) &,無論左邊真假,右邊都要執行。

  • 短路與(yu) &&,如果左邊為(wei) 真,右邊執行;如果左邊為(wei) 假,右邊不執行。

  • 邏輯或|,無論左邊真假,右邊都要執行。

  • 短路或||,如果左邊為(wei) 假,右邊執行;如果左邊為(wei) 真,右邊不執行。

int x = 3; int y = 4; System.out.println((x++ > 4) & (y++ > 5)); // 兩(liang) 個(ge) 表達都會(hui) 運算 System.out.println(x); // 4 System.out.println(y); // 5 System.out.println((x++ > 4) && (y++ > 5)); // 左邊已經可以確定結果為(wei) false,右邊不參與(yu) 運算 System.out.println(x); // 4 System.out.println(y); // 4

5.7 三元運算符(理解)

三元運算符語法格式:

關(guan) 係表達式 ? 表達式1 : 表達式2;

解釋:問號前麵的位置是判斷的條件,判斷結果為(wei) boolean型,為(wei) true時調用表達式1,為(wei) false時調用表達式2。其邏輯為(wei) :如果條件表達式成立或者滿足則執行表達式1,否則執行第二個(ge) 。

舉(ju) 例:

int a = 10; int b = 20; int c = a > b ? a : b; // 判斷 a>b 是否為(wei) 真,如果為(wei) 真取a的值,如果為(wei) 假,取b的值

5.8 三元運算符案例(應用)

需求:

一座寺廟裏住著三個(ge) 和尚,已知他們(men) 的身高分別為(wei) 150cm、210cm、165cm,請用程序實現獲取這三個(ge) 和尚的最高身高。

public class OperatorTest02 { public static void main(String[] args) { //1:定義(yi) 三個(ge) 變量用於(yu) 保存和尚的身高,單位為(wei) cm,這裏僅(jin) 僅(jin) 體(ti) 現數值即可。 int height1 = 150; int height2 = 210; int height3 = 165; //2:用三元運算符獲取前兩(liang) 個(ge) 和尚的較高身高值,並用臨(lin) 時身高變量保存起來。 int tempHeight = height1 > height2 ? height1 : height2; //3:用三元運算符獲取臨(lin) 時身高值和第三個(ge) 和尚身高較高值,並用最大身高變量保存。 int maxHeight = tempHeight > height3 ? tempHeight : height3; //4:輸出結果 System.out.println("maxHeight:" + maxHeight); } }

6. 流程控製語句

在一個(ge) 程序執行的過程中,各條語句的執行順序對程序的結果是有直接影響的。所以,我們(men) 必須清楚每條語句的執行流程。而且,很多時候要通過控製語句的執行順序來實現我們(men) 想要的功能。

6.1 流程控製語句分類(了解)

順序結構

分支結構(if, switch)

循環結構(for, while, do…while)

6.2 順序結構(了解)

順序結構是程序中最簡單最基本的流程控製,沒有特定的語法結構,按照代碼的先後順序,依次執行,程序中大多數的代碼都是這樣執行的。

順序結構執行流程圖:

 

6.3 分支結構之if語句
6.3.1 if語句格式1(理解)

格式: if (關(guan) 係表達式) { 語句體(ti) ; }

執行流程:

①首先計算關(guan) 係表達式的值

②如果關(guan) 係表達式的值為(wei) true就執行語句體(ti)

③如果關(guan) 係表達式的值為(wei) false就不執行語句體(ti)

④繼續執行後麵的語句內(nei) 容

 

示例:

public class IfDemo { public static void main(String[] args) { System.out.println("開始"); // 如果年齡大於(yu) 18歲, 就可以上網吧 int age = 17; if(age >= 18){ // int a = 10; System.out.println("可以上網吧"); } System.out.println("結束"); } }

6.3.2 if語句格式2(理解)

格式: if (關(guan) 係表達式) { 語句體(ti) 1; } else { 語句體(ti) 2; }

執行流程:

①首先計算關(guan) 係表達式的值

②如果關(guan) 係表達式的值為(wei) true就執行語句體(ti) 1

③如果關(guan) 係表達式的值為(wei) false就執行語句體(ti) 2

④繼續執行後麵的語句內(nei) 容

 

示例:奇偶數

任意給出一個(ge) 整數,請用程序實現判斷該整數是奇數還是偶數,並在控製台輸出該整數是奇數還是偶數。

public class Demo2If { public static void main(String[] args) { // 程序判斷一個(ge) 數, 是奇數還是偶數 int num = 9; if(num % 2 == 0){ System.out.println("偶數"); }else{ System.out.println("奇數"); } } }

6.3.3 if語句格式3(理解)

格式: if (關(guan) 係表達式1) { 語句體(ti) 1; } else if (關(guan) 係表達式2) { 語句體(ti) 2; } … else { 語句體(ti) n+1; }

執行流程:

①首先計算關(guan) 係表達式1的值

②如果值為(wei) true就執行語句體(ti) 1;如果值為(wei) false就計算關(guan) 係表達式2的值

③如果值為(wei) true就執行語句體(ti) 2;如果值為(wei) false就計算關(guan) 係表達式3的值

④…

⑤如果沒有任何關(guan) 係表達式為(wei) true,就執行語句體(ti) n+1。

 

示例:

定義(yi) 一個(ge) 在0~100之間的變量a, 90~100優(you) 秀,80~89良好,70~79中等,60~69及格,0~59請努力加油!

public class Demo3If { public static void main(String[] args){ int score = 65; if(score >= 90 && score <= 100){ System.out.println("優(you) 秀"); }else if (score >= 80 && score <= 89){ System.out.println("良好"); }else if (score >= 70 && score <= 79){ System.out.println("中等"); }else if (score >= 60 && score <= 69){ System.out.println("及格"); }else if (score >= 0 && score <= 59){ System.out.println("請努力加油"); }else{ System.out.println("成績有誤!"); } } }

6.3.4 if語句格式3案例(應用)

需求:小明快要期末考試了,小明爸爸對他說,會(hui) 根據他不同的考試成績,送他不同的禮物,假如你可以控製小明的得分,請用程序實現小明到底該獲得什麽(me) 樣的禮物,並在控製台輸出。

分析:

①小明的考試成績未知,可以使用鍵盤錄入的方式獲取值

②由於(yu) 獎勵種類較多,屬於(yu) 多種判斷,采用if...else...if格式實現

③為(wei) 每種判斷設置對應的條件

④為(wei) 每種判斷設置對應的獎勵

import java.util.Scanner; public class IfTest02 { public static void main(String[] args){ // 1. 使用Scanner錄入考試成績 Scanner sc = new Scanner(System.in); System.out.println("請輸入您的成績:"); int score = sc.nextInt(); // 2. 判斷成績是否在合法範圍內(nei) 0~100 if(score >=0 && score <= 100){ // 合法成績 // 3. 在合法的語句塊中判斷成績範圍符合哪一個(ge) 獎勵 if(score >= 95 && score <= 100){ System.out.println("自行車一輛"); }else if(score >= 90 && score <= 94){ System.out.println("遊樂(le) 場一次"); }else if(score >= 80 && score <= 89){ System.out.println("變形金剛一個(ge) "); }else { System.out.println("挨頓揍, 這座城市又多了一個(ge) 傷(shang) 心的人~"); } }else{ // 非法的話, 給出錯誤提示 System.out.println("您的成績輸入有誤!"); } } }

7. switch語句

7.1 分支語句switch語句
  • 格式

    switch (表達式) { case 1: 語句體(ti) 1; break; case 2: 語句體(ti) 2; break; ... default: 語句體(ti) n+1; break; }

  • 執行流程:

    • 首先計算出表達式的值

    • 其次,和case依次比較,一旦有對應的值,就會(hui) 執行相應的語句,在執行的過程中,遇到break就會(hui) 結 束。

    • 最後,如果所有的case都和表達式的值不匹配,就會(hui) 執行default語句體(ti) 部分,然後程序結束掉。

7.2 switch案例-減肥計劃
  • 需求:鍵盤錄入星期數,顯示今天的減肥活動

周一:跑步 周二:遊泳 周三:慢走 周四:動感單車 周五:拳擊 周六:爬山 周日:好好吃一頓

  • 示例代碼:

public static void main(String[] args){ // 1. 鍵盤錄入星期數據,使用變量接收 Scanner sc = new Scanner(System.in); System.out.println("請輸入"); int week = sc.nextInt(); // 2. 多情況判斷,采用switch語句實現 switch(week){ // 3. 在不同的case中,輸出對應的減肥計劃 case 1: System.out.println("跑步"); break; case 2: System.out.println("遊泳"); break; case 3: System.out.println("慢走"); break; case 4: System.out.println("動感單車"); break; case 5: System.out.println("拳擊"); break; case 6: System.out.println("爬山"); break; case 7: System.out.println("好好吃一頓"); break; default: System.out.println("您的輸入有誤"); break; } } }

7.3 switch語句case穿透
  • 概述 : 如果switch語句中,case省略了break語句, 就會(hui) 開始case穿透

  • 需求 : 鍵盤錄入星期數,輸出工作日、休息日 (1-5)工作日,(6-7)休息日

  • 示例代碼:

/* case穿透是如何產(chan) 生的? 如果switch語句中,case省略了break語句, 就會(hui) 開始case穿透. 現象: 當開始case穿透,後續的case就不會(hui) 具有匹配效果,內(nei) 部的語句都會(hui) 執行 直到看見break,或者將整體(ti) switch語句執行完畢,才會(hui) 結束。 */ public static void main(String[] args){ Scanner sc = new Scanner(System.in); System.out.println("請輸入星期數:"); int week = sc.nextInt(); switch(week){ case 1: case 2: case 3: case 4: case 5: System.out.println("工作日"); break; case 6: case 7: System.out.println("休息日"); break; default: System.out.println("您的輸入有誤"); break; } } }

8. for循環

8.1 循環語句-for循環
  • 循環:

    循環語句可以在滿足循環條件的情況下,反複執行某一段代碼,這段被重複執行的代碼被稱為(wei) 循環體(ti) 語句,當反複 執行這個(ge) 循環體(ti) 時,需要在合適的時候把循環判斷條件修改為(wei) false,從(cong) 而結束循環,否則循環將一直執行下去,形 成死循環。

  • for循環格式:

for (初始化語句;條件判斷語句;條件控製語句) { 循環體(ti) 語句; }

  • 格式解釋:

    • 初始化語句: 用於(yu) 表示循環開啟時的起始狀態,簡單說就是循環開始的時候什麽(me) 樣

    • 條件判斷語句:用於(yu) 表示循環反複執行的條件,簡單說就是判斷循環是否能一直執行下去

    • 循環體(ti) 語句: 用於(yu) 表示循環反複執行的內(nei) 容,簡單說就是循環反複執行的事情

    • 條件控製語句:用於(yu) 表示循環執行中每次變化的內(nei) 容,簡單說就是控製循環是否能執行下去

  • 執行流程:

    ①執行初始化語句

    ②執行條件判斷語句,看其結果是true還是false

    如果是false,循環結束

    如果是true,繼續執行

    ③執行循環體(ti) 語句

    ④執行條件控製語句

    ⑤回到②繼續

8.2 for循環案例-輸出數據1-5和5-1
  • 需求:在控製台輸出1-5和5-1的數據

  • 示例代碼:

public class ForTest01 { public static void main(String[] args) { //需求:輸出數據1-5 for(int i=1; i<=5; i++) { System.out.println(i); } System.out.println("--------"); //需求:輸出數據5-1 for(int i=5; i>=1; i--) { System.out.println(i); } } }

8.3 for循環案例-求1-5數據和
  • 需求:求1-5之間的數據和,並把求和結果在控製台輸出

  • 示例代碼:

public class ForTest02 { public static void main(String[] args) { //求和的最終結果必須保存起來,需要定義(yi) 一個(ge) 變量,用於(yu) 保存求和的結果,初始值為(wei) 0 int sum = 0; //從(cong) 1開始到5結束的數據,使用循環結構完成 for(int i=1; i<=5; i++) { //將反複進行的事情寫(xie) 入循環結構內(nei) 部 // 此處反複進行的事情是將數據 i 加到用於(yu) 保存最終求和的變量 sum 中 sum += i; /* sum += i; sum = sum + i; 第一次:sum = sum + i = 0 + 1 = 1; 第二次:sum = sum + i = 1 + 2 = 3; 第三次:sum = sum + i = 3 + 3 = 6; 第四次:sum = sum + i = 6 + 4 = 10; 第五次:sum = sum + i = 10 + 5 = 15; */ } //當循環執行完畢時,將最終數據打印出來 System.out.println("1-5之間的數據和是:" + sum); } }

  • 本題要點:

    • 今後遇到的需求中,如果帶有求和二字,請立即聯想到求和變量

    • 求和變量的定義(yi) 位置,必須在循環外部,如果在循環內(nei) 部則計算出的數據將是錯誤的

8.4 for循環案例-求1-100偶數和
  • 需求:求1-100之間的偶數和,並把求和結果在控製台輸出 }

  • 示例代碼:

public class ForTest03 { public static void main(String[] args) { //求和的最終結果必須保存起來,需要定義(yi) 一個(ge) 變量,用於(yu) 保存求和的結果,初始值為(wei) 0 int sum = 0; //對1-100的數據求和與(yu) 1-5的數據求和幾乎完全一樣,僅(jin) 僅(jin) 是結束條件不同 for(int i=1; i<=100; i++) { //對1-100的偶數求和,需要對求和操作添加限製條件,判斷是否是偶數 if(i%2 == 0) { sum += i; } } //當循環執行完畢時,將最終數據打印出來 System.out.println("1-100之間的偶數和是:" + sum); } }

8.5 for循環案例-水仙花數
  • 需求:在控製台輸出所有的“水仙花數”

  • 解釋:什麽(me) 是水仙花數?

    • 水仙花數,指的是一個(ge) 三位數,個(ge) 位、十位、百位的數字立方和等於(yu) 原數

      • 例如153 3*3*3 + 5*5*5 + 1*1*1 = 153

  • 思路:

    1. 獲取所有的三位數,準備進行篩選,最小的三位數為(wei) 100,最大的三位數為(wei) 999,使用for循環獲取

    2. 獲取每一個(ge) 三位數的個(ge) 位,十位,百位,做if語句判斷是否是水仙花數

  • 示例代碼

public class ForTest04 { public static void main(String[] args) { //輸出所有的水仙花數必然要使用到循環,遍曆所有的三位數,三位數從(cong) 100開始,到999結束 for(int i=100; i<1000; i++) { //在計算之前獲取三位數中每個(ge) 位上的值 int ge = i%10; int shi = i/10%10; int bai = i/10/10%10; //判定條件是將三位數中的每個(ge) 數值取出來,計算立方和後與(yu) 原始數字比較是否相等 if(ge*ge*ge + shi*shi*shi + bai*bai*bai == i) { //輸出滿足條件的數字就是水仙花數 System.out.println(i); } } } }

8.6 for循環案例-每行打印2個水仙花數(統計)
  • 需求:在控製台輸出所有的“水仙花數”,要求每行打印2個(ge)

  • 示例代碼:

public class Demo6For { /* 需求:在控製台輸出所有的“水仙花數”,要求每行打印2個(ge) System.out.print (打印內(nei) 容); 打印後不換行 System.out.println(打印內(nei) 容); 打印後換行 分析: 1. 定義(yi) 變量count,用於(yu) 保存“打印過”的數量,初始值為(wei) 0 2. 在判定和打印水仙花數的過程中,拚接空格, 但不換行,並在打印後讓count變量+1,記錄打印過的數量 3. 在每一次count變量+1後,判斷是否到達了2的倍數,是的話,換行。 */ public static void main(String[] args){ // 1. 定義(yi) 變量count,用於(yu) 保存“打印過”的數量,初始值為(wei) 0 int count = 0; for(int i = 100; i <= 999; i++){ int ge = i % 10; int shi = i / 10 % 10; int bai = i / 10 / 10 % 10; if( (ge*ge*ge + shi*shi*shi + bai*bai*bai) == i){ // 2. 在判定和打印水仙花數的過程中,拚接空格, 但不換行,並在打印後讓count變量+1,記錄打印過的數量 System.out.print(i + " "); count++; // 3. 在每一次count變量+1後,判斷是否到達了2的倍數,是的話,換行 if(count % 2 == 0){ System.out.println(); } } } } }

  • 本題要點:

    • 今後如果需求帶有統計xxx,請先想到計數器變量

    • 計數器變量定義(yi) 的位置,必須在循環外部

9. while循環

9.1 循環語句-while循環
  • while循環完整格式:

    初始化語句; while (條件判斷語句) { 循環體(ti) 語句; 條件控製語句; }

  • while循環執行流程:

    ①執行初始化語句

    ②執行條件判斷語句,看其結果是true還是false

    如果是false,循環結束

    如果是true,繼續執行

    ③執行循環體(ti) 語句

    ④執行條件控製語句

    ⑤回到②繼續

  • 示例代碼:

public class WhileDemo { public static void main(String[] args) { //需求:在控製台輸出5次"HelloWorld" //for循環實現 for(int i=1; i<=5; i++) { System.out.println("HelloWorld"); } System.out.println("--------"); //while循環實現 int j = 1; while(j<=5) { System.out.println("HelloWorld"); j++; } } }

9.2 while循環案例-珠穆朗瑪峰
  • 需求:世界最高山峰是珠穆朗瑪峰(8844.43米=8844430毫米),假如我有一張足夠大的紙,它的厚度是0.1毫米。請問,我折疊多少次,可以折成珠穆朗瑪峰的高度?

  • 示例代碼:

public class WhileTest { public static void main(String[] args) { //定義(yi) 一個(ge) 計數器,初始值為(wei) 0 int count = 0; //定義(yi) 紙張厚度 double paper = 0.1; //定義(yi) 珠穆朗瑪峰的高度 int zf = 8844430; //因為(wei) 要反複折疊,所以要使用循環,但是不知道折疊多少次,這種情況下更適合使用while循環 //折疊的過程中當紙張厚度大於(yu) 珠峰就停止了,因此繼續執行的要求是紙張厚度小於(yu) 珠峰高度 while(paper <= zf) { //循環的執行過程中每次紙張折疊,紙張的厚度要加倍 paper *= 2; //在循環中執行累加,對應折疊了多少次 count++; } //打印計數器的值 System.out.println("需要折疊:" + count + "次"); } }

10. 循環細節

10.1 循環語句-dowhile循環
  • 完整格式:

    初始化語句; do { 循環體(ti) 語句; 條件控製語句; }while(條件判斷語句);

  • 執行流程:

    ① 執行初始化語句

    ② 執行循環體(ti) 語句

    ③ 執行條件控製語句

    ④ 執行條件判斷語句,看其結果是true還是false

    如果是false,循環結束

    如果是true,繼續執行

    ⑤ 回到②繼續

  • 示例代碼:

public class DoWhileDemo { public static void main(String[] args) { //需求:在控製台輸出5次"HelloWorld" //for循環實現 for(int i=1; i<=5; i++) { System.out.println("HelloWorld"); } System.out.println("--------"); //do...while循環實現 int j = 1; do { System.out.println("HelloWorld"); j++; }while(j<=5); } }

10.2 三種循環的區別
  • 三種循環的區別

    • for循環和while循環先判斷條件是否成立,然後決(jue) 定是否執行循環體(ti) (先判斷後執行)

    • do...while循環先執行一次循環體(ti) ,然後判斷條件是否成立,是否繼續執行循環體(ti) (先執行後判斷)

  • for循環和while的區別

    • 條件控製語句所控製的自增變量,因為(wei) 歸屬for循環的語法結構中,在for循環結束後,就不能再次被訪問到了

    • 條件控製語句所控製的自增變量,對於(yu) while循環來說不歸屬其語法結構中,在while循環結束後,該變量還可以繼續使用

  • 死循環(無限循環)的三種格式

    1. for(;;){}

    2. while(true){}

    3. do {} while(true);

10.3 死循環
  • 死循環格式

    for死循環格式 : for(;;){ } while死循環格式 : while(true){ } do..while死循環格式 : do{ }while(true);

  • 死循環案例

/* 問題: 死循環有應用場景嗎? 例如: 鍵盤錄入一個(ge) 1-100之間的整數 顧慮: 鍵盤錄入是用戶操作的, 用戶就可能會(hui) 出現一些誤操作的現象 */ public static void main(String[] args) { /* for(;;){ System.out.println("我停不下來了~"); } */ /* while(true){ System.out.println("我停不下來了~"); } */ do{ System.out.println("我停不下來了~"); }while(true); System.out.println("看看我能被執行嗎?~"); // 無法訪問的語句 } }

10.4 跳轉控製語句
  • 跳轉控製語句(break)

    • 跳出循環,結束循環

  • 跳轉控製語句(continue)

    • 跳過本次循環,繼續下次循環

  • 注意: continue隻能在循環中進行使用!

public class Demo1Continue { /* continue : 跳過某次循環體(ti) 內(nei) 容的執行 注意:使用是基於(yu) 條件控製, 在循環內(nei) 部使用. 需求: 模擬電梯上行的過程 1-24層, 4層不停. */ public static void main(String[] args){ for(int i = 1; i <= 24; i++){ if(i == 4){ continue; } System.out.println(i + "層到了~"); } } }

public class Demo2Break {
 /*
  break : 終止循環體(ti) 內(nei) 容的執行
  注意:使用是基於(yu) 條件控製的
    break語句隻能在循環和switch中進行使用.
  需求: 模擬20歲工作到80歲, 60歲退休.
 */
 public static void main(String[] args){
  for(int i = 20; i <= 80; i++){
   if(i == 60){
    break;  // 結束整個(ge) 循環
   }
   System.out.println(i + "歲正在上班");
  }
 }
}
import java.util.Scanner;
public class Test {
 /*
  需求:程序運行後,用戶可多次查詢星期對應的減肥計劃,直到輸入0,程序結束
  步驟:
   1. 不明確用戶操作幾次, 使用死循環包裹業(ye) 務邏輯
   2. 匹配到0的時候,使用break結束循環死循環
 */
 public static void main (String[] args){
  lo:while(true){
   System.out.println("請輸入您要查看的星期數:");
   System.out.println("(如無需繼續查看,請輸入0退出程序)");
   // 1. 鍵盤錄入星期數據,使用變量接收
   Scanner sc = new Scanner(System.in);
   int week = sc.nextInt();
   // 2. 多情況判斷,采用switch語句實現
   switch(week){
    // 3. 在不同的case中,輸出對應的減肥計劃
    case 0:
     System.out.println("感謝您的使用");
     break lo;
    case 1:
     System.out.println("跑步");
     break;
    case 2:
     System.out.println("遊泳");
     break;
    case 3:
     System.out.println("慢走");
     break;
    case 4:
     System.out.println("動感單車");
     break;
    case 5:
     System.out.println("拳擊");
     break;
    case 6:
     System.out.println("爬山");
     break;
    case 7:
     System.out.println("好好吃一頓");
     break;
    default:
     System.out.println("您的輸入有誤");
     break;
   }
  }
 }
}

11. Random

11.1 Random產生隨機數(掌握)
  • 概述:

    • Random類似Scanner,也是Java提供好的API,內(nei) 部提供了產(chan) 生隨機數的功能

      • API後續課程詳細講解,現在可以簡單理解為(wei) Java已經寫(xie) 好的代碼

  • 使用步驟:

    1. 導入包

      import java.util.Random;

    2. 創建對象

      Random r = new Random();

    3. 產(chan) 生隨機數

      int num = r.nextInt(10);

      解釋: 10代表的是一個(ge) 範圍,如果括號寫(xie) 10,產(chan) 生的隨機數就是0-9,括號寫(xie) 20,參數的隨機數則是0-19

  • 示例代碼:

import java.util.Random; public class Demo1Random { /* Random : 產(chan) 生隨機數 1. 導包 : import java.util.Random; 導包的動作必須出現在類定義(yi) 的上麵 2. 創建對象 : Random r = new Random(); 上麵這個(ge) 格式裏麵,r 是變量名,可以變,其他的都不允許變 3. 獲取隨機數 : int number = r.nextInt(10); //獲取數據的範圍:[0,10) 包括0,不包括10 上麵這個(ge) 格式裏麵,number是變量名,可以變,數字10可以變。其他的都不允許變 需求: 產(chan) 生隨機數1-10之間的 */ public static void main(String[] args){ // 2. 創建對象 Random r = new Random(); for(int i = 1; i <= 10; i++){ // 3. 獲取隨機數 int num = r.nextInt(10) + 1; // 1-10 System.out.println(num); } } }

11.2 Random練習-猜數字(應用)
  • 需求:

    程序自動生成一個(ge) 1-100之間的數字,使用程序實現猜出這個(ge) 數字是多少?

    當猜錯的時候根據不同情況給出相應的提示

    A. 如果猜的數字比真實數字大,提示你猜的數據大了

    B. 如果猜的數字比真實數字小,提示你猜的數據小了

    C. 如果猜的數字與(yu) 真實數字相等,提示恭喜你猜中了

  • 示例代碼:

import java.util.Scanner;
import java.util.Random;
public class Test {
 /*
  需求:程序自動生成一個1-100之間的數字,使用程序實現猜出這個數字是多少?
   當猜錯的時候根據不同情況給出相應的提示
   如果猜的數字比真實數字大,提示你猜的數據大了
   如果猜的數字比真實數字小,提示你猜的數據小了
   如果猜的數字與真實數字相等,提示恭喜你猜中了
  1. 準備Random和Scanner對象, 分別用於產生隨機數和鍵盤錄入
  2. 使用Random產生一個1-100之間的數, 作為要猜的數
  3. 鍵盤錄入用戶猜的的數據
  4. 使用錄入的數據(用戶猜的數據)和隨機數(要猜的數據)進行比較, 並給出提示
  5. 以上內容需要多次進行, 但無法預估用戶輸入幾次可以猜測正確, 使用while(true)死循環包裹
  6. 猜對之後, break結束.
 */
 public static void main(String[] args){
  // 1. 準備Random和Scanner對象, 分別用於產生隨機數和鍵盤錄入
  Random r = new Random();
  Scanner sc = new Scanner(System.in);
  // 2. 使用Random產生一個1-100之間的數, 作為要猜的數
  int randomNum = r.nextInt(100) + 1;
  // 5. 以上內容需要多次進行, 但無法預估用戶輸入幾次可以猜測正確, 使用while(true)死循環包裹
  while(true){
   // 3. 鍵盤錄入用戶猜的的數據
   System.out.println("請輸入您猜的數據:");
   int num = sc.nextInt();
   // 4. 使用錄入的數據(用戶猜的數據)和隨機數(要猜的數據)進行比較, 並給出提示
   if(num > randomNum){
    System.out.println("猜大了");
   }else if(num < randomNum){
    System.out.println("猜小了");
   }else{
    // 6. 猜對之後, break結束.
    System.out.println("恭喜,猜中了");
    break;
   }
  }
  System.out.println("感謝您的使用");
 }
}
Tags:JAVA,語法,入門  
責任編輯:admin
  • 上一篇文章:
  • 下一篇文章: 沒有了
  • 請文明參與討論,禁止漫罵攻擊。 昵稱:注冊  登錄
    [ 查看全部 ] 網友評論
    關於我們 - 聯係我們 - 廣告服務 - 友情鏈接 - 網站地圖 - 版權聲明 - 在線幫助 - 文章列表
    返回頂部
    刷新頁麵
    下到頁底
    晶體管查詢