java的自增自減_Java中自增和自減操作符(++/--)的那些事

自增(++)和自減(--)運算符

在JAVA語言中存在著很多運算符,但是在實際開發中我們或許很少用到它們,在初次學習中卻時常出現它們的身影,對于這些運算符的含義和用法,是否還記得呢?

1. 概述

自增操作符(++)和自減操作符(--)是對變量進行加1和減1的操作。

2.分類說明

++和--是對變量進行自增1和自減1的簡寫操作符。許多編程任務中經常需要對變量加1或者減1,所以采用這兩個操作符會方便許多。例如,下面的代碼是對i自增1,而對j自減1:

int i = 3, j = 3;

i++; // i become 4

j--; // j become 2

i++讀為i加加,i--讀為i減減。這些操作符分別稱為后置自增操作符和后置自減操作符,因為操作符++和--放在變量后面。這些操作符也可以放在變量前面,比如:

int i = 3, j = 3;

++i; // i becomes 4

--j; // j becomes 2

--i將i增加1,--j將j減去1。這些操作符稱為前置自增操作符和前置自減操作符。

如你所見,前面的例子中,i++和++i的效果,或者i--和--i的效果是一樣的。然而,當用在表達式中不單純只進行自增和自減時,他們就會產生不同的效果。具體如下表,描述了自增和自減操作符的不同之處,并且給出了示例:

操作符

名稱

描述

示例(假設i=1)

++var

前置自增

將var加1,在語句中使用新的var值

Int j = ++i; // j is 2, i is 2

var++

后置自增

將var加1,但是在語句中使用原來的var值

Int j = i++; // j is 1, i is 2

--var

前置自減

將var減1,在語句中使用新的var值

Int j = --i; // j is 0, i is 0

var--

后置自減

將var減1,但是在語句中使用原來的var值

Int j = i--; // j is 1, i is 0

下面演示前置形式的++(或者--)和后置形式的++(或者--)的補充示例。考慮以下代碼:

int i = 10;

int newNum = 10 * i++; //左邊等價于---》 int newNum = 10 * i;

System.out.print("i is " + i //接上條 i = i + 1;

+ ", newNum is " + newNum);

執行輸出:

i is 11, newNum is 100

上述中i自增1,然后返回i原來的值來參與乘法運算。這樣,newNum的值就為100。如果如下所示將i++換為++i:

int i = 10;

int newNum = 10 * (++i); //左邊等價于---》 i = i + 1;

System.out.print("i is " + i //接上條 int newNum = 10 * i;

+ ", newNum is " + newNum);

執行輸出:

i is 11, newNum is 110

上述中 i自增1,然后返回i的新值,并參與乘法運算。這樣,newNum的值就為110。

下面是另一個例子:

double x = 1.0;

double y = 5.0;

double z = x-- + (++y);

在這三行程序執行完之后,y的值為6.0,z的值為7.0,而x的值為0.0。

Java中從左到右對操作數求值。在右邊操作數的任何部分被求值之前,二元操作符左邊的操作數先求值。這一規則的優先級高于表達式的任何其他規則。下面是一個例子:

int i = 1;

int k = ++i + i * 3;

// 分析可知: ++i求值后返回2。當求i*3的值時,i是2。因此k的值是8。

//------------對比以下代碼------------------

int i = 1;

int k = i*3 + ++i ;

// 分析可知:從左往右,當求i*3的值時,i是1,后算++i,++i整體是2。因此k的值是5。

3.總結

自增在平時的Java筆試和面試中經常作為考查程序員的基礎題多次出現,也是比較容易混淆的知識點。在平時編程中使用自增操作符和自減操作符可以使表達式更加簡短,但也會使他們比較復雜且難以讀懂。應該避免在同一個表達式中使用這些操作符修改多個變量或多次修改同一個變量,如int k = ++i + i * 3。

4.說明

本文摘自《Java語言程序設計與數據結構》(基礎篇)第11版第2章2.14節內容,并由本人結合實例并補充擴展了一些實例代碼,本文用于本人學習及經驗總結。

好了,以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/258151.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/258151.shtml
英文地址,請注明出處:http://en.pswp.cn/news/258151.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Finished yeah!

終于到了最后的博客階段,這時候才知道博客此時此刻是多么的愜意,它成了書寫心聲的自由平臺!耗時一天完成這作業說起來也是蠻辛苦的,編譯器需要新裝,IDE需要熟悉,當然最主要的是之前淺入淺出的C功底在此次作…

《Python語言程序設計》——1.6 開始學習Python

本節書摘來自華章計算機《Python語言程序設計》一書中的第1章,第1.6節,作者:[美]梁勇(Y. Daniel Liang) 更多章節內容可以訪問云棲社區“華章計算機”公眾號查看。 1.6 開始學習Python 關鍵點:…

Tomcat性能調優

1、集成apache 雖然Tomcat也可以作web服務器,但是處理靜態html的速度比不上apache,且其作為web服務器的功能遠不如Apache,因此把apache和tomcat集成起來,講html和jsp功能部分進行明確的分工,讓tomcat只處理jsp部分&…

【轉】sip中的subscribe和notify擴展應用技術

http://blog.csdn.net/hwz119/article/details/3965322轉載于:https://www.cnblogs.com/matthew-2013/p/4917207.html

再讀《被神化的框架》

開發框架,構件,組件非常地多,而且,趨勢是越來越多,特別是在java中。當然也不是說其它平臺的少。而特別是框架越來越被神化了,似乎用之解決一切問題,不用就要敲壞鍵盤。對于老衲這樣的打字員來說…

河南推出近萬億PPP投資計劃 鄭州實現智慧城市全覆蓋

1 近萬億PPP項目啟動 眼下,國內財經新聞的熱點聚焦在PPP開發上,這與PPP支撐國內經濟平衡運行的一支強勁力量正被政府看好。就連二級市場也出現了PPP概念的搶籌現象。 9月27日,股市再一次遭遇拋售,大盤創出階段性新低,然…

java基礎實例代碼_Java基礎實例

打印等腰三角形代碼public class ForForTest{public static void main(String []args){for(int x0;x<5;x){for(int yx1;y<5;y){System.out.print(" ");}for(int z0;zSystem.out.print("* ");}System.out.println();}}}折半查找代碼&#xff1a;//練習…

###《Effective STL》--Chapter3

點擊查看Evernote原文。 #author: gr #date: 2014-09-13 #email: forgeruigmail.com Chapter3 關聯容器 Topic 22: 切勿直接修改set或multiset中的鍵 修改元素的值可以通過下面五步操作&#xff0c;避免作類型轉換。 struct IDNumberLess : public binary…

如何獲取網絡資源?

# encodingutf-8 #python 2.7.10 #xiaodeng #如何獲取網絡資源&#xff1f; #HTTP權威指南 26頁#url就是因特網資源的標準化名稱&#xff0c;他指向每一條電子信息&#xff0c;告訴你他們位于何處&#xff0c;以及如何與之交互。 #URL是瀏覽器尋找信息時所需的資源位置。 #一個…

Loadrunner多服務器連接問題

今天用想增加一個壓力機,在服務器管理列表里怎么也連不上,后來解決方法如下:1. 關閉所有loadrunner組件,并手動結束lr_開頭的進程2.找到惠普loadrunner安裝目錄(C:\Program Files\HP\LoadRunner\bin),手動運行magentproc.exe即可最新內容請見作者的GitHub頁&#xff1a;http://…

java 常量存儲_JAVA?存儲空間 寄存器 堆棧 堆 常量存儲 非RAM存儲

&#xff11;.寄存器這是最快的存儲區&#xff0c;因為它位于處理器內部&#xff0c;數量極其有限&#xff0c;所以寄存器根據需求進行分配&#xff0c;你不能直接控制&#xff0c;也不能在程序中感 覺到寄存器存在的任何跡象。2.堆棧位于通用RAM(隨機訪問存儲器)中&#xff0…

物聯網安防技術融合在細分領域的應用分析

物聯網的核心是業務和應用的創新。物聯網技術與智能化技術的深度融合&#xff0c;加快了行業的智能化發展&#xff0c;促使了行業需求在應用層上的落地。安防技術架構是物聯網架構的一個子集&#xff0c;傳統安防是一個相對保守的行業。現代安防和物聯網在業務和技術上的融合發…

一個強大的工具來模擬數百萬??并發用戶負載測試:Gryphon

Gryphon是由網易自主研發的能夠模擬千萬級別并發用戶的一個軟件&#xff0c;目的是能夠用較少的資源來模擬出大量并發用戶&#xff0c;并且能夠更加真實地進行壓力測試&#xff0c; 以解決網絡消息推送服務方面的壓力測試的問題和傳統壓力測試的問題。Gryphon分為兩個程序&…

java 反射與泛型_Java基礎系列 - 泛型和反射機制

package com.test5;import java.lang.reflect.Field;import java.lang.reflect.Method;/*** Java泛型和反射機制(泛型的好處 代碼安全簡單&#xff0c;自動裝箱拆箱&#xff0c;提高代碼的重用率)*/public class test5 {public static void main(String[] args) {Employer empl…

Linux環境下的Popush部署——張凱

完成情況&#xff1a; 已按照相關部署文檔完成了所有任務&#xff0c;包括軟件包的安裝與配置&#xff0c;以及對各種開發語言的支持&#xff0c;以及gdb的調試功能的支持 遇到的主要問題&#xff1a; 由于從大二以來我基本上所有的開發工作都是在Linux下做的&#xff0c;因此對…

【c++】標準模板庫STL入門簡介與常見用法

一、STL簡介 1、什么是STL STL&#xff08;Standard Template Library&#xff09;標準模板庫&#xff0c;主要由容器、迭代器、算法、函數對象、內存分配器和適配器六大部分組成。STL已是標準C的一部分&#xff0c;使用STL開發系統可以提高開發效率。 2、容器&#xff08;Cont…

強連通分量(學習心得)

定義&#xff1a;有向圖強連通分量&#xff1a;在有向圖G中&#xff0c;如果兩個頂點vi,vj間&#xff08;vi>vj&#xff09;有一條從vi到vj的有向路徑&#xff0c;同時還有一條從vj到vi的有向路徑&#xff0c;則稱兩個頂點強連通如果有向圖G的每兩個頂點都強連通&#xff0c…

java for的增強_Java基礎之增強for循環

平時大家for循環應該用的不少&#xff0c;特別是增強for循環&#xff0c;簡單快捷。但是在增強for中做刪除操作&#xff0c;卻會拋出java.util.ConcurrentModificationException&#xff0c;一起來看下。上面的代碼&#xff0c;在for循環執行完if中的remove&#xff0c;遍歷下一…

window.history 和 DWZ 框架

DWZ框架的ajax請求返回的一般都是一個HTML片段&#xff0c;整個頁面是由一個個HTML片段組成的&#xff0c;可以由TAB切換其內容&#xff0c;但是只有一個body和HEAD&#xff0c;一般head 和 菜單欄是不會動的。 今天遇到一個問題&#xff0c;當一個點擊進入一個tab頁面時&#…

大道至簡(第六章)讀后感

大道至簡&#xff08;第六章&#xff09;讀后感 還是不樂意去讀&#xff0c;但總算可以耐心的讀下去了&#xff0c;這也許也算是讀大道至簡以來的收獲之一吧。第六章的題目是從編程到工程&#xff0c;看到工程二字&#xff0c;讓我不由想起了前幾天和高中同學聊天。他報的燕大土…