Java中的變量、基本數據類型及它們之間的轉換
1.變量:存數的,代詞,指代它所存的那個數
1)聲明:int a; //聲明一個整型的變量,名爲a
int b,c,d; //聲明三個整型的變量,名爲b,c,d
2)初始化:第一次賦值
2.1)聲明同時初始化
int a = 100;
2.2)先聲明後初始化
int a;
a = 100;
3)使用:
3.1)對變量的使用就是對它所存的那個數的使用
int a = 5; //聲明整型變量a並賦值爲5
int b = a+10; //取出a的值5,加10後,再賦值給整型變量b
System.out.println(b); //輸出變量b的值15
System.out.println("b"); //輸出b,雙引號中的原樣輸出
a = a+10; //取出a的值5,加10後,再賦值給a
//在a本身基礎之上增10
System.out.println(a); //輸出變量a的值15
3.2)變量的操作必須與數據類型匹配
int a = 3.14; //編譯錯誤,數據類型不匹配
3.3)變量在用之前必須聲明並初始化
System.out.println(m); //編譯錯誤,m未聲明
int m;
System.out.println(m); //編譯錯誤,m未初始化
4)命名:
4.1)只能包含字母、數字、_和$符,並且不能以數字開頭
4.2)嚴格區分大小寫
4.3)不能使用關鍵字
4.4)可以中文命名,但不建議
建議:"英文的見名知意"、"駝峯命名法"
2.基本數據類型:
1)int:整型,4個字節,-21個多億到21個多億1.1)整數直接量默認爲int型,但不能超範圍,超範圍則編譯錯誤
1.2)兩個整數相除,結果還是整數,小數位無條件捨棄
1.3)運算時超出範圍則發生溢出,溢出是需要避免的
2)long:長整型,8個字節,很大很大很大
2.1)長整型的直接量,需在數字後加L或l
2.2)算術運算時若有可能溢出,建議在第1個數字加L
2.3)System.currentTimeMillis()用於獲取自
1970.1.1零時到此時此刻的毫秒數
3)double:浮點型,8個字節,很大很大很大
3.1)浮點型直接量默認爲double型,表示float時需在數字後加f或F
3.2)浮點型數據參與運算時,有可能會出現舍入誤差
4)boolean:布爾型,1個字節
4.1)只能裝true和false
5)char:字符型,2個字節
5.1)採用Unicode字符集編碼,每個字符都有一個對應的碼
表現形式爲字符char,但實質上是碼int(0到65535之間)
(ASCII碼: 'a'--97 'A'--65 '0'--48 )
5.2)字符直接量必須放在單引號中,有且僅有一個
5.3)特殊符號需要通過\來轉義
3.基本數據類型間的轉換:
數據類型從小到大依次爲:byte,short,int,long,float,double
char,
1)兩種方式:
1.1)自動類型轉換:小類型到大類型
char -->int
byte-->short--> int--> long--> float-->double
byte b = 12;
short s = b; //正確的
int i = b; //正確的
i = s; //正確的
float f = 3.14; //報錯的
大轉小,不能自動轉:因爲有可能會造成數據精度丟失或數據溢出
1.2)強制類型轉換:大類型到小類型
(要轉換成爲的數據類型)變量
強轉有可能會溢出或精度丟失
long l = 234;
int i = (int)l;
容易出問題的類型轉換:
char --> int 自動轉換
char --> byte 強制轉換
byte --> char 強制轉換
short --> char 強制轉換
char -->short 強制轉換
2)兩點規則:
2.1)整數直接量可以直接賦值給byte,short,char,
但不能超出範圍
2.2)byte,short,char型數據參與運算時,
先一律轉換爲int再運算
byte + byte -- >int
byte + short -- >int
char + char -->int
導致的結果:
byte b1 = 1,b2 = 3;
byte b3 = b1+b2; //報錯的
注意點:
byte b1 = 1,b2 = 3;
byte b3 = b1+b2; //報錯的
byte b4 = 1+3; //正確的
原因:
如果是整數直接量進行運算,編譯器在編譯期會進行類型優化。而如果是 變量,編譯期不會進行優化。
4.Scanner的用法:
1)在package下:
import java.util.Scanner;
2)在main()方法中:
Scanner scan = new Scanner(System.in);
3)在第2步之下:
System.out.println("請輸入年齡:");
int age = scan.nextInt();
System.out.println("請輸入價格:");
double price = scan.nextDouble();