導航:首頁 > 編程語言 > javashort賦值0

javashort賦值0

發布時間:2023-09-21 13:35:15

java中整型字面值常量為什麼可以賦值給short

整型有來32個位數據,源short有16位數據,當聲明一個short變數直接賦值時,賦值區間在 -32768〜32767之間是可以直接賦值(-32768〜32767轉換成二進制剛好占滿16位),當一個整型變數(或常量)直接強制賦值給short時,系統會截取後面16位賦給short,這可能會造成部分數據丟失

Ⅱ java 怎麼直接寫short類型的數

不能直接setVal(1)這樣,會報錯,setVal((Short)1)這樣也報錯,short直接可以用,只要范圍在:-32768 到 32767即可專。long也可以不屬寫L的,直接賦值就可以。

short a = 1;

void method(a){}

或者

void method((short)1){}

原因:如果不轉換或者聲明short的話,默認為int類型。

(2)javashort賦值0擴展閱讀:

Java原來是用作編寫消費類家用電子產品軟體的語言,所以它是被設計成寫高可靠和穩健軟體的。Java消除了某些編程錯誤,使得用它寫可靠軟體相當容易。

Java是一個強類型語言,它允許擴展編譯時檢查潛在類型不匹配問題的功能。Java要求顯式的方法聲明,它不支持C風格的隱式聲明。這些嚴格的要求保證編譯程序能捕捉調用錯誤,這就導致更可靠的程序。

Ⅲ Java 賦值語句short x=1,y=2,z; z=x+y;為什麼是錯的

short類型的數據,在運算時,會被先轉換為int類型的數據老此譽,然後進行運算。
z=x+y;
相當侍段於
z=(int)x+(int)y;
結果也是int類型的,再賦值給short類扒碰型的z時,就會發生錯誤;所以,要加強制轉換。
z=(sort)(x+y);

Ⅳ java語言有幾種數據類型怎樣申明和賦值

一、基本數據類型
整型:byte、short、int、long (在計算機中以二進制補碼格式存儲)

浮點型:float、double (在計算機中以IEEE754格式存儲)

字元型:char (在計算機中以unicode碼格式存儲)

布爾型:boolean (只有true和false兩個值)

二、 1.長整型:long

定義:long a=100;int b=a; (編譯出錯)

給a重新賦值:long a=2147483648; (編譯出錯)

定義:long a=2147483648L;(正確,說明此時可以是long型的取值范圍)

說明在long型的數據後不加L/l時,數據仍為long型,但其取值范圍卻是int型的取值范圍;數據後加L/l時,取值范圍才是long型的取值范圍。

2.浮點型:long

定義:float a=19; 輸出a時為19.0

定義:float a=19.1; (編譯出錯)

定義:float a=19.1f; (正確)

說明在 float型的數據後不加F/f,則數據不能有小數位,但輸出時,能夠輸出一位小數;若在float型的數據後加上F/f,則數據可以有小數位;

三、類型轉換(註:boolean型不會發生類型轉換,基本類型和復合類型不能相互轉換)

1.自動轉換

1)賦值轉換:用於短位元組的數據類型轉換成長位元組的數據類型(byte型的數據不能轉換成char型,short型和char型數據也不能相互轉換)

2)單目運算符提升

++、——運算符不會自動提升,+(正)、-(負)會將byte、short、char型的數據自動轉換成int型的數據

3)雙目運算符提升

如果有一個操作數是double型的,則把另一個轉換成double型;否則如果有一個操作數是float型的,則把另一個轉換成float型;否則 如果有一個操作數是long型的,則把另一個轉換成long型;否則兩個操作數都轉換成int型。

4)三目運算符<op1> ? <op2> : <op3>其中op1必須是boolean型的,而op2和op3兩操作數必須是能夠自動轉換成相同類型的數據,op2和op3會自動提升為兩操作數中位元組較長的一個,並且結果為提升後的類型。

如:byte a1=20;

short a2=10;

boolean b=true;

short c = b ?

a1 : a2;

結果為short型的數據c

2.強制轉換

例子:

int a;

byte b=(byte)a;

定義:a=-126;

(分析:int形的數據有4個位元組,而byte形的數據只有1個位元組,所以只取int型數據的最後一個位元組)

a的原碼: 10000000,00000000,00000000,01111110

補碼: 11111111,11111111,11111111,10000010

法一:r=(10000010)=130 (此時將 10000010 看成是純的二進制數去計算,而不考慮它的符號位); byte型數據范圍〔-128,127〕,由於 r>127,所以 r=r-M (若整型數據值域[-L,R],則M=L+R+1),如果r還不在byte型數據的取值范圍內,則繼續 r=r-M 直至r在其取值范圍內,取得r後,即為byte型的 b .此處r=-126,所以輸出b為-126.

法二:直接將int型數據的最後一個位元組看成是byte型數據的補碼形式,在將補碼轉換成原碼,即得到 b

