java的八種基本數據類型
1.Java的八大底子數據類型
Java底子類型共有八種,底子類型能夠分為三類,字符類型char,布爾類型boolean以及數值類型byte、short、int、long、float、double。數值類型又能夠分為整數類型byte、short、int、long和浮點數類型float、double。JAVA中的數值類型不存在無符號的,它們的取值規劃是固定的,不會跟著機器硬件環境或許操作系統的改動而改動。實踐上,JAVA中還存在另外一種底子類型void,它也有對應的包裝類java.lang.Void,不過我們無法直接對它們進行操作。8中類型標明規劃如下:
byte:8位,最大存儲數據量是255,存放的數據規劃是-128~127之間。
short:16位,最大數據存儲量是65536,數據規劃是-32768~32767之間。
int:32位,最大數據存儲容量是2的32次方減1,數據規劃是負的2的31次方到正的2的31次方減1。
long:64位,最大數據存儲容量是2的64次方減1,數據規劃為負的2的63次方到正的2的63次方減1。
float:32位,數據規劃在3.4e-45~1.4e38,直接賦值時有必要在數字后加上f或F。
double:64位,數據規劃在4.9e-324~1.8e308,賦值時能夠加d或D也能夠不加。
boolean:只需true和false兩個取值。
char:16位,存儲Unicode碼,用單引號賦值。
Java決議了每種簡略類型的大小。這些大小并不跟著機器結構的改變而改變。這種大小的不可更改正是Java程序具有很強移植能力的原因之一。下表列出了Java中定義的簡略類型、占用二進制位數及對應的封裝器類。
簡略類型
boolean
byte
char
short
Int
long
float
double
void
二進制位數
1
8
16
16
32
64
32
64
—
封裝器類
Boolean
Byte
Character
Short
Integer
Long
Float
Double
Void
關于數值類型的底子類型的取值規劃,我們無需強制去回憶,因為它們的值都現已以常量的方法定義在對應的包裝類中了。如:
底子類型byte二進制位數:Byte.SIZE最小值:Byte.MIN_VALUE最大值:Byte.MAX_VALUE
底子類型short二進制位數:Short.SIZE最小值:Short.MIN_VALUE最大值:Short.MAX_VALUE
底子類型char二進制位數:Character.SIZE最小值:Character.MIN_VALUE最大值:Character.MAX_VALUE
底子類型double二進制位數:Double.SIZE最小值:Double.MIN_VALUE最大值:Double.MAX_VALUE
留心:float、double兩種類型的最小值與Float.MIN_VALUE、Double.MIN_VALUE的值并不相同,實踐上Float.MIN_VALUE和Double.MIN_VALUE分別指的是float和double類型所能標明的最小正數。也就是說存在這樣一種狀況,0到±Float.MIN_VALUE之間的值float類型無法標明,0到±Double.MIN_VALUE之間的值double類型無法標明。這并沒有什么好古怪的,因為這些規劃內的數值超出了它們的精度規劃。
Float和Double的最小值和最大值都是以科學記數法的方法輸出的,完畢的”E+數字”標明E之前的數字要乘以10的多少倍。比如3.14E3就是3.14×1000=3140,3.14E-3就是3.14/1000=0.00314。
Java底子類型存儲在棧中,因此它們的存取速度要快于存儲在堆中的對應包裝類的實例方針。從Java5.0(1.5)初步,JAVA虛擬機(JavaVirtualMachine)能夠完畢底子類型和它們對應包裝類之間的自動轉化。因此我們在賦值、參數傳遞以及數學運算的時分像運用底子類型相同運用它們的包裝類,但這并不意味著你能夠通過底子類型調用它們的包裝類才具有的方法。另外,全部底子類型(包含void)的包裝類都運用了final修飾,因此我們無法承繼它們擴展新的類,也無法重寫它們的任何方法。
底子類型的優勢:數據存儲相對簡略,運算功率比較高
包裝類的優勢:有的簡略,比如集結的元素有必要是方針類型,滿足了java全部皆是方針的思維
2.Java中的常量
十六進制整型常量:以十六進制標明時,需以0x或0X開始,如0xff,0X9A。
八進制整型常量:八進制有必要以0開始,如0123,034。
長整型:長整型有必要以L作完畢,如9L,342L。
浮點數常量:因為小數常量的默認類型是double型,所以float類型的后邊一定要加f(F)。同樣帶小數的變量默以為double類型。
如:
floatf;
f=1.3f;//有必要聲明f。
字符常量:字符型常量需用兩個單引號括起來(留心字符串常量是用兩個雙引號括起來)。Java中的字符占兩個字節。一些常用的轉義字符:
①\r標明接受鍵盤輸入,相當于按下了回車鍵;
②\n標明換行;
③\t標明制表符,相當于Table鍵;
④\b標明退格鍵,相當于BackSpace鍵;
⑤\’標明單引號;
⑥\”標明雙引號;
⑦\\標明一個斜杠\。
3.數據類型之間的轉化
1).簡略類型數據間的轉化,有兩種方法:自動轉化和強制轉化,通常發生在表達式中或方法的參數傳遞時。
自動轉化
詳細地講,當一個較”小”數據與一個較”大”的數據一起運算時,系統將自動將”小”數據轉化成”大”數據,再進行運算。而在方法調用時,實踐參數較”小”,而被調用的方法的方法參數數據又較”大”時(若有匹配的,當然會直接調用匹配的方法),系統也將自動將”小”數據轉化成”大”數據,再進行方法的調用,天然,關于多個同名的重載方法,會轉化成最”挨近”的”大”數據并進行調用。這些類型由”小”到”大”分別為(byte,short,char)–int–long–float—double。這兒我們所說的”大”與”小”,并不是指占用字節的多少,而是指標明值的規劃的大小。
①下面的語句能夠在Java中直接通過:
byteb;
inti=b;
longl=b;
floatf=b;
doubled=b;
②假設初級類型為char型,向高檔類型(整型)轉化時,會轉化為對應ASCII碼值,例如
charc=’c’;inti=c;
System.out.println(“output:”+i);
輸出:output:99;
③關于byte,short,char三種類型而言,他們是平級的,因此不能互相自動轉化,能夠運用下述的強制類型轉化。
shorti=99;
charc=(char)i;
System.out.println(“output:”+c);
輸出:output:c;
強制轉化
將”大”數據轉化為”小”數據時,你能夠運用強制類型轉化。即你有必要選用下面這種語句格式:intn=(int)3.14159/2;能夠想象,這種轉化必定可能會導致溢出或精度的下降。
2)表達式的數據類型自動進步,關于類型的自動進步,留心下面的規則。
①全部的byte,short,char型的值將被進步為int型;
②假設有一個操作數是long型,核算結果是long型;
③假設有一個操作數是float型,核算結果是float型;
④假設有一個操作數是double型,核算結果是double型;
例,byteb;b=3;b=(byte)(b*3);//有必要聲明byte。
3)包裝類過渡類型轉化
一般狀況下,我們首要聲明一個變量,然后生成一個對應的包裝類,就能夠運用包裝類的各種方法進行類型轉化了。例如:
①當希望把float型轉化為double型時:
floatf1=100.00f;
FloatF1=newFloat(f1);
doubled1=F1.doubleValue();//F1.doubleValue()為Float類的返回double值型的方法
②當希望把double型轉化為int型時:
doubled1=100.00;
DoubleD1=newDouble(d1);
inti1=D1.intValue();
簡略類型的變量轉化為相應的包裝類,能夠運用包裝類的結構函數。即:Boolean(booleanvalue)、Character(charvalue)、Integer(intvalue)、Long(longvalue)、Float(floatvalue)、Double(doublevalue)
而在各個包裝類中,總有形為××Value()的方法,來得到其對應的簡略類型數據。運用這種方法,也能夠完成不同數值型變量間的轉化,例如,關于一個雙精度實型類,intValue()能夠得到其對應的整型變量,而doubleValue()能夠得到其對應的雙精度實型變量。
4)字符串與其它類型間的轉化
其它類型向字符串的轉化
①調用類的串轉化方法:X.toString();
②自動轉化:X+””;
③運用String的方法:String.volueOf(X);
字符串作為值,向其它類型的轉化
①先轉化成相應的封裝器實例,再調用對應的方法轉化成其它類型
例如,字符中”32.1″轉化double型的值的格式為:newFloat(“32.1”).doubleValue()。也能夠用:Double.valueOf(“32.1″).doubleValue()
②靜態parseXXX方法
Strings=”1”;
byteb=Byte.parseByte(s);
shortt=Short.parseShort(s);
inti=Integer.parseInt(s);
longl=Long.parseLong(s);
Floatf=Float.parseFloat(s);
Doubled=Double.parseDouble(s);
③Character的getNumericValue(charch)方法
5)Date類與其它數據類型的互相轉化
整型和Date類之間并不存在直接的對應聯絡,僅僅你能夠運用int型為分別標下一年、月、日、時、分、秒,這樣就在兩者之間建立了一個對應聯絡,在作這種轉化時,你能夠運用Date類結構函數的三種方法:
①Date(intyear,intmonth,intdate):以int型標下一年、月、日
②Date(intyear,intmonth,intdate,inthrs,intmin):以int型標下一年、月、日、時、分
③Date(intyear,intmonth,intdate,inthrs,intmin,intsec):以int型標下一年、月、日、時、分、秒
在長整型和Date類之間有一個很幽默的對應聯絡,就是將一個時間標明為間隔格林尼治標準時間1970年1月1日0時0分0秒的毫秒數。關于這種對應聯絡,Date類也有其相應的結構函數:Date(longdate)。
獲取Date類中的年、月、日、時、分、秒以及星期你能夠運用Date類的getYear()、getMonth()、getDate()、getHours()、getMinutes()、getSeconds()、getDay()方法,你也能夠將其理解為將Date類轉化成int。
而Date類的getTime()方法能夠得到我們前面所說的一個時間對應的長整型數,與包裝類相同,Date類也有一個toString()方法能夠將其轉化為String類。
有時我們希望得到Date的特定格式,例如20020324,我們能夠運用以下方法,首要在文件初步引進,
importjava.text.SimpleDateFormat;
importjava.util.*;
java.util.Datedate=newjava.util.Date();
//假設希望得到YYYYMMDD的格式
SimpleDateFormatsy1=newSimpleDateFormat(“yyyyMMDD”);
StringdateFormat=sy1.format(date);
//假設希望分隔得到年,月,日
SimpleDateFormatsy=newSimpleDateFormat(“yyyy”);
SimpleDateFormatsm=newSimpleDateFormat(“MM”);
SimpleDateFormatsd=newSimpleDateFormat(“dd”);
Stringsyear=sy.format(date);
Stringsmon=sm.format(date);
Stringsday=sd.format(date);
總結:只需boolean不參加數據類型的轉化
(1).自動類型的轉化:a.常數在表數規劃內是能夠自動類型轉化的
b.數據規劃小的能夠自動數據類型大的轉化(留心特例)
int到float,long到float,long到double是不會自動轉化的,否則將會丟掉精度
c.引用類型能夠自動轉化為父類的
d.底子類型和它們包裝類型是能夠彼此轉化的
(2).強制類型轉化:用圓括號括起來方針類型,置于變量前
4.Java引用類型
Java有5種引用類型(方針類型):類接口數組枚舉標注
引用類型:底層結構和底子類型不同較大
JVM的內存空間:(1).Heap堆空間:分配方針newStudent()
(2).Stack棧空間:臨時變量Studentstu
(3).Code代碼區:類的定義,靜態資源Student.class
eg:Studentstu=newStudent();//new在內存的堆空間創立方針
stu.study();//把方針的地址賦給stu引用變量
上例完成進程:a.JVM加載Student.class到Code區
b.newStudent()在堆空間分配空間并創立一個Student實例;
c.將此實例的地址賦值給引用stu,棧空間;
java開發工資一般多少
因為近兩年移動互聯網的敏捷崛起,各個企業急需Java后端開發人員,因而Java后端開發人員的薪酬也在逐年上漲中而且有很多大廠公司,例如京東、百度、阿里都在急需Java后端開發人員。據獵豹統計數據顯示,java后端開發薪酬范圍在12-100K之間,其間薪資在12-15K的范圍內占比11%,薪資在30-50K的范圍內占比23.%,薪資在15-20K的范圍內占比18%,薪資在20-30K之間的范圍內占比17%,薪資在50-100K之間的范圍內占比13.%。
該數據來源于獵豹網站
依照作業年限進行區分
下圖中依照1年以下、1-3年、3-5年、5年以上、均勻等維度進行了統計、比照:
從上圖中可以了解:
作業年限在1年以下,月薪在17K左右;
作業年限在1-3年左右,月薪在19K左右;
作業年限在3-5年左右,月薪在33K左右;
作業年限在5年以上,月薪在47K左右;
均勻月薪在23K左右。
依照學歷進行區分
從學歷來看,本科及以上學歷,Java后端開發人員月薪在24K左右;專科學歷,月薪在13K左右,均勻月薪在23K左右。
該數據來源于獵豹網站
依照地域進行區分
下圖對北京、上海、廣州、深圳、杭州五個大型城市的均勻薪資進行了比照:
該數據來源于獵豹網站
其間北京區域均勻薪酬在39k左右;
上海區域均勻薪酬在32k左右;
廣州區域均勻薪酬在16k左右;
深圳區域均勻薪酬在31k左右;
杭州區域均勻薪酬在26k左右。
java后端開發人員崗位要求
精通JavaEE相關技能和結構內容,熟悉運用MYsql以及Unix/Linux操作系統;可以熟練運用H5、js、jquery等技能,而且具有杰出的結構、模塊設計能力和建模經驗。