Java語言基礎(回頭復習)
阿新 • • 發佈:2017-07-14
double類型 最終 blog 默認 不能 ole byte 出錯 技術
/* 使用變量的時候要註意的問題: A:作用域 變量定義在哪個大括號內,它就在這個大括號內有效。 並且,在同一個大括號內不能同時定義同名的變量。 B:初始化值 沒有初始化值的變量不能直接使用。 你只要在使用前給值就行,不一定非要在定義的時候立即給值。 推薦在定義的時候給值。 定義變量的格式: a:數據類型 變量名 = 初始化值; b:數據類型 變量名; 變量名 = 初始化值; C:在一行上建議只定義一個變量 可以定義多個,但是不建議*/ public class Text2 { public static void main(String[] args) { //定義變量 int x = 100; //錯誤,不能有同名的 //int x = 200; //定義變量必須給值 //int y; //System.out.println(y); int z; z = 100; System.out.println(z);//在一行上定義多個變量 //int a = 10; int b = 20; int c = 30; //上面的寫法可以,但是不建議。 int a = 10; int b = 20; int c = 30; //int d, e; //d = 40; //e = 50; //int f,int g; //錯誤 //int h; int i; //正確 } }
/* +是一個運算符(我們等會講解)。做加法運算的。 一般來說,我們在運算的時候,要求參與運算的數據類型必須一致。 註意: boolean類型不能轉換為其他的數據類型 默認轉換(從小到大的轉換) A:byte,short,char—int—long—float—double B:byte,short,char相互之間不轉換,他們參與運算首先轉換為int類型*/ public class Text { public static void main(String[] args) { //直接輸出的方式做加法 //System.out.println(3 + 4); //兩個int類型做加法 int x = 3; int y = 4; int z = x + y; System.out.println(z); //定義一個byte類型,一個int類型,做加法,他們參與運算首先轉換為int類型 byte a = 3; int b = 4; System.out.println(a + b); //可能損失精度 //byte c = a + b;,因為 b 為int整數型,從int到byte精度可能會降低,所以此處出錯 int c = a + b; System.out.println(c); } }
/* 強制轉換: 從大的數據類型到小的數據類型。 格式: 目標數據類型 變量 = (目標數據類型) (被轉換的數據); 註意: 不要隨意的去使用強制轉換,因為它隱含了精度損失問題。 */ public class Text { public static void main(String[] args) { byte a = 3; int b = 4; //int c = a + b;這個肯定沒有問題 //byte c = a + b; 這個是有問題的 //用強制類型轉換改進 byte c = (byte) (a + b); System.out.println(c); } }
/* 思考題1:請問下面這個有沒有問題 double d = 12.345; float f = d; 思考題2:看看下面兩個定義有沒有區別呢? float f1 = (float)12.345; float f2 = 12.345f; 解析:f1其實是通過一個double類型轉換過來的。 而f2本身就是一個float類型。 */ public class Text { public static void main(String[] args) { //把double賦值給float,加了強制類型轉換 double d = 12.345; float f = (float)d; } }
/* 面試題: byte b1=3,b2=4,b; b=b1+b2; b=3+4; 哪句是編譯失敗的呢?為什麽呢? 解析:b = b1 + b2; 這個是有問題的。 因為變量相加,會首先看類型問題,最終把結果賦值的也會考慮類型問題。 常量相加,首先做加法,然後看結果是否在賦值的數據類型範圍內,如果不是,才報錯。 */ public class Text { public static void main(String[] args) { //定義了三個byte類型的變量,b1,b2,b //b1的值是3,b2的值是4,b沒有值 byte b1 = 3,b2 = 4,b; //b = b1 + b2; //這個是類型提升,所有有問題 b = 3 + 4; //常量,先把結果計算出來,然後看是否在byte的範圍內,如果在就不報錯。 } }
/* byte b = 130;有沒有問題?如果我想讓賦值正確,可以怎麽做?結果是多少呢? 練習:byte b = (byte)300; */ public class Text { public static void main(String[] args) { //因為byte的範圍是:-128到127。 //而130不在此範圍內,所以報錯。 //byte b = 130; //我們可以使用強制類型轉換 byte b = (byte) 130; //結果是多少呢? System.out.println(b); } } /* 分析過程: 我們要想知道結果是什麽,就應該知道是如何進行計算的。 而我們又知道計算機中數據的運算都是補碼進行的。 而要得到補碼,首先要計算出數據的二進制。 A:獲取130這個數據的二進制。 00000000 00000000 00000000 10000010 這是130的原碼,也是反碼,還是補碼。 B:做截取操作,截成byte類型的了。 10000010 這個結果是補碼。 C:已知補碼求原碼。 符號位 數值位 補碼: 1 0000010 反碼: 1 0000001 原碼: 1 1111110 */
/* 看程序寫結果 通過字符和一個整數相加,我們要知道ASCII碼表。 通過看完這張表以後,我們要記住三個值: ‘a‘ 97 ‘A‘ 65 ‘0‘ 48 */ public class Text { public static void main(String[] args) { //直接輸出一個字符 System.out.println(‘a‘); //輸出結果為 a //輸出一個字符和一個整數做加法 System.out.println(‘a‘+1); //輸出結果為 98 } }
Java語言基礎(回頭復習)