四、邏輯運算符

1.&&和|| (&&的優先順序要高於||的)

特點:只要左操作數已經得出整個表達式的值,就不再計算右操作數的之值,左右操作數必須為boolean型的。

例子:

boolean test1= ++x==-1 && ++x==1 || ++x=2;
boolean test2= ++y==-1 || ++y==1 && ++y=2;
System.out.println(x+" "+test1);
System.out.println(y+" "+test2);
結果:1 false
2 true

2.&和| (邏輯位運算符)

特點:先把兩個操作數的值計算出來,然後再進行邏輯運算

int x=-1,y=-1;
boolean test1= ++x==-1 & ++x==1 | ++x=2;
boolean test2= ++y==-1 | ++y==1 & ++y=2;
System.out.println(x+" "+test1);
System.out.println(y+" "+test2);
結果: 2 false
2 true

五、移位運算

<< (左移)高位丟失、低位以0填充

>> (右移) 低位丟失、高位以符號位填充

>>> (無符號位右移) 低位丟失、高位以0填充

此運算符不會對左右兩操作數作算術提升,但會對左操作數進行單獨提升,若為byte、short、char、int型,則得到結果為int型,若為long型,則結果為long型,但左右操作數均不能為浮點型,否則出錯。

當左操作數為int型時,右操作數的低5位才有用,這樣可以防止移位超過int型所具有的位數,當左操作數為long型時,右操作數的低6位才有用。

例子:

int a=-2;
short b=-10;
int c=a>>b;

b的補碼:11111111,11111111,11111111,11110110

取b的最後5位, r=(10110)=22;

a的補碼:11111111,11111111,11111111,11111110

將a向右移動22位,再在高位補上1,得到 11111111,11111111,11111111,11111111 ,轉換成原碼得到 c=-1

六、賦值運算

1.簡單賦值運算

表達式: <變數>=<表達式>

左操作數可以事先沒有賦值

表達式的類型必須和變數的類型相同,或能賦值轉換成變數的類型,

2.組合賦值運算

表達式:<變數> op= <表達式>

int a=10;

double b=23.3;

a*=b;

左操作數事先一定要賦值

左邊的類型和右邊的類型不一定要相同,此處a*b得到的是double型的,組合運算符會自動把double型的值轉換成int型的值存入變數a中。

Ⅳ java如何在一個short[]里取指定位的short

System.out.println(s[i]);
//s[i] 即可或取數組第i位的值.數組索引從0開始.

Ⅵ java中不存在byte/short型常量的表示法。但可以把一定范圍內的int型常量賦

例如: int a = 6;
所謂常量,就是單純的一個數字,如『4』、『35』、『525』等,不是用字母表示數字的變數。即使是一個單純的常量,系統也需要一個存儲空間來存儲,以便使用,而整數默認的存儲空間是32位的,所以當寫出6時,系統默認用32位的空間來存儲它,默認是int類型,所以不存在用常量表示的short(16位)和byte(8位)。
但是 「short a = 6」在編譯時不會報錯,一般來說將范圍大的數據類型轉換給范圍小的數據類型時,如果不進行強制類型轉換會報錯,但這里卻沒有。這是因為將int類型的數據轉賦值給short、byte數據時,只要不超過short、int范圍,則會默認轉換(目前可以看成是硬性規定)。
同理,浮點型常量的默認儲存空間大小是64位,即double類型數據(float是32位),則例如「float a = 4.8」會報錯,這是因為4.8在java中的默認儲存形式是double,將一個double類型數據賦值給float類型數據會發生精度丟失,如果不進行強制類型轉換的話則會報錯,改成「float a = 4.8f」則編譯通過,在4.8後加個f相當於強制類型轉換。

閱讀全文

與javashort賦值0相關的資料

熱點內容
機器人喝編程到底該學哪個 瀏覽:704
買房哪個網站好 瀏覽:913
打完新冠疫苗下載什麼app可以查到 瀏覽:879
海信電視用哪個app看網路電視 瀏覽:96
編程什麼時候流行的 瀏覽:683
自學編程新手看什麼書 瀏覽:180
linux全盤tar 瀏覽:454
ps文件命名自動輸入怎麼辦 瀏覽:467
iphone6plus切圖 瀏覽:822
iphone6沒有提示更新 瀏覽:41
cc網路圖教程 瀏覽:650
u盤無法剪切文件到電腦里 瀏覽:497
中海達靜態數據大概多少內存 瀏覽:599
蘋果6s手機文件管理器 瀏覽:107
qq頭像非主流女生捂臉 瀏覽:736
java判斷string編碼 瀏覽:941
excel工資簿如何匹配相同數據 瀏覽:159
視頻課程學習有哪些app 瀏覽:375
鐵模編程怎麼學 瀏覽:298
數學網路研修研究問題有哪些 瀏覽:677

友情鏈接