前言
大家好呀!這是筆者的java板塊,今天起筆者開始了java部分的相關學習,會不定期更新java的文章。
提示:以下是本篇文章正文內容,下面案例可供參考
變量和類型
變量指的是程序運行時可變的量,相當于開辟一塊內存空間來保存一些數據。
類型則是對變量的種類進行了劃分,不同的類型的變量具有不同的特性。
我們討論的“變量”和我們的“內存”這樣的硬件設施密切相關
(圖片來自比特就業課)
變量相當于一個箱子,可以存放一些數據
類型相當于箱子的種類,不同類型,意味著箱子種類不一樣,種類不一樣,箱子存儲的東西自然是不一樣的
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不管你系統是16位、32位還是64位,int類型統一占4字節 //區別c語言,java里的整形int是沒有無符號類型的,數字統一都有符號 //int是4字節,也就是32比特位,32位中的最高位是符號位(1為負,0為正) //除去32位中的符號位剩余的31位分別對應1和0兩種情況,所以最大是2^31-1=2147483647 //ps:為什么2^31要-1,因為符號位是0的2^31種情況中有0這種情況,正數要-1 //最小的是-2^31=-2147483648 //變量的命名:小駝峰->由數字、字母、下劃線、美元符號組成 int 錢=100;//有意思的是java可以用中文來做變量名 System.out.println(錢);//打印100,不會報錯 } }
整形數據范圍示意圖
2 長整形long
數據范圍這里和上面整形思路一樣,long是8個字節,64比特位,最高位符號位,所以最大值2^ 63-1, 最小值-2^63
public static void main(String[] args) { long a=10;//ps:寫long a=10L或者long a=10l(小寫的L)結果都是一樣的 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中沒有long long類型
3 雙精度浮點型(重點)
double類型占8個字節
public static void main(String[] args) { double d=3.1415926;//double是8個字節 System.out.println(d);//打印3.1415926 int a=1; int b=2; System.out.println(a/b);//打印0,java中int除int還是int型,如果要得到小數必須除數或被除數至少有一個是double型 int c=1; double f=2; System.out.println(c/f);//打印0.5 }
4 單精度浮點型
float類型占4個字節
public static void main(String[] args) { //float a=1.1; // 1.1java默認是一個double類型,對于c語言來說double型到float型是可以通過的,只是會報警告 //但對于java來說只要類型不匹配,就不能運行,一定會報錯 float a=1.1f;//要想1.1是float類型,后面要跟一個f或者F }
5 字符型
char(java中占2個字節)
1.java中使用單引號+單個字母的形式表示字符字面值
2.計算機中的字符本質是一個整數,在C語言中用ASCII表示字符,而java中使用的是Unicode表示字符。因此一個字符占用兩個字節,表示的字符種類更多,包括中文
public static void main(String[] args) { char ch="a"; System.out.println(ch);//打印a char dh="嘿";//一個漢字2個字節,char是2個字節,所以這里也是可以賦值的 System.out.println(dh);//打印“嘿” char eh=97; System.out.println(eh);//打印a,賦值是整數給char類型的話,會自動轉換為數字對應的字符 }
6 字節類型
byte類型占1個字節(聯想c語言中的char)
public static void main(String[] args) { byte b=10; System.out.println(b);//這里正常打印10 //byte c=130;//這里會報錯 //為什么10可以130就不可以呢? //byte是1個字節,8比特位,除去符號位只有7比特位 //7比特位最高是127,最低是-128 //所以byte類型的范圍是-128-127 }
在java中,數值類型都是有取值范圍的,存儲數據的時候,不要超過范圍,否則編譯無法通過。
7 短整型
short類型占2個字節
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沒有明確規范布爾類型的大小。有些書說1bit有些書說1字節 //布爾類型不能進行數值運算,比如flag+1這種都是不行的 }
注意:
1.boolean類型的變量只有兩種取值,true為真,false為假
2.java的boolean類型和int不能相互轉換,不存在 1表示true,0表示false
3.boolean類型有些JVM的實現是占1個字節,有些是占1個比特位,這個沒有明確規定。
9 字符串類型(重點)
把一下字符放到一起構成字符串
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);//其他數據類型與字符串類型使用+拼接,結構是一個字符串 //打印hello1020,10跟著hello已經變成字符串了,所以不會與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"";//現在要打印”bit“,只要對兩邊的雙引號轉義即可 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,已經出了b的作用域 }
11 變量的命名規則
硬性指標:
1.一個變量名只能包含數字、字母、下劃線
2.數字不能作為開頭
3.變量名是大小寫敏感的,舉例說明:num和Num是兩個不同的變量
ps:語法上雖然運行使用中文/美元符號($)命名,但是強烈不推薦這樣做
軟性指標:
1.變量命名要具有描述性,見名知意
2.變量名不宜使用拼音
3.變量名的詞性推薦使用名詞
4.變量命名推薦小駝峰命名法,當一個變量名由多個單詞構成時,除了第一個單詞之外,其他首字母大寫
比如maxValue
12 常量
常量:
1.字面值常量:比如單純一個數字,或者字符串等等
2.final修飾的變量會變成常量
ps:常量和變量的簡單區別:
常量就是程序運行時不可改變的量
變量就是程序運行時可以改變的量
public static void main(String[] args) { final int c=10;//final修改的變量就不能修改了,類似c語言中的const //c=2;//c不可修改,該句c=2會報錯 System.out.println(c); }
13 強制類型轉換
public static void main(String[] args) { int a=10;//int是4字節 long b=a;//long是8字節 System.out.println(b);//4字節賦給8字節沒有問題 long c=12; //int d=c;//8字節賦給4字節會報錯 int d=(int)c;//強制類型轉換后才能賦值 boolean e=true; //int f=(int)e;//兩個毫不相關的類型就算是強轉也不能賦值 }
long表示的范圍更大,可以將int賦值給long,但是不能將long賦值給int。就好比我們現在把西瓜和芝麻里面掏空,你可以把空芝麻放到空西瓜里,但是不能把西瓜塞到芝麻里,如果你非要塞,好,請你把西瓜切的和芝麻一樣大,也就是把long強制轉換成int
結論:不同數字類型的變量之間賦值,表示范圍更小的類型能隱式轉換成范圍更大的類型
注意:int和boolean這種完全不相干的類型,即使強制類型轉換也是不能賦值的(boolean根本表示數值類型)
14 理解數值提升
public static void main(String[] args) { byte a=1;//byte是1個字節,也就是4bit位,那它的有效范圍應該是-128-127 byte b=2; //byte c=a+b;這里會報錯:小于4字節運算時會把變量自動提升到整形,整形后賦給byte是不可以的 byte c=(byte)(a+b);//要賦值a+b要對他們的結果強制類型轉換 byte d=1+2;//這里為什么不報錯呢?1和2都是常量,程序編譯的時候1+2就已經編譯成3了 //也就是說上一行代碼==byte d=3; int a1=10; long a2=20; //int a3=a1+a2;這里運算時,小類型會提升為大類型,這里a1會提升到long類型,直接寫會報錯 int a3=(int)(a1+a2);//必須對結果進行強轉 String e=String.valueOf(a1);//把int型轉換為String類型 System.out.println(e); //整數變字符串法二 String f=a1+"";//整數加字符串就變字符串了 System.out.println(f); }
15 int和String類型的相互轉換
public static void main(String[] args) { int a1=10; String e=String.valueOf(a1);//把int型轉換為String類型 System.out.println(e);//打印字符10 //整數變字符串法二 String f=a1+"";//整數加字符串就變字符串了 System.out.println(f); }
總結
本文介紹了java的所有數據類型,強制類型轉換和數值提升是本文的重點,但在實際運用中,我們還是推薦減少不同類型混用的情況,防止出錯。以上,祝讀者學習愉快,事業有成,希望大家以后多多支持服務器之家!
原文鏈接:https://blog.csdn.net/m0_57180439/article/details/120709287