1. 程式人生 > >JAVA-初步認識-第三章-比較運算符邏輯運算符

JAVA-初步認識-第三章-比較運算符邏輯運算符

表示 font 認識 集中 情況 amp demo .cn 邏輯運算

一. 運算符的總類

先列舉所有的運算符類型:算術運算符,賦值運算符,比較運算符,邏輯運算符,位運算符,三元運算符。

命名為什麽叫運算符,英文叫operator, 難道說這是對操作的符號化表示?可以著一些英文的原版書籍來看。

本節將討論比較運算符和邏輯運算符,這些仍舊屬於java語言基礎。等到講完語法,函數,和數組之後,才是真正進入java語言的研究。

二.

在探討比較運算符之前,先將視頻中遇到的一個問題再重新學習一下。這裏DOS報的錯是沒有找到主類,產生這樣問題的原因只有兩個:java運行的類名寫錯,類的路徑不對。這裏重點說明第二個錯誤。類的路徑不對,java都是在當前路徑下運行的class類文件,路徑不對,說明我們對路徑進行了更改。在DOS中,輸入set classpath,控制臺將直接顯示類路徑。這裏還要明白一點,系統中本來是沒有classpath的,我們為了能在任意目錄下,啟動某一些class類文件,從而將這些類文件集中放在一個文件夾中,這個文件夾叫classpath。

對於classpath知識點,背後也有一些東西值得深思。首先就是設置這個classpath,有永久的,暫時的,借用的。

技術分享

註意:上面理解的classpath還是有一些,偏差。舉例來說明,如果開始在DOS中展示定義了classpath的路徑,且DOS窗口一直沒關閉,set classpath=d:\source\1,然後在d:\source\01文件夾中編寫Demo.java源程序,接著在DOS中編譯,和運行,看DOS的檢測結果。

最終的結果顯示,我們開始編寫的源程序是在d:source\01文件夾中的Demo.java,接著DOS進行了編譯,編譯的Demo.class運行文件和Demo.java源文件是在一個文件夾中的。但是java命令工具在啟動class運行文件時,是直接去d:source\1文件中去尋找Demo.class類文件的。這就意味著,set classpath=..... 是要求java工具直接去對應的文件中去搜尋某一類文件,如果沒有,就會顯示為找不到或無法加載主類。

三. 比較運算符

比較運算符運算完都會有結果。只要是運算符,運算結束後都會有結果。

比較運算符得出的結果不是true,就是false。

常見的大家都知道,大於,小於...這裏介紹了一種特殊的比較運算符,等等於或者是相等於。

看下面的兩個語句: System.out.println(3=2); System.out.println(3==2); 經過DOS的驗證,前一個是錯誤的,後一個是正確的。

技術分享

四. 邏輯運算符

在這裏我們又回歸到如何學習的問題上來。什麽是邏輯?為什麽要有邏輯運算符?

邏輯就是一種關系,有這麽幾種類型,與,或.....。

邏輯運算符的出現是為java語言定制的。在日常生活中,我們可以直接寫2<x<5; 但是在java語言中無法這麽寫,這是兩個表達式。為什麽不能這麽寫?因為是兩個表達式就不行?

視頻中的說法就是java不支持這種兩個表達式的,因此構建了邏輯運算符,來連接兩個boolean類型的表達式。

五. 邏輯運算符的分類

上面談論邏輯運算符是連接boolean類型的表達式的,boolean類型就是輸出為true或false,這就是邏輯運算。

邏輯運算有多種,先描述兩種,&與,|或,符號比較獨特。

&與邏輯運算符的使用:int x=3; System.out.println(x>2&x<5); 在DOS中輸出為true。由此可以看出,邏輯運算符連接的是邏輯表達式,輸出的也是boolean類型的數據。

這裏直接在輸出語句中進行邏輯運算,那麽可不可以在輸出語句的外面進行,然後由輸出語句輸出呢?結果如下:

技術分享

而視頻中的做法是直接在輸出語句中的,截圖如下:

技術分享

這說明輸出語句可以直接當成一個計算的場地來用。為什麽java要這樣設置呢?這麽做的原理是什麽?

我又補充了一種Java語句,顯示如下,ture和false是關鍵字,邏輯運算符本質上對兩個boolean類型的數據進行對比,通過與運算的法則(也就是and運算,判斷得出結果是true還是false)。

技術分享

註意:我們分析上面三種情況,視頻中,只講解了System.out.println(x<5&x>2); 這種情況。在實際的分析中,我覺著這麽長的式子,底層有三個步驟。先是對&左右兩側進行判斷,得出左右兩側的邏輯運算的結果,ture還是false,然後再對這兩個boolean數據進行&運算,最後得出一個結果。寫在輸出語句外面和裏面是沒什麽區別的,但是如果寫成true&true這種形式的話,相當於省去了兩個運算,直接進行了第三步。

註意:對於false&false,我按照上面的三種形式寫了一下,結果如下,挺有意思:

第一種,在輸出語句外面定義好了,最後用輸出語句直接輸出,DOS顯示運行正常。

技術分享

第二種,在輸出語句內直接進行運算,DOS直接報錯。這說明底層在第一種和第二種形式下,進行的運算是不一樣的。為什麽在這種情況下DOS會報錯?我又換了一個輸出語句,在int a=3; System.out.println(x<1&x>2);按道理來說這是true&false的形式,但是DOS依舊報錯。但是,當我在輸出語句中直接書寫System.out.println(true&false);DOS結果顯示能夠正常運行。這就很奇怪,背後的機制是什麽?難道說輸出語句中如果直接進行計算的話,&運算的兩邊必須給定是正確的,不然就報錯,那麽就給定boolean數據,這就不會管。→上面的說法完全是錯誤的,說不通,仔細地觀察下面的截圖,我們發現,前後變量寫錯了,定義時寫的是a,但是在輸出語句中寫的是x,這就導致DOS報錯為找不到x。

在這裏,我突然理解了那句話,計算機是幫助人們運算的工具。我們通過學習這些高級計算機語言,來編寫一些程序。這些程序完全就是將人們日常生活中的計算思路全部化為代碼,利用這些程序代替人們來進行計算,乃至於超越人們的計算能力。

技術分享

五. |或運算符

對於|運算符,按照上面&運算符的形式,不在做更多的講解。

這裏再插一句話,計算機高級語言就是一種極端符號化的集合體,將所用到的各種東西各種符號化,比如這裏所講的各種邏輯運算,都要將其符號化,並且利用鍵盤上原有的符號,諸如:%,^,&....來代表。

JAVA-初步認識-第三章-比較運算符邏輯運算符