深刻解析Java中的數據類型與變量。本站提示廣大學習愛好者:(深刻解析Java中的數據類型與變量)文章只能為提供參考,不一定能成為您想要的結果。以下是深刻解析Java中的數據類型與變量正文
Java數據類型轉換(主動轉換和強迫轉換)
數據類型的轉換,分為主動轉換和強迫轉換。主動轉換是法式在履行進程中“悄然”停止的轉換,不須要用戶提早聲明,普通是從位數低的類型向位數高的類型轉換;強迫類型轉換則必需在代碼中聲明,轉換次序不受限制。
主動數據類型轉換
主動轉換按從低到高的次序轉換。分歧類型數據間的優先關系以下:
低--------------------------------------------->高
byte,short,char-> int -> long -> float -> double
運算中,分歧類型的數據先轉化為統一類型,然落後交運算,轉換規矩以下:
強迫數據類型轉換
強迫轉換的格局是在須要轉型的數據前加上“( )”,然後在括號內參加須要轉化的數據類型。有的數據經由轉型運算後,精度會喪失,而有的會加倍准確,上面的例子可以解釋這個成績。
public class Demo { public static void main(String[] args){ int x; double y; x = (int)34.56 + (int)11.2; // 喪失精度 y = (double)x + (double)10 + 1; // 進步精度 System.out.println("x=" + x); System.out.println("y=" + y); } }
運轉成果:
x=45 y=56.0
細心剖析下面法式段:因為在 34.56 前有一個 int 的強迫類型轉化,所以 34.56 就釀成了 34。異樣 11.2 就釀成了 11 了,所以 x 的成果就是 45。在 x 前有一個 double 類型的強迫轉換,所以 x 的值變成 45.0,而 10 的後面也被強迫成 double 類型,所以也釀成 10.0,所以最初 y 的值變成 56。
Java數據類型和變量的界說
Java 是一種強類型的說話,聲明變量時必需指明數據類型。變量(variable)的值占領必定的內存空間。分歧類型的變量占領分歧的年夜小。
Java中共有8種根本數據類型,包含4 種整型、2 種浮點型、1 種字符型、1 種布爾型,請見下表。
關於整型數據,平日情形下應用 int 類型。但假如表現投放廣島長崎的原槍彈釋放出的能量,就須要應用 long 類型了。byte 和 short 類型重要用於特定的運用場所,例如,底層的文件處置或許須要掌握占用存儲空間量的年夜數組。
在Java中,整型數據的長度與平台有關,這就處理了軟件從一個平台移植到另外一個平台時給法式員帶來的諸多成績。與此相反,C/C++ 整型數據的長度是與平台相干的,法式員須要針對分歧平台選擇適合的整型,這便可能招致在64位體系上穩固運轉的法式在32位體系上產生整型溢出。
八進制有一個前綴 0,例如 010 對應十進制中的 8;十六進制有一個前綴 0x,例如 0xCAFE;從 Java 7 開端,可使用前綴 0b 來表現二進制數據,例如 0b1001 對應十進制中的 9。異樣從 Java 7 開端,可使用下劃線來分隔數字,相似英文數字寫法,例如 1_000_000 表現 1,000,000,也就是一百萬。下劃線只是為了讓代碼加倍易讀,編譯器會刪除這些下劃線。
別的,不像 C/C++,Java 不支撐無符號類型(unsigned)。
float 類型有用數字最長為 7 位,有用數字長度包含了整數部門和小數部門。例如:
float x = 223.56F; float y = 100.00f;
留意:每一個float類型前面都有一個標記“F”或“f”,有這個標記就代表是float類型。
double 類型有用數字最長為 15 位。與 float 類型一樣,double 前面也帶有標記“D”或“d”。例如:
double x = 23.45D; double y = 422.22d; double z = 562.234;
留意:不帶任何標記的浮點型數據,體系默許是 double 類型。
年夜多半情形下都是用 double 類型,float 的精度很難知足需求。
分歧數據類型運用舉例:
public class Demo { public static void main(String[] args){ // 字符型 char webName1 = '微'; char webName2 = '學'; char webName3 = '苑'; System.out.println("網站的名字是:" + webName1 + webName2 + webName3); // 整型 short x=22; // 十進制 int y=022; // 八進制 long z=0x22L; // 十六進制 System.out.println("轉化成十進制:x = " + x + ", y = " + y + ", z = " + z); // 浮點型 float m = 22.45f; double n = 10; System.out.println("盤算乘積:" + m + " * " + n + "=" + m*n); } }
運轉成果:
網站的名字是:微學苑 轉化成十進制:x = 22, y = 18, z = 34 盤算乘積:22.45 * 10.0=224.50000762939453
從運轉成果可以看出,即便浮點型數據只要整數沒有小數,在掌握台上輸入時體系也會主動加上小數點,而且小數位全體置為 0。
對布爾型的解釋
假如你有編程經歷,懂得布爾型,請跳過上面的教程,上面的教程針對只要C說話基本的讀者(C說話沒有布爾型)。
在C說話中,假如斷定前提成立,會前往1,不然前往0,例如:
#include <stdio.h> int main(){ int x = 100>10; int y = 100<10; printf("100>10 = %d\n", x); printf("100<10 = %d\n", y); return 0; }
運轉成果:
100>10 = 1 100<10 = 0
然則在Java中紛歧樣,前提成立前往 true,不然前往 false,即布爾類型。例如:
public class Demo { public static void main(String[] args){ // 字符型 boolean a = 100>10; boolean b = 100<10; System.out.println("100>10 = " + a); System.out.println("100<10 = " + b); if(a){ System.out.println("100<10是對的"); }else{ System.out.println("100<10是錯的"); } } }
運轉成果:
100>10 = true 100<10 = false 100<10是對的
現實上,true 同等於1,false 同等於0,只不外換了個稱號,並零丁地成為一種數據類型。