Java面向物件程式開發實戰(二)
第二章 資料型別與運算子
2.1.1 變數的命名
在Java中,識別符號常用來為程式中的常量、變數、方法、類、介面和包命名。
1.識別符號的命名規則
>識別符號由字母、數字、下劃線(——)或美元符號($)組成。
>識別符號的首字母以字母、下劃線或美元符號開頭,不能以數字開頭。
>識別符號的命名不能與關鍵字、布林值(true、false)和null相同。
>識別符號區分大小寫,沒有長度限制,堅持見名知義的原則。
2.關鍵字
關鍵字是Java語言保留的,為其定義了固定含義的特殊識別符號。
注意:關鍵字全部為小寫字母,程式設計師不能將關鍵字定義為識別符號,否則會出現編譯錯誤。
Java定義的48個常用關鍵字。
關鍵字屬於保留字,在 Java 中具有特殊的含義,比如說 public、final、static、new 等等,它們不能用來作為變數名。為了便於你作為參照,我列舉了 48 個常用的關鍵字,你可以瞅一瞅。
-
abstract:abstract 關鍵字用於宣告抽象類——可以有抽象和非抽象方法。
-
boolean:boolean 關鍵字用於將變數宣告為布林值型別,它只有 true 和 false 兩個值。
-
break:break 關鍵字用於中斷迴圈或 switch 語句。
-
byte:byte 關鍵字用於宣告一個可以容納 8 個位元的變數。
-
case:
-
catch:catch 關鍵字用於捕獲 try 語句中的異常。
-
char:char 關鍵字用於宣告一個可以容納無符號 16 位位元的 Unicode 字元的變數。
-
class:class 關鍵字用於宣告一個類。
-
continue:continue 關鍵字用於繼續下一個迴圈。它可以在指定條件下跳過其餘程式碼。
-
default:default 關鍵字用於指定 switch 語句中除去 case 條件之外的預設程式碼塊。
-
do:do 關鍵字通常和 while 關鍵字配合使用,do 後緊跟迴圈體。
-
double:double 關鍵字用於宣告一個可以容納 64 位浮點數的變數。
-
else:else 關鍵字用於指示 if 語句中的備用分支。
-
enum:enum(列舉)關鍵字用於定義一組固定的常量。
-
extends:extends 關鍵字用於指示一個類是從另一個類或介面繼承的。
-
final:final 關鍵字用於指示該變數是不可更改的。
-
finally:finally 關鍵字和
try-catch
配合使用,表示無論是否處理異常,總是執行 finally 塊中的程式碼。 -
float:float 關鍵字用於宣告一個可以容納 32 位浮點數的變數。
-
for:for 關鍵字用於啟動一個 for 迴圈,如果迴圈次數是固定的,建議使用 for 迴圈。
-
if:if 關鍵字用於指定條件,如果條件為真,則執行對應程式碼。
-
implements:implements 關鍵字用於實現介面。
-
import:import 關鍵字用於匯入對應的類或者介面。
-
instanceof:instanceof 關鍵字用於判斷物件是否屬於某個型別(class)。
-
int:int 關鍵字用於宣告一個可以容納 32 位帶符號的整數變數。
-
interface:interface 關鍵字用於宣告介面——只能具有抽象方法。
-
long:long 關鍵字用於宣告一個可以容納 64 位整數的變數。
-
native:native 關鍵字用於指定一個方法是通過呼叫本機介面(非 Java)實現的。
-
new:new 關鍵字用於建立一個新的物件。
-
null:如果一個變數是空的(什麼引用也沒有指向),就可以將它賦值為 null。
-
package:package 關鍵字用於宣告類所在的包。
-
private:private 關鍵字是一個訪問修飾符,表示方法或變數只對當前類可見。
-
protected:protected 關鍵字也是一個訪問修飾符,表示方法或變數對同一包內的類和所有子類可見。
-
public:public 關鍵字是另外一個訪問修飾符,除了可以宣告方法和變數(所有類可見),還可以宣告類。
main()
方法必須宣告為 public。 -
return:return 關鍵字用於在程式碼執行完成後返回(一個值)。
-
short:short 關鍵字用於宣告一個可以容納 16 位整數的變數。
-
static:static 關鍵字表示該變數或方法是靜態變數或靜態方法。
-
strictfp:strictfp 關鍵字並不常見,通常用於修飾一個方法,確保方法體內的浮點數運算在每個平臺上執行的結果相同。
-
super:super 關鍵字可用於呼叫父類的方法或者變數。
-
switch:switch 關鍵字通常用於三個(以上)的條件判斷。
-
synchronized:synchronized 關鍵字用於指定多執行緒程式碼中的同步方法、變數或者程式碼塊。
-
this:this 關鍵字可用於在方法或建構函式中引用當前物件。
-
throw:throw 關鍵字主動丟擲異常。
-
throws:throws 關鍵字用於宣告異常。
-
transient:transient 關鍵字在序列化的使用用到,它修飾的欄位不會被序列化。
-
try:try 關鍵字用於包裹要捕獲異常的程式碼塊。
-
void:void 關鍵字用於指定方法沒有返回值。
-
volatile:volatile 關鍵字保證了不同執行緒對它修飾的變數進行操作時的可見性,即一個執行緒修改了某個變數的值,這新值對其他執行緒來說是立即可見的。
-
while:如果迴圈次數不固定,建議使用 while 迴圈。
使用識別符號命名時,遵循見名知義原則和駝峰命名法。
見名知義原則:是指在使用識別符號命名時,要使用能反映被定義者的含義或作用的字元。這樣,其他人在閱讀程式碼是通過名稱就可以對朝鮮有所理解。
eg:定義姓名是使用name、定義年齡時使用age,一看便能知道其代表的含義,是推薦的用法。
駝峰命名法:就是當使用識別符號命名時,如果有一個或多個單詞連線在一起,第一個單詞以小寫字母開始,第二個單詞及後續每一個單詞的首字母都採用大寫字母,這樣的變數名看上去就像駝峰一樣此起彼伏,故因此得名。eg:fileUnti、fileName、dataManager、studentInfo。
2.1.2 Java中的註釋
作用:註釋是程式開發人員和程式閱讀者之間交流的重要手段,是對程式碼的解釋和說明,好的註釋可以提高軟體的可讀性,減少軟體的維護成本。
1.單行註釋
單行註釋指的是隻能書寫在一行的註釋,是最簡單的註釋型別,用於對程式碼進行簡單的說明。當只有一行內容需要註釋時,一般使用單行註釋。快捷鍵:ctrl+/。可以自動產生單行註釋。
單行註釋的語法格式:
//單行註釋
單行註釋以“//”開頭,“//”後面的內容都被認為是註釋。
注意:1.單行註釋不會被編譯。2.“//” 不能放到被解釋程式碼的前面,否則這行程式碼會被註釋掉。
2.多行註釋
多行註釋一般用於說明比較複雜的內容,如複雜的程式邏輯和演算法的實現原理等。當有多行內容需要被註釋時,一般使用多行註釋。快捷鍵:ctrl+shift+/。可以生成多行註釋。
多行註釋的語法格式:
/*
*個人簡歷資訊輸出
*/
>多行註釋以“/*”開頭,以“*/”結尾。
>“/*”和“*/”之間的內容都被認為是註釋。
提示:註釋簡單來說就是一種說明,不能被當做語句執行、即可以增強程式碼的可讀性,又可以為自己理清思路。
3.文件註釋
如果想為程式生成像官方API幫助文件一樣的檔案,可以在編寫程式碼時使用文件註釋。使用JDK提供的javadoc命令,將程式碼中的文件註釋提取出來,可自動生成一份HTML格式的API幫助文件,其風格與官方API幫助文件完全一樣,省去了枯燥、繁瑣的手動編寫幫助文件的工作。
輸入/** ,點選“Enter”,自動根據引數和返回值生成註釋模板.
文件註釋的語法格式如下:
/**
*文件註釋
*/
>文件註釋以“/**”開頭,以“*/”結尾。
>每個註釋包含一些描述性的文字及若干個文件註釋標籤。
>文件註釋標籤一般以“@”為字首。
常用Java註釋標籤(Java comment tags)
@author 作者
適用範圍:檔案、類、方法
(多個作者使用多個@author標籤標識,java doc中顯示按輸入時間順序羅列。)
例: @authorLeo. Yao
@parameter輸入引數的名稱說明
適用範圍:方法
例:* @param str the String用來存放輸出資訊。
@return輸出引數說明
適用範圍:方法
例: * @return <code>true</code>執行成功;
<code>false</code>執行失敗.
@since JDK版本
用於標識編譯該檔案所需要的JDK環境。
適用範圍:檔案、類
例: @since JDK1.6
@version版本號
用於標識註釋物件的版本號
適用範圍:檔案、類、方法
例: * @version 1.0
@throws異常
標識出方法可能丟擲的異常
適用範圍:方法
2.1.3 資料型別
1.Java中的資料型別
Java是強型別語言,在定義變數前需要宣告資料型別,在Java中主要分為兩種資料型別:基本資料型別和引用資料型別。
(1)基本資料型別用於儲存簡單型別的資料,比如說,int、long、byte、short 用於儲存整數,float、double 用於儲存浮點數,char 用於儲存字元,boolean 用於儲存布林值。
不同的基本資料型別,有不同的預設值和大小,來個表格感受下。
資料型別 | 預設值 | 大小 |
---|---|---|
boolean | false | 1位元 |
char | '\u0000' | 2位元組 |
byte | 0 | 1位元組 |
short | 0 | 2位元組 |
int | 0 | 4位元組 |
long | 0L | 8位元組 |
float | 0.0f | 4位元組 |
double | 0.0 | 8位元組 |
一、4種整型
byte 1位元組 -128——127
short 2 位元組 -32,768 —— 32,767
int 4 位元組 -2,147,483,648 ——2,147,483,647(超過20億)
long 8 位元組 -9,223,372,036,854,775,808——9,223,372,036854,775,807
註釋:java中所有的資料類所佔據的位元組數量與平臺無關,java也沒有任何無符號型別
二、 2種浮點型別
float 4 位元組 32位IEEE 754單精度(有效位數 6 – 7位)
double 8 位元組 64位IEEE 754雙精度(有效位數15位)
三、1種Unicode編碼的字元單元
char 2 位元組 整個Unicode字符集
四、1種真值型別
boolean 1 位 True或者false
(2)引用資料型別用於儲存物件(null 表示沒有值的物件)的引用,String 是引用型別的最佳代表,比如說String name = "張三"
。
3種引用型別
類class
介面interface
陣列array
一、類Class引用
可以是我們建立的,這裡我不多講,主要是講解幾個java庫中的類
Object :Object是一個很重要的類,Object是類層次結構的根類,每個類都使用Object作為超類,所有物件(包括數
組)都實現這個類的方法。用Object可以定義所有的類
如:
Object object= new Integer(1); 來定義一個Interger類
Integer i=(Integer) object; 在來把這個Object強制轉換成Interger類
String :String類代表字串,Java 程式中的所有字串字面值(如"abc")都作為此類的例項來實現。檢查序列的單
個字元、比較字串、搜尋字串、提取子字串、建立字串副本、在該副本中、所有的字元都被轉換為 大 寫或小寫形式。
Date :Date表示特定的瞬間,精確到毫秒。Date的類一般現在都被Calendar 和GregorianCalendar所有代替
Void :Void 類是一個不可例項化的佔位符類,它保持一個對代表 Java 關鍵字 void 的 Class 物件的引用。
同時也有對應的Class如:Integer Long Boolean Byte Character Double Float Short
二、介面interface引用
可以是我們建立的,這裡我不多講,主要是講解幾個java庫中的介面interface
List<E>:列表 ,此介面的使用者可以對列表中每個元素的插入位置進行精確地控制。使用者可以根據元素的整數索引
(在列表中的位置)訪問元素,並搜尋列表中的元素。List 介面提供了兩種搜尋指定物件的方法。從
效能的觀點來看,應該小心使用這些方法。在很多實現中,它們將執行高開銷的線性搜尋。 List 接
口提供了兩 種在列表的任意位置高效插入和移除多個元素的方法。
add() : 在列表的插入指定元素。
remove():移除列表中指定位置的元素。
get(int index):返回列表中指定位置的元素。
Map<K,V>:
K - 此對映所維護的鍵的型別
V - 對映值的型別 將鍵對映到值的物件。一個對映不能包含重複的鍵;每個鍵最多隻能對映到一個值。
put(K key,V value):將指定的值與此對映中的指定鍵關聯(可選操作)。如果此對映以前包含一個該鍵的
映 射 關係,則用指定值替換舊值(當且僅當,返回 true 時,才能說對映 m 包含鍵 k 的對映關係)。 remove(Object key)如果存在一個鍵的對映關係,則將其從此對映中移除(可選操作)。更確切地講,如果此 對映包含從滿足(key==null ? k==null :key.equals(k))的鍵 k 到值 v 的對映關係,則移除該對映關係。(該映 射最多隻能包含一個這樣的對映關係。) get(Object key):返回指定鍵所對映的值;如果此對映不包含該鍵的對映關係,則返回 null。
這裡我們主要是用String List Map Object 是最常用Number ArrayList<E> Arrays等
可以查考jdk的api
這些類和介面在
java.lang :提供利用 Java 程式語言進行程式設計的基礎類。
和
java.unit:包含 collection 框架、遺留的 collection 類、事件模型、日期和時間設施、國際化和各種實用工具類(字 符串標記生成器、隨機數生成器和位陣列)。
2.常量
Java中的常量指在程式執行中值不能改變的量。
Java常量是什麼?
JAVA常量就是在程式中固定不變的值,是不能改變的資料。例如數字1、字元“a”、浮點數3.2等。在Java中,常量包括整型常量、浮點數常量、布林常量、字元常量等。
1、整型常量
整型常量是整數型別的資料,有二進位制、八進位制、十進位制和十六進位制4種表示形式具體表示形式如下。
二進位制:由數字0和1組成的數字序列。在JDK7.0中允許使用字面值來表示二進位制數,前面要以0b或0B開頭,目的是為了和十進位制進行區分,如0b01101100、0B10110101。
八進位制:以0開頭並且其後由0~7範圍內(包括0和7)的整陣列成的數字序列,如0342。
十進位制:由數字0~9範圍內(包括0和9)的整陣列成的數字序列。如198。
十六進位制:以0x或者0X開頭並且其後由0~9、A~F(包括0和9、A和F)組成的數字序列,如0x25AF。
需要注意的是,在程式中為了標明不同的進位制,資料都有特定的標識,八進位制必須以0開頭,如0711,0123;十六進位制必須以0x或0X開頭,如0xaf3、0Xff;整數以十進位制表示時,第一位不能是0,0本身除外。例如十進位制的127,用二進位制表示為011111八進位制表示為017,用十六進位制表示為0x7F或者0X7F。
2、浮點數常量
浮點數常量就是在數學中用到的小數,分為foat單精度浮點數和double雙精度浮點數兩種型別。其中,單精度浮點數後面以F或f結尾,而雙精度浮點數則以D或d結尾。當然,在使用浮點數時也可以在結尾處不加任何的字尾,此時虛擬機器會預設為double雙精度浮點數。浮點數常量還可以通過指數形式來表示。具體示例如下:
1 |
|
3、字元常量
字元常量用於表示一個字元,一個字元常量要用一對英文半形格式的單引’’號引起來,它可以是英文字母、數字、標點符號以及由轉義序列來表示的特殊字元。具體示例如下:
1 |
|
上面的示例中,’\u00’表示一個空白字元,即在單引號之間沒有任何字元。之所以能這樣表示,是因為Java採用的是Unicode字符集,Unicode字元以\u開頭,空白字元在Unicode碼錶中對應的值為’\u0000’。
4、字串常量
字串常量用於表示一串連續的字元,一個字串常量要用一對英文半形格式的雙引號””引起來,具體示例如下:
1 |
|
一個字串可以包含一個字元或者多個字元,也可以不包括任何字元,即長度為零。
5、布林常量
布林常量即布林型的兩個值true和false,該常量用於區分一個事物的真與假。
6、null常量
null常量只有一個值null,表示物件的引用為空。
3.變數
變數是在程式執行中其值可以改變的量,它是Java程式的一個基本儲存單元。
變數的語法格式:
[訪問修飾符] 變數型別 變數名 [=初始值];
>"變數型別"可從資料型別中選擇。
>“變數名”是定義的名稱變數,要遵循識別符號命名規則。
>中括號中的內容為初始值,是可選項。
4.資料型別轉換
不同的基本資料型別之間進行運算時需要進行型別轉換,除布林型別外,所有基本資料型別進行運算時都要考慮型別轉換,主要應用在算數運算時和賦值運算時。
徹底理解Java中的基本資料型別轉換(自動、強制、提升)
自動型別轉換
自動型別轉換是指:數字表示範圍小的資料型別可以自動轉換成範圍大的資料型別。
如:
long l = 100;
int i = 200;
long ll = i;
具體自動轉換如如下圖所示。
實線表示自動轉換時不會造成資料丟失,虛線則可能會出現資料丟失問題。
自動轉換也要小心資料溢位問題,看下面的例子。
int count = 100000000;
int price = 1999;
long totalPrice = count * price;
編譯沒任何問題,但結果卻輸出的是負數,這是因為兩個 int 相乘得到的結果是 int, 相乘的結果超出了 int 的代表範圍。這種情況,一般把第一個資料轉換成範圍大的資料型別再和其他的資料進行運算。
int count = 100000000;
int price = 1999;
long totalPrice = (long) count * price;
另外,向下轉換時可以直接將 int 常量字面量賦值給 byte、short、char 等資料型別,而不需要強制轉換,只要該常量值不超過該型別的表示範圍都能自動轉換。
強制型別轉換
強制型別轉換我們再清楚不過了,即強制顯示的把一個數據型別轉換為另外一種資料型別。
如:
short s = 199;
int i = s;// 199
double d = 10.24;
long ll = (long) d;// 10
以上的轉換結果都在我們的預期之內,屬於正常的轉換和丟失精度的情況,下面的例子就一樣屬於資料溢位的情況。
int ii = 300;
byte b = (byte)ii;
300 已經超出了 byte 型別表示的範圍,所以會轉換成一個毫無意義的數字。
型別提升
所謂型別提升就是指在多種不同資料型別的表示式中,型別會自動向範圍表示大的值的資料型別提升。
把上面的溢位的例子再改下。
long count = 100000000;
int price = 1999;
long totalPrice = price * count;
price 為 int 型,count 為 long 型,運算結果為 long 型,運算結果正常,沒有出現溢位的情況。
提示:不僅基本資料型別可以進行型別轉換,存在繼承關係的引用資料型別也可以進行自動型別轉換和強制型別轉換。
Java Scanner類的方法及用法
Scanner類簡介
Java 5添加了java.util.Scanner類,這是一個用於掃描輸入文字的新的實用程式。它是以前的StringTokenizer和Matcher類之間的某種結合。由於任何資料都必須通過同一模式的捕獲組檢索或通過使用一個索引來檢索文字的各個部分。於是可以結合使用正則表示式和從輸入流中檢索特定型別資料項的方法。這樣,除了能使用正則表示式之外,Scanner類還可以任意地對字串和基本型別(如int和double)的資料進行分析。藉助於Scanner,可以針對任何要處理的文字內容編寫自定義的語法分析器。
Scanner類的常用方法1
其實上圖的意思就是,比如:nextlnt():只讀取int值,就是隻能讀取整數型別的資料,如果輸入了非整型的資料(浮點型字串等)就會報錯。
nextFloat()、nextDouble()這些也是以此類推,只能讀取符合該型別的資料。
此處重點講一下next()和nextLine()的區別
next():只讀取輸入直到空格。它不能讀兩個由空格或符號隔開的單詞。此外,next()在讀取輸入後將游標放在同一行中。(next()只讀空格之前的資料,並且游標指向本行)
nextLine():讀取輸入,包括單詞之間的空格和除回車以外的所有符號(即。它讀到行尾)。讀取輸入後,nextLine()將游標定位在下一行。
程式碼演示:
public class Text {
public static void main(String []args) {
Scanner input = new Scanner(System.in);
System.out.println("請輸入一個字串(中間能加空格或符號)");
String a = input.nextLine();
System.out.println("請輸入一個字串(中間不能加空格或符號)");
String b = input.next();
System.out.println("請輸入一個整數");
int c;
c = input.nextInt();
System.out.println("請輸入一個double型別的小數");
double d = input.nextDouble();
System.out.println("請輸入一個float型別的小數");
float f = input.nextFloat();
System.out.println("按順序輸出abcdf的值:");
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(d);
System.out.println(f);
}
}
執行結果:
請輸入一個字串(中間能加空格或符號)
我愛祖國!
請輸入一個字串(中間不能加空格或符號)
ILoveChina
請輸入一個整數
520
請輸入一個double型別的小數
12.26e3
請輸入一個float型別的小數
3.1415926
按順序輸出abcdf的值:
我愛祖國!
ILoveChina
520
12260.0
3.1415925
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
Scanner類的常用方法2
程式碼演示:
public class inputInformation {
public static void main(String args[]) {
Scanner scan = new Scanner(System.in); //構造Scanner類的物件scan,接收從控制檯輸入的資訊
System.out.println("請輸入你的姓名");
String name = scan.nextLine();//接收一個字串,可以加除Enter以外的所有符號,包括空格和Tab
System.out.println("請輸入你的ID");
String ID ;
while(scan.hasNextLine()) {// hasNextLine()方法判斷當前是否有輸入,當鍵盤有輸入後執行迴圈
if(scan.hasNextInt()) {// 判斷輸入的值是否為整數型別,當為整數型別時執行迴圈
ID = scan.nextLine();
System.out.println("你輸入的姓名為:"+name);
System.out.println("你輸入的ID為:"+ID);
break;
}else {
System.out.println("請輸入數字哦!");
ID = scan.nextLine();
continue;
}
}
}
}
執行結果如下:
請輸入你的姓名
西地那非
請輸入你的ID
q764323221
請輸入數字哦!
764323221
2.2.1 常用運算子
運算子是一種“功能”符號,用以通知 Java 進行相關的運算,Java 語言中常用的運算子可分為如下幾種:
算數運算子、賦值運算子、比較運算子、邏輯運算子、條件運算子。
一、算數運算子
Java 中常用的算術運算子:加法+求餘%
減法-自增1++
乘法* 自減1--
除法/
其中,自增和自減運算子只能用於操作變數,不能直接用於運算元值或常量。例如 5++ 、 8-- 等寫法都是錯誤的。且++和--既可以出現在運算元的左邊,也可以出現在右邊,但結果是不同滴。
例子1:inta=6;例子2:int a=6;
int b=++a;//先讓a執行自增,在將值賦給變數bint b=a++;//先將值賦給變數b,然後在執行自增
System.out.println(“a=”+a); System.out.println(“a=”+a);
System.out.println("b="+b);輸出結果:a=6,b=6 System.out.println("b="+b);輸出結果:a=6,b=5
二、賦值運算子
賦值運算子是指為變數或常量指定數值的符號。如可以使用“=” 將右邊的表示式結果賦給左邊的運算元。
Java 支援的常用賦值運算子,如下表所示:
三、比較運算子
比較運算子用於判斷兩個資料的大小,例如:大於、等於、不等於。比較的結果是一個布林值( true 或 false )。
Java 中常用的比較運算子如下表所示:
注意:
1、 > 、 < 、 >= 、 <= 只支援左右兩邊運算元是數值型別
2、 == 、 != 兩邊的運算元既可以是數值型別,也可以是引用型別
例子:
int a=16;
double b=9.5;
String str1="hello";
String str2="imooc";
System.out.println("a等於b:" + (a == b) );執行結果:a等於b:false
System.out.println("a大於b:" + (a > b) );a大於b:true
System.out.println("a小於等於b:" + (a <= b) ); a小於等於b:false
System.out.println("str1等於str2:" + (str1 == str2) ); str1等於str2:false
四、邏輯運算子
邏輯運算子主要用於進行邏輯運算。Java 中常用的邏輯運算子如下表所示:
注意:當使用邏輯運算子時,我們會遇到一種很有趣的“短路”現象。
比如:( one > two) && ( one < three )中,如果能確定左邊 one > two執行結果為 false , 則系統就認為已經沒有必要執行右側的 one < three 啦。
同理,在( one > two) || ( one < three )中,如果能確定左邊表示式的執行結果為 true, 則系統也同樣會認為已經沒有必要再進行右側的 one < three 的執行啦!
五、條件運算子
條件運算子( ? :)也稱為 “三元運算子”。
語法形式:布林表示式 ? 表示式1 :表示式2
運算過程:如果布林表示式的值為true,則返回表示式1的值,否則返回表示式2的值
例子:String str=(8>5)? "8大於5”:“8不大於5”
System.out.println(str); 執行結果:8大於5
六、運算子的優先順序
所謂優先順序,就是在表示式中的運算順序。Java 中常用的運算子的優先順序如下表所示: