Java中x+=y和x=x+y兩種實現的區別
先看下邊兩段程式碼,各有什麼錯?
例一:
short s1 = 1; s1 = s1 + 1;
例二:
short s1 = 1; s1 += 1;
第一段程式碼無法通過編譯,由於 s1+1 在運算時會自動提升表示式的型別至 int 型,再賦值給 short 型別的 s1 時將發生強制型別轉換的錯誤。
第二段程式碼卻能夠正確編譯。
這兩種實現方式有什麼不同嗎?
答案是:
雖然 x+=y 和 x=x+y 兩個表示式在一般情況下可以通用,但是在 Java 環境中執行時存在一些細微的差別。這差別在於, += 除了實現 + 功能外,還會根據接收變數的型別自動進行型別的強制轉換。
相關推薦
java面試題:java中的單例設計模式及兩種實現方法的程式碼舉例
java面試時經常會問到關於單例設計模式,因為它能考察的知識點較多且在開發中經常用到。那我就來說一說我對於單例設計模式的一些淺見。首先,在Java中,什麼是單例呢?就是保證類在記憶體中只有一個物件。那麼
JAVA中使用springBoot和Ehcache3.X無xml配置和xml配置
我用的是springBoot和Ehcache3.31.在maven的pom.xml匯入ehcache3.3.0依賴<!-- Ehcache 快取--> <dependency> <groupId>org.ehcache</gr
JAVA中值傳遞和引用傳遞的三種情況
前言 我們都知道,java中資料型別分為基本資料型別和引用資料型別。 基本資料型別 整型:byte,short,int,long 浮點型:float,double 字元型:char 布林型:boolean 引用資料型別 陣列 類 介面 方法的引數
c++建構函式成員初始化中賦值和初始化列表兩種方式的區別
先總結下: 由於類成員初始化總在建構函式執行之前 1)從必要性: a. 成員是類或結構,且建構函式帶引數:成員初始化時無法呼叫預設(無參)建構函式 b. 成員是常量或引用:成員無法賦值,只能被初始化 2)從效率上: 如果在類建構函式裡賦值:在成員
java中關於給屬性賦值的兩種方法
兩種方法說明 對於一個類中的成員變數(屬性),如果都被設定成了private私有資料型別,則對外給屬性設定了get和set方法 , 外部程式中給這些屬性設定值,有兩種方式.
二叉樹的高度 java 利用遞迴和層次遍歷兩種方法
原文:http://blog.csdn.net/fangchao3652/article/details/53456468 ackage edu.lnu.fang.BiTree; import java.util.ArrayList; import java.util.L
在Java中按位元組獲得字串長度的兩種方法
本文為原創,如需轉載,請註明作者和出處,謝謝! 由於Java是基於Unicode編碼的,因此,一個漢字的長度為1,而不是2。但有時需要以位元組單位獲得字串的長度。例如,“123abc長城”按位元組長度計算是10,而按Unicode計算長度是8。為了獲得10,需要從頭掃描根據
mysql中SELECT INTO 和 INSERT INTO SELECT 兩種表複製語句
1.INSERT INTO SELECT語句 語句形式為:Insert into Table2(field1,field2,...) select value1,value2,... from Table1 要求目標表Table2必須存在,由於
Java中多個視窗間呼叫的兩種方式
Eclipse中的WindowBuilder外掛很適合用在小型程式的使用者介面開發上,這種直觀快速的方法不僅易於操作,而且還能在一定程度上提高效率。 標題中的“兩種方式”,實際上指的就是視窗間呼叫的:1.純程式碼實現方式,和2.WindowBuilder外掛實現方式。
微信小程式下拉載入和上拉重新整理兩種實現方法
方法一:onPullDownRefresh和onReachBottom方法實現小程式下拉載入和上拉重新整理 首先要在json檔案裡設定window屬性 屬性
PHP查詢資料庫中滿足條件的記錄條數(兩種實現方法)
第一種方法:查詢時候直接統計 複製程式碼 程式碼如下: $sql="SELECT COUNT(*) AS count FROM TABLE WHERE id='$id'"; $result=mysql_fetch_array(mysql_query($sql)); $count=$result['cou
多執行緒兩種實現區別-繼承Thread和實現Runable
一 前面一種比較簡潔。後面一種更靈活,因為java可以實現多個介面,但是隻能繼承一個類 二 適合於資源的共享 如果不涉及 多執行緒直接資源共享用Thread 比較好,否則實現Runable較好 Thread其實也是實現了Runnable介面 Thread中的start(
Java判斷單鏈表是否有環的兩種實現方法
http://blog.jobbole.com/106227/ 方法一:首先從頭節點開始,依次遍歷單鏈表的每一個節點。每遍歷到一個新節點,就從頭節點重新遍歷新節點之前的所有節點,用新節點ID和此節點之前所有節點ID依次作比較。如果發現新節點之前的所有節點當中存
Java設計模式之觀察者模式的兩種實現
觀察者模式就是定義物件之間的一對多依賴,這樣一來,當一個物件狀態發生改變時,它的所有依賴者都會收到通知並自動更新。 這樣的好處就是兩個或多個物件之間鬆耦合,它們依然可以互動,但不太清楚彼此的細節。觀察者模式提供了一種物件的設計,讓主題和觀察者之間鬆耦合。鬆耦合的設
Java中x+=y和x=x+y兩種實現的區別
先看下邊兩段程式碼,各有什麼錯? 例一: short s1 = 1; s1 = s1 + 1; 例二: short s1 = 1; s1 += 1; 第一段程式碼無法通過編譯,由於 s1+1 在運算時會自動提升表示式的型別至 int 型,再賦值給 short 型別的 s1
python中的print(x, end=)和print(x, sep=)
拼接 \n 打印 code 默認打印 輸出 col clas range print(x, end=) for i in range(10): print(i) 輸出結果: 0 1 2 3 4 5 6 7 8 9 for i in range(10):
1/X+1/Y=1/N!的兩種O(n)做法
題目大意: 求1/X+1/Y=1/N!的答案對數。 解題思路1: 設 m=n! ,由等式知x,y必定大於n!,所以再設 x=n!+k=m+k 帶入 1/m=1/x+1/y 中化簡得到y=m*m/k+
自定義的類建立的物件使用len(x)函式和abs(x)函式
class Mylist: '''自定義的容器類,內部使用內建的列表儲存資料''' def __init__(self, iterable): self.data = [x for x in iterable] def __repr__(self): return "Mylist(%s)" % self.
Hadoop1.x版本和Hadoop2.x版本架構原理
MapReduce 1.x 架構 MapReduce 1.x 採用 Master/Slave 架構,由全域性唯一的 Jobtracker 和多個 TaskTacker 組成,並且在Client中提供一系列的api供程式設計和管理使用。 1.client 提供a
概率論:p(x|theta)和p(x;theta)的區別
求解最大似然估計時發現有兩種表示方法 from:Gregor Heinrich - Parameter estimation for text analysis from:http://blog.csdn.net/pipisorry/article/detail