dsp 数据类型强制转换_JavaSE第二章总结—数据类型
命名規(guī)范
(變量命名、常量命名、方法命名乃至以后使用開發(fā)框架的配置文件命名,都可使用駝峰命名法)
①類的命名:首字母大寫,單詞語單詞之間首字母大寫。如:StudentId(學(xué)生ID號)、MaxValue(最大值)。
②變量的命名:第一個首字母小寫,其他單詞首字母大寫。如:identityCard firstName getName。
③常量命名:一個活多個單詞組成,所有字母大寫。
④方法的命名:第一個首字母小寫,其他單詞首字母大寫,如setName( )、getName( )。
數(shù)據(jù)類型
上一章也提到過,基本數(shù)據(jù)類型如下表
本章講講各數(shù)據(jù)類型間轉(zhuǎn)換(重點(diǎn))
1)自動類型轉(zhuǎn)換
①當(dāng)把存儲范圍小的值(常量值、變量的值、表達(dá)式計算的結(jié)果值)賦值給了存儲范圍大的變量時,
byte->short->int->long->float->double
char->
int signA = 'a'; //char自動升級為int double signB = 20; //20屬于int類型,該例中int自動升級為double②當(dāng)存儲范圍小的數(shù)據(jù)類型與存儲范圍大的數(shù)據(jù)類型一起混合運(yùn)算時,會按照其中最大的類型運(yùn)算
int?signA= 1;byte signB = 1; double signC = 1.0;double sum = signA + signB + signC; //混合運(yùn)算,升級為存儲范圍大的變量double③當(dāng)byte,short,char數(shù)據(jù)類型進(jìn)行算術(shù)運(yùn)算時,按照int類型處理
byte b1 = 1; byte b2 = 2; byte b3 = (byte)(b1 + b2); //b1 + b2首先升級為int,進(jìn)行加的操作,再強(qiáng)轉(zhuǎn)成bytechar c1 = '0'; char c2 = 'A'; System.out.println(c1 + c2); //1132)強(qiáng)制類型轉(zhuǎn)換
①當(dāng)把存儲范圍大的值(常量值、變量的值、表達(dá)式計算的結(jié)果值)賦值給了存儲范圍小的變量時,需要強(qiáng)制類型轉(zhuǎn)換
double->float->long->int->short->byte
->char
提示:強(qiáng)轉(zhuǎn)有風(fēng)險,可能會損失精度或溢出
②當(dāng)某個值想要提升數(shù)據(jù)類型時,也可以使用強(qiáng)制類型轉(zhuǎn)換
int i = 1; int j = 2; double shang = (double)i/j;提示:這個情況的強(qiáng)制類型轉(zhuǎn)換是沒有風(fēng)險的。
代碼示例 A:
public class DataDemo2 { public static void main(String[] args) { /** * int a=1.5; 編譯失敗,無法賦值 */ int i = (int)1.5; double d=2.5; //int類型和double類型運(yùn)算,結(jié)果是double類型 //int類型會提升為double類型 double e = d + i; System.out.println(e); }}代碼示例B:
public class DataDemo3 { public static void main(String[] args) { short s = 1; /** * s = s + 1 會出現(xiàn)編譯失敗 * * 原因: * s 和 1 做運(yùn)算的時候,1 是 int 類型,s 會被提升為 int 類型 * s+1 后的結(jié)果是 int 類型,將結(jié)果在賦值會 short 類型時發(fā)生錯誤 * short 內(nèi)存2個字節(jié),int 類型4個字節(jié) * 必須將 int 強(qiáng)制轉(zhuǎn)成 short 才能完成賦值 */ s= (short) (s+1); System.out.println(s); }}3)特殊的數(shù)據(jù)類型轉(zhuǎn)換
任意數(shù)據(jù)類型的數(shù)據(jù)與String類型進(jìn)行“+”運(yùn)算時,結(jié)果一定是String類型
System.out.println("" + 1 + 2); //12但是String類型不能通過強(qiáng)制類型()轉(zhuǎn)換,轉(zhuǎn)為其他的類型
String str = "123"; int num = (int)str; //這是錯誤的4)“+=”符號擴(kuò)展范例
示例代碼 A:
public class DataDemo4 { public static void main(String[] args) { short s = 1; s += 1; System.out.println(s); }}分析:
? s += 1 邏輯上看作是 s = s + 1 計算結(jié)果被提升為int類型,再向short類型賦值時發(fā)生錯誤,因為不能將 取值范圍大的類型賦值到取值范圍小的類型。但是, s=s+1進(jìn)行兩次運(yùn)算 , += 是一個運(yùn)算符,只運(yùn)算 一次,并帶有強(qiáng)制轉(zhuǎn)換的特點(diǎn),也就是說 s += 1 就是 s = (short)(s + 1) ,因此程序沒有問題編譯通過, 運(yùn)行結(jié)果是2.
示例代碼 B:
public class DataDemo5 { public static void main(String[] args) { byte b1=1; byte b2=2; byte b3=1+2; //byte b4 = b1 + b2; 編譯失敗 System.out.println(b3); }}分析:
? b3 = 1 + 2 ,1 和 2 是常量,為固定不變的數(shù)據(jù),在編譯的時候(編譯器javac),已經(jīng)確定了 1+2 的 結(jié)果并沒有超過byte類型的取值范圍,可以賦值給變量 b3 ,因此 b3=1 + 2 是正確的。
? 反之, b4 = b2 + b3 , b2 和 b3 是變量,變量的值是可能變化的,在編譯的時候,編譯器javac不確定 b2+b3的結(jié)果是什么,因此會將結(jié)果以int類型進(jìn)行處理,所以int類型不能賦值給byte類型,因此編譯失 敗。
數(shù)據(jù)類型的轉(zhuǎn)換,簡而言之,記住兩句話:
1.程序中的整數(shù)默認(rèn)都是int型,即在方法調(diào)用直接傳入的一個具體的整數(shù)值,默認(rèn)情況下是int型。
2.值域小的的類型可以自動轉(zhuǎn)化為值域大的。值域大的不能直接轉(zhuǎn)化為值域小的,但是確認(rèn)無風(fēng)險的情況下,可以通過強(qiáng)制轉(zhuǎn)化實(shí)現(xiàn)。
重中之重:學(xué)習(xí)的動力,在于美圖
總結(jié)
以上是生活随笔為你收集整理的dsp 数据类型强制转换_JavaSE第二章总结—数据类型的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 知乎2022年总收入36.05亿元,同比
- 下一篇: java ftp上传超时_java -