標籤:格式 原碼 相加 寫法 技術分享 bool rgs print 反碼
/* 使用變數的時候要注意的問題: 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語言基礎(回頭複習)