JAVA學習筆記2——字元型+布林變數+型別轉換
阿新 • • 發佈:2019-01-27
最近在看JAVA教學的視訊,覺得老師講的很好,同時借用原始碼還有筆記來撰寫本系列部落格,記錄自己的學習內容,同時也供看到的人學習。
開始寫第二篇了哦~
繼上篇介紹完JAVA的數值型別後,我們再來看看字元型(char)和布林變數(boolean)。
上一篇已經提到過JAVA內部採用的字符集是Unicode字符集,每一個字元佔據兩個位元組的大小,這和C++是不一樣的哦,除了正常的各國語言的一個字元外,char型別下還有很多特殊功能的字元,下面的程式碼片段介紹幾種經常見到並且實用的。
好了,介紹完這四種基本資料型別之後,我們看看它們之間的型別轉換吧!<span style="font-size:14px;">//測試char public class TestCharType { public static void main(String[] args){ char c1 = 'a'; char c2 = '尚'; //unicode 2: 0-65535 char c3 = '\n'; //表示換行符 char c4 = '\''; //用轉義字元來輸出單引號 char c5 = '\t' //用製表符來拉開固定間距 System.out.print(c1); System.out.print(c3); System.out.print(c2); char c4 = 'a'; int i = c4 + 2; //i是99 char c5 = (char)i; //強制轉型(常用在高級別往低級別轉) System.out.println(c5); //迴圈列印a-z for(int j=0;j<26;j++){ char temp = (char)(c4+j); System.out.print(temp); } //java裡面的字串,是定義成:String類了。 String str = "abcdefghijklmnopqrstuvwxyz"; System.out.println("\n"+str); //boolean型別只有一位 boolean b = false; //false if(b){ System.out.println("true"); } } }</span>
JAVA裡面的基本資料型別轉換分為自動型別轉換與強制型別轉換,先來看自動型別轉換:
再開看看強制型別轉換:
對比上述兩種型別轉換我們可以得出結論:JAVA轉型的原則是不是程式設計者的資料丟失精度,所以向著大容量資料型別方向轉型的就是自動型別轉換,而相比之下,強制型別轉換則既有“順流而下”也有“逆流而上”,最大的不同時不考慮精度是否會丟失而只是規定了一個特定的“目的地”。
下面的程式碼是相應的實現以及兩個小的實踐題,大家仔細看看哦:
<span style="font-size:14px;">//測試自動轉型和強制轉型 public class TestCast { public static void main(String[] args){ /* byte b = 123; //byte b2 = 300; 這兩個不能轉型 //char c = -3; char c2 = 'a'; int i = c2; long d01 = 123213; float f = d01; //測試強制轉型 int i2 = -100; char c3 = (char)i2; //-100超過char的表數範圍(0~65535),所以轉換成完全不同的值,無意義的值! System.out.println(c3); */ /* //表示式中的型別提升問題 int a = 3; long b = 4; double d = 5.3; int c = (int)(a+b); //做所有的二元運算子(+-/*%),都會有型別提升(向容量大的轉換)的問題!損失精度的都不會正常進行! float f = (float)(a + d); */ int money = 1000000000; //10億 int years = 20; long total = money*years; //注:返回的是負數,因為money和years都是int型,乘完還是int型,已經溢位成為負數,再賦給long型的total也仍然顯示為負數! long total = (long)money*years; //可以只對money進行轉型,然後進行自動轉型,便可以正常顯示 long total = (long)(money*years); //這樣返回仍然為負數,原因同第一個 System.out.println(total); //一個人70年心跳多少次 long times = 70L*60*24*365*70; //同理,其中一個數字(最好不要是最後一個數字)轉換為long型 System.out.println(times); } }</span>