java編程數(shù)據(jù)類型全面詳解教程新手必入
前言
大家好呀!這是筆者的java板塊,今天起筆者開始了java部分的相關(guān)學(xué)習(xí),會不定期更新java的文章。
提示:以下是本篇文章正文內(nèi)容,下面案例可供參考
變量和類型
變量指的是程序運行時可變的量,相當(dāng)于開辟一塊內(nèi)存空間來保存一些數(shù)據(jù)。
類型則是對變量的種類進行了劃分,不同的類型的變量具有不同的特性。
我們討論的“變量”和我們的“內(nèi)存”這樣的硬件設(shè)施密切相關(guān)
(圖片來自比特就業(yè)課)
變量相當(dāng)于一個箱子,可以存放一些數(shù)據(jù)
類型相當(dāng)于箱子的種類,不同類型,意味著箱子種類不一樣,種類不一樣,箱子存儲的東西自然是不一樣的
1 整形int
public class TestDemo { public static void main(String[] args) { int a=10; System.out.println(a);//打印10 System.out.println(Integer.MAX_VALUE);//打印2147483647,Integer是java的一個包裝類,是一個簡單類型,你可以理解Integer就是int System.out.println(Integer.MIN_VALUE);//打印-2147483648 //和c語言一樣,整形int不管你系統(tǒng)是16位、32位還是64位,int類型統(tǒng)一占4字節(jié) //區(qū)別c語言,java里的整形int是沒有無符號類型的,數(shù)字統(tǒng)一都有符號 //int是4字節(jié),也就是32比特位,32位中的最高位是符號位(1為負(fù),0為正) //除去32位中的符號位剩余的31位分別對應(yīng)1和0兩種情況,所以最大是2^31-1=2147483647 //ps:為什么2^31要-1,因為符號位是0的2^31種情況中有0這種情況,正數(shù)要-1 //最小的是-2^31=-2147483648 //變量的命名:小駝峰->由數(shù)字、字母、下劃線、美元符號組成 int 錢=100;//有意思的是java可以用中文來做變量名 System.out.println(錢);//打印100,不會報錯 } }
整形數(shù)據(jù)范圍示意圖
2 長整形long
數(shù)據(jù)范圍這里和上面整形思路一樣,long是8個字節(jié),64比特位,最高位符號位,所以最大值2^ 63-1, 最小值-2^63
public static void main(String[] args) { long a=10;//ps:寫long a=10L或者long a=10l(小寫的L)結(jié)果都是一樣的 System.out.println(a);//打印10 System.out.println(Long.MAX_VALUE);//打印2^63-1=9223372036854775807 System.out.println(Long.MIN_VALUE);//打印-2^63=-9223372036854775808 }
注意:java中沒有l(wèi)ong long類型
3 雙精度浮點型(重點)
double類型占8個字節(jié)
public static void main(String[] args) { double d=3.1415926;//double是8個字節(jié) System.out.println(d);//打印3.1415926 int a=1; int b=2; System.out.println(a/b);//打印0,java中int除int還是int型,如果要得到小數(shù)必須除數(shù)或被除數(shù)至少有一個是double型 int c=1; double f=2; System.out.println(c/f);//打印0.5 }
4 單精度浮點型
float類型占4個字節(jié)
public static void main(String[] args) {
//float a=1.1;
// 1.1java默認(rèn)是一個double類型,對于c語言來說double型到float型是可以通過的,只是會報警告
//但對于java來說只要類型不匹配,就不能運行,一定會報錯
float a=1.1f;//要想1.1是float類型,后面要跟一個f或者F
}
5 字符型
char(java中占2個字節(jié))
1.java中使用單引號+單個字母的形式表示字符字面值
2.計算機中的字符本質(zhì)是一個整數(shù),在C語言中用ASCII表示字符,而java中使用的是Unicode表示字符。因此一個字符占用兩個字節(jié),表示的字符種類更多,包括中文
public static void main(String[] args) { char ch='a'; System.out.println(ch);//打印a char dh='嘿';//一個漢字2個字節(jié),char是2個字節(jié),所以這里也是可以賦值的 System.out.println(dh);//打印“嘿” char eh=97; System.out.println(eh);//打印a,賦值是整數(shù)給char類型的話,會自動轉(zhuǎn)換為數(shù)字對應(yīng)的字符 }
6 字節(jié)類型
byte類型占1個字節(jié)(聯(lián)想c語言中的char)
public static void main(String[] args) { byte b=10; System.out.println(b);//這里正常打印10 //byte c=130;//這里會報錯 //為什么10可以130就不可以呢? //byte是1個字節(jié),8比特位,除去符號位只有7比特位 //7比特位最高是127,最低是-128 //所以byte類型的范圍是-128-127 }
在java中,數(shù)值類型都是有取值范圍的,存儲數(shù)據(jù)的時候,不要超過范圍,否則編譯無法通過。
7 短整型
short類型占2個字節(jié)
public static void main(String[] args) { short s=10;//short類型的取值范圍是-2^16到2^16-1 System.out.println(s);//打印10 }
8 布爾類型
public static void main(String[] args) { boolean flg1=true;//非0為真,0為假 System.out.println(flg1);//java中布爾類型只有兩種情況:true或false boolean flg2=false; System.out.println(flg2); //JVM沒有明確規(guī)范布爾類型的大小。有些書說1bit有些書說1字節(jié) //布爾類型不能進行數(shù)值運算,比如flag+1這種都是不行的 }
注意:
1.boolean類型的變量只有兩種取值,true為真,false為假
2.java的boolean類型和int不能相互轉(zhuǎn)換,不存在 1表示true,0表示false
3.boolean類型有些JVM的實現(xiàn)是占1個字節(jié),有些是占1個比特位,這個沒有明確規(guī)定。
9 字符串類型(重點)
把一下字符放到一起構(gòu)成字符串
String 變量名=“初始值”
public static void main(String[] args) { String str="hello"; System.out.println(str); String str2="world"; System.out.println(str+str2);//可以把兩個字符串拼接起來 System.out.println(str+10+20);//其他數(shù)據(jù)類型與字符串類型使用+拼接,結(jié)構(gòu)是一個字符串 //打印hello1020,10跟著hello已經(jīng)變成字符串了,所以不會與20相加 System.out.println(10+30+str); //打印40hello,解釋:因為計算機讀這段代碼是從左到右,兩int型還沒變成字符串算起來是40 System.out.println(str+(10+20));//如果要打印hello30,加個括號即可 System.out.println("a="+10+",b="+20);//a=10,b=20 String s1="\"bit\"";//現(xiàn)在要打印”bit“,只要對兩邊的雙引號轉(zhuǎn)義即可 System.out.println(s1); }
10 變量的作用域
也就是該變量能生效的范圍,一般是變量定義所在的代碼塊,也就是大括號{}
public static void main(String[] args) { int a=10; { a=99; } System.out.println(a);//打印99 { int b; } //System.out.println(b);//無法打印b,已經(jīng)出了b的作用域 }
11 變量的命名規(guī)則
硬性指標(biāo):
1.一個變量名只能包含數(shù)字、字母、下劃線
2.數(shù)字不能作為開頭
3.變量名是大小寫敏感的,舉例說明:num和Num是兩個不同的變量
ps:語法上雖然運行使用中文/美元符號($)命名,但是強烈不推薦這樣做
軟性指標(biāo):
1.變量命名要具有描述性,見名知意
2.變量名不宜使用拼音
3.變量名的詞性推薦使用名詞
4.變量命名推薦小駝峰命名法,當(dāng)一個變量名由多個單詞構(gòu)成時,除了第一個單詞之外,其他首字母大寫
比如maxValue
12 常量
常量:
1.字面值常量:比如單純一個數(shù)字,或者字符串等等
2.final修飾的變量會變成常量
ps:常量和變量的簡單區(qū)別:
常量就是程序運行時不可改變的量
變量就是程序運行時可以改變的量
public static void main(String[] args) { final int c=10;//final修改的變量就不能修改了,類似c語言中的const //c=2;//c不可修改,該句c=2會報錯 System.out.println(c); }
13 強制類型轉(zhuǎn)換
public static void main(String[] args) { int a=10;//int是4字節(jié) long b=a;//long是8字節(jié) System.out.println(b);//4字節(jié)賦給8字節(jié)沒有問題 long c=12; //int d=c;//8字節(jié)賦給4字節(jié)會報錯 int d=(int)c;//強制類型轉(zhuǎn)換后才能賦值 boolean e=true; //int f=(int)e;//兩個毫不相關(guān)的類型就算是強轉(zhuǎn)也不能賦值 }
long表示的范圍更大,可以將int賦值給long,但是不能將long賦值給int。就好比我們現(xiàn)在把西瓜和芝麻里面掏空,你可以把空芝麻放到空西瓜里,但是不能把西瓜塞到芝麻里,如果你非要塞,好,請你把西瓜切的和芝麻一樣大,也就是把long強制轉(zhuǎn)換成int
結(jié)論:不同數(shù)字類型的變量之間賦值,表示范圍更小的類型能隱式轉(zhuǎn)換成范圍更大的類型
注意:int和boolean這種完全不相干的類型,即使強制類型轉(zhuǎn)換也是不能賦值的(boolean根本表示數(shù)值類型)
14 理解數(shù)值提升
public static void main(String[] args) { byte a=1;//byte是1個字節(jié),也就是4bit位,那它的有效范圍應(yīng)該是-128-127 byte b=2; //byte c=a+b;這里會報錯:小于4字節(jié)運算時會把變量自動提升到整形,整形后賦給byte是不可以的 byte c=(byte)(a+b);//要賦值a+b要對他們的結(jié)果強制類型轉(zhuǎn)換 byte d=1+2;//這里為什么不報錯呢?1和2都是常量,程序編譯的時候1+2就已經(jīng)編譯成3了 //也就是說上一行代碼==byte d=3; int a1=10; long a2=20; //int a3=a1+a2;這里運算時,小類型會提升為大類型,這里a1會提升到long類型,直接寫會報錯 int a3=(int)(a1+a2);//必須對結(jié)果進行強轉(zhuǎn) String e=String.valueOf(a1);//把int型轉(zhuǎn)換為String類型 System.out.println(e); //整數(shù)變字符串法二 String f=a1+"";//整數(shù)加字符串就變字符串了 System.out.println(f); }
15 int和String類型的相互轉(zhuǎn)換
public static void main(String[] args) { int a1=10; String e=String.valueOf(a1);//把int型轉(zhuǎn)換為String類型 System.out.println(e);//打印字符10 //整數(shù)變字符串法二 String f=a1+"";//整數(shù)加字符串就變字符串了 System.out.println(f); }
總結(jié)
本文介紹了java的所有數(shù)據(jù)類型,強制類型轉(zhuǎn)換和數(shù)值提升是本文的重點,但在實際運用中,我們還是推薦減少不同類型混用的情況,防止出錯。以上,祝讀者學(xué)習(xí)愉快,事業(yè)有成,希望大家以后多多支持腳本之家!
相關(guān)文章
如何開啟控制臺輸出mybatis執(zhí)行的sql日志問題
這篇文章主要介紹了如何開啟控制臺輸出mybatis執(zhí)行的sql日志問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-09-09springboot項目test文件夾下帶main方法的類不能運行問題
這篇文章主要介紹了springboot項目test文件夾下帶main方法的類不能運行問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-11-11解決IDEA springboot"spring-boot-maven-plugin"報紅問題
這篇文章主要介紹了解決IDEA springboot"spring-boot-maven-plugin"報紅問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-04-04簡單了解java標(biāo)識符的作用和命名規(guī)則
這篇文章主要介紹了簡單了解java標(biāo)識符的作用和命名規(guī)則,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-01-01Springboot?接口需要接收參數(shù)類型是數(shù)組問題
這篇文章主要介紹了Springboot?接口需要接收參數(shù)類型是數(shù)組問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-01-01