單引號用來表示字符常量。例如‘A’是一個字符,它與「A」是不一樣的,「A」表示含有一個字符的字符串。程序員
char 類型用來表示在Unicode編碼表中的字符。測試
Unicode編碼被設計用來處理各類語言的全部文字,它佔2個字節,可容許有65536個字符;ASCII碼佔1個字節,可容許有128個字符,是Unicode編碼表中前128個字符。編碼
char eChar = 'a'; char cChar ='中';
Unicode具備從0到65535之間的編碼,他們一般用從’u0000’到’uFFFF’之間的十六進制值來表示(前綴爲u表示Unicode)spa
char c = '\u0061';
Java 語言中還容許使用轉義字符 ‘’ 來將其後的字符轉變爲其它的含義。設計
char c2 = '\n'; //表明換行符
if ( is == true && done == false )
只有新手才那麼寫。
對於任何程序員if ( whether && !done )
都不難理解吧。因此去掉全部的==fasle
和 ==true
。code
package test009; public class test009 { public static void main(String[] args){ /* char c1 = 'a'; char c3 = '是'; char c2 = '\n'; System.out.println(c1); System.out.println(c2); System.out.println(c3); */ char c4 = 'a'; int i = c4 + 2; char c5 = (char)i; System.out.println(c5); for(int j=0;j<26;j++){ char temp = (char)(c4+j); System.out.println(temp); } String str = "abcdefghijklmnopqrstuvwxyz"; System.out.println(str); boolean b = false; if(b){ System.out.print("true"); }else{ System.out.println("false"); } } }
通常規律:表數範圍小的數據類型可自動轉換爲表數範圍大的數據類型。對象
記住下圖便可生命週期
int能夠自動轉換成float,爲啥?主要由於能不能轉換看的是表數範圍,而不是看佔用存儲空間多少字節(int存儲空間8字節、float存儲空間4字節)。ci
特例:整型常量可直接賦值給byte、short、char等類型變量,不須要進行強制類型轉換,只要不超過其表數範圍便可。作用域
//注意1: int i = 100; char a = 100;//正確,這是將整型常量賦值給a char a = i;//錯誤,這是將整型變量賦值給a char a = (char)i;//正確,這是將整型變量強制類型轉換。 //注意2: short b = 12;//OK short b = 12345678;//NO
強制類型轉換,又被稱爲造型,用於顯式的轉換一個數值的類型. 在有可能丟失信息的狀況下進行的轉換是經過造型來完成的,但可能形成精度下降或溢出。
當將一種類型強制轉換成另外一種類型,而又超出了目標類型的表示範圍,就會被截斷成爲一個徹底不一樣的值。
強制類型轉換的語法格式:「(type)var」,運算符「()」中的type表示將值var想要轉換成的目標數據類型。
double x = 3.14; int nx = (int)x;//值爲3 char c = 'a'; int d = c+1; System.out.println(d); System.out.println((char)d);
全部二元運算符都有類型提高問題(+-*/%)
。
提高方向爲更大的容器。
int a=3; long b=4;//則a+b以後將變成long。
int a=20億;int b=10;這時候long c = long(a*b)
沒用,a*b
結果出來的時候已是int型了,應該是long c = (long)a*b
,這樣的寫法是先將a變成long,再提高a*b
結果的類型爲long。
在結果溢出前提高類型,等計算出來就晚了
byte a=10 byte b=10 byte c=10 byte d=10 short e = 10*10*10*10s與 short e = 10s*10*10*10結果不一樣 前者還沒提高類型就已經溢出,後者先提高類型再溢出。 //下面是本集代碼 package test010; public class test010 { public static void main(String[] args){ /* byte b = 123; //byte b2 = 300;//超過表數範圍 //char c = -3;//超過表數範圍 char c2 = 'a'; int i = c2; long d01 = 123213; float f = d01; */ //測試強制轉換 int i2 = -100; char c3 = (char)i2; System.out.println(c3);//超過表數範圍,因此轉換爲徹底不一樣的值,無心義的值 //類型提高問題 int a = 3; long b = 4; double d = 5.3; int c = (int)(a+b); float f = (float)(a+d); int money = 1000000000; int years = 20; //long total = money*years;//返回負數 long total = (long)money*years; System.out.println(total); } }
JDK7提供了二進制整數的類型,只要以0b開頭便可。int a = 0b0101;
針對特別長的數字,讀懂它使人頭疼,這時候用下劃線分割數字,可增長代碼可讀性。long a = 2222_2222_2222;
package test011; public class test011 { public static void main(String[] args){ int a = 0b0000_0000_0000_0000; int b = 1_2312_3131; System.out.println(a); System.out.println(b); } }
咱們經過變量來操縱存儲空間中的數據,變量就是指代這個存儲空間!空間位置是肯定的,可是裏面放置什麼值不肯定!
Java是一種強類型語言,每一個變量都必須聲明其類型。
類型能夠是8種基本類型,也能夠是引用類型。
變量名必須是合法的標識符。
變量聲明是一條完整的語句,所以每個聲明必須以分號結束。
Java變量是程序中最基本的存儲單元,其要素包括變量名,變量類型和做用域。
變量在使用前必須對其聲明, 只有在變量聲明之後,才能爲其分配相應長度的存儲單元,聲明格式爲:
type varName [=value] [{,varName[=value]}] ; //[]表明可選
變量可劃分爲局部變量、實例變量(成員變量member variable)、靜態變量(類變量static variable)
局部變量(local variable):方法或語句塊內部定義的變量。生命週期是從聲明位置開始到」}」爲止。在使用前必須先聲明和初始化(賦初值)。
public void incorrectLocalVariable(){ int i; i = 10; int j = i+5;//編譯報錯,變量i還未被初始化 }
實例變量():方法外部、類的內部定義的變量。從屬於對象,生命週期伴隨對象始終。若是不自行初始化,他會自動初始化成該類型的默認初始值(數值型變量初始化成0或0.0,字符型變量的初始化值是16位的0,布爾型默認是false)
靜態變量(類變量 static variable):使用static定義。 從屬於類,生命週期伴隨類始終,從類加載到卸載。若是不自行初始化,他會自動初始化成該類型的默認初始值(數值型變量初始化成0或0.0,字符型變量的初始化值是16位的0,布爾型默認是false)
全部變量、方法、類名:見名知意
類成員變量:首字母小寫和駝峯原則 : monthSalary
局部變量:首字母小寫和駝峯原則
常量:大寫字母和下劃線:MAX_VALUE
類名:首字母大寫和駝峯原則: Man, GoodMan
方法名:首字母小寫和駝峯原則: run(), runRun()
package test012; public class test012_1 { public static void main(String[] args){ boolean flag = true; char c1,c2; c1 = '\u0041'; c2 = 'B'; int x; x = 9; int y = x; float f = 3.15f; double d = 3.1415926; } } package test012; public class test012_2 { public static void main(String[] args){ final double PI = 3.14; //PI = 3.15; //error double r = 4; double area = PI * r * r; double circle = 2 * PI * r; System.out.println("area = " + area); System.out.println("circle = " + circle); } }