四、資料型別擴充
1.整數擴充
進位制:二進位制0b、十進位制、八進位制(字首0)、十六進位制(字首0x)
int i=10;//十進位制,輸出10
int i2=010; //八進位制,輸出8
int i3=0x10;//十六進位制,輸出16
2.浮點數擴充
浮點數字長是有限的、離散的,具有舍入誤差,結果只是一個大約數,接近但不等於。
最好完全拒絕使用浮點數進行比較
可以使用BigDecimal類也就是數學工具類進行比較
float f=0.1f; //0.1
double d=1.0/10; //0.1
System.out.println(f==d); //false
System.out.println(f); //0.1
System.out.println(d); //0.1
float d1=23232323f;
float d2=d1+1;
System.out.println(d1==d2); //true
3.字元擴充
- 所有的字元本質還是數字,Unicode編碼。
char c1='a';
char c2='中';
System.out.println(c1);//輸出a
System.out.println((int)c1);//強制轉換,輸出97
System.out.println(c2);//輸出中
System.out.println((int)c2);//強制轉換,輸出20013
char c3='\u0061';//\u是跳脫字元,格式\u0000,\uFFFF
System.out.println(c3);//輸出a
-
跳脫字元 Unicode值
\t:製表 \u0009
\n:換行 \u000a
\b:退格 \u0008
\r:回車 \u000d
\ ":雙引號 \u0022
\’:單引號 \u0027
\ \:反斜槓 \u005c
4.Java中好玩的操作
涉及物件裡的記憶體知識,後面會學到
String a=new String("Hello world"); String b=new String("Hello world"); System.out.println(a==b); //false String c="Hello world"; String d="Hello world"; System.out.println(c==d); //true
5.布林值擴充
程式碼要精簡易讀
boolean flag=true; if(flag==true){} //等價於 if(flag){}
五、型別轉換
-
由於java是強型別語言,所以要進行有些運算的時候,需要用到型別轉換。
-
由低到高排序:
byte,short,char,int,long,float,double
-
運算中,不同型別的資料先轉化為同一型別,然後進行運算。
-
強制型別轉化(高轉低)
格式:(型別)變數名
-
自動型別轉化(低轉高)
-
注意點
-
布林型別不能進行轉化
-
不能把物件型別轉化為不相干的型別
-
把高容量轉換到低容量的時候,強制轉換
char c='a'; int d=c+1; System.out.println(d);//98 System.out.println((char)d);//b
-
轉換的時候可能存在記憶體溢位,或者精度問題!
-
精度問題
System.out.println((int)23.7); //23 System.out.println((int)-45.89f) //-45
-
溢位問題
public class Demo06{ public static void main(String[] args){ //操作比較大的數的時候注意溢位問題 //jdk7新特性,數字之間可以用下劃線分割 int money=10_0000_0000; int year=20; int total=money*year; System.out.println(total);//-1474836480溢位 long total2=money*year;//money*year預設是int System.out.println(tota2);//-1474836480,轉換之前已經存在問題了 long total3=money*((long)year);//先把一個資料轉換為long System.out.println(tota3);//2000000000 } }
-
-
六、變數
-
變數就是可以變化的量
-
java是一種強型別語言,每個變數都必須宣告其型別
-
Java變數是程式中最基本的儲存單元,其要素包括變數型別、變數名和作用域
-
注意事項
- 每個變數都有型別,型別可以是基本型別也可以是引用型別
- 變數名必須是合法的識別符號
- 變數宣告是一條完整的語句,因此每一個宣告都必須以分號結束
public class Demo07{
public static void main(String[] args){
String name="chenhao";//變數型別為引用型別
char x='a';//變數型別為基本型別
}
}
七、作用域
-
作用域:類變數、例項變數、區域性變數
public class Varlable{ static int allClicks=0;//類變數,需要加static關鍵字 String sttr="Hello world";//例項變數 public void method(){ int i=0;//區域性變數,在方法裡 } }
-
舉例說明
public class Demo08{ //這是一個類,類裡面有屬性和方法,這裡屬性可以理解為變數 static double salary=2500;//類變數,加關鍵字static String name;//例項變數,如果未初始化,除基本型別以外其預設值為nall int age;//例項變數在類的裡面方法的外面,從屬於物件.如果未初始化,此型別預設值為0 //浮點型預設值0.0 //布林型預設值是false //字元型預設值u0000還是0 public static void main(String[] args){ //這是main方法 int i=10;//在大括號之內的就是區域性變數:必須宣告和初始化值,只作用於此方法 Demo08 demo08 = new Demo08;//如何呼叫例項變數? System.out.println(demo08.age);//0 System.out.println(demo08.name);//null System.out.println(salary);//2500,可直接輸出類變數 } public void add(){ //這是其他方法 } }
八、常量
-
初始化後不能再改變值!不會變動的值。
-
所謂常量可以理解成一種特殊的變數,它的值被設定後,在程式執行過程中不允許被改變。
final 常量名=值;
public class Demo09{
static final double PI=3.14;//變數型別前面的都是修飾符,修飾符不存在先後順序
//final static double PI=3.14;也可以
public static void main(String[] args){
System.out.println(PI)//3.14
}
}
-
常量名一般使用大寫字元
九、變數的命名規範
-
所有變數、方法、類名:見名知意
-
類成員變數:首字母小寫和駝峰原則
-
區域性變數:首字母小寫和駝峰原則
-
常量:大寫字母和下劃線
-
類名:首字母大寫和駝峰原則
-
方法名:首字母小寫和駝峰原則