1稠氮、常量:故名思意曹阔,就是在整個(gè)程序中不會(huì)改變的量值
注意:boolean類型也是常量,它只有兩個(gè)值(true隔披,false)赃份。
2、變量:用來存儲(chǔ)數(shù)據(jù)的存儲(chǔ)空間奢米,它沒有固定的值抓韩,可以重復(fù)使用,用來存儲(chǔ)一某一類常量鬓长。當(dāng)變量確定了數(shù)據(jù)類型時(shí)谒拴,它就只能存儲(chǔ)這一個(gè)類型的常量。
? ? ? 特點(diǎn):1涉波、在內(nèi)存中有自己的一片存儲(chǔ)空間
? ? ? ? ? ? ? ? 2英上、可以重復(fù)使用
? ? ? ? ? ? ? ? 3、有自己特有的名稱(變量名)和數(shù)據(jù)類型
? ? ? ? ? ? ? ? 4怠蹂、沒有固定的數(shù)據(jù)善延,可以不斷改變
? ? ? ? 定義變量:(格式都是固定的)
? ? ? ? 第一種方法:
? ? ? ? ? ? ? ? ? ? ? 數(shù)據(jù)類型變量名;
? ? ? ? ? ? ? ? ? ? ? 變量名=數(shù)值城侧;
? ? ? ?第二種方法:(推薦)
? ? ? ? ? ? ? ? ? ? ? ? 數(shù)據(jù)類型變量名=數(shù)值易遣;
? ? ? 注意:為了提高代碼的可閱讀性,要避免多個(gè)變量一起定義
? ? ?分類:全局變量和局部變量
? ? ? ? ? ? ? 全局變量:(成員變量)定義在方法體之外嫌佑,類體之內(nèi)的變量
局部變量:除去全局變量豆茫,都是局部變量
變量作用域:
? ? ? ? ?1、指變量的存在范圍屋摇,只有在這個(gè)范圍內(nèi)揩魂,程序代碼才能訪問它。當(dāng)一個(gè)變量被定義時(shí),它的作用域就確定了:
? ? ? ? ?2炮温、作用域是定義開始到定義所在結(jié)構(gòu)體結(jié)束就不再有作用了(final,static定義的變量除外)
? ? ? ? 3火脉、當(dāng)方法體中定義的變量(局部變量)與它所在的類中定義的變量(成員變量)(方法體外)名稱相同時(shí),方法中調(diào)用這個(gè)變量柒啤,會(huì)覆蓋掉成員變量選擇調(diào)用局部變量倦挂。
? ? ? ?4、Main方法中無法調(diào)用他所在的類的非靜態(tài)方法担巩。
變量的使用規(guī)則:
? ? ? 1方援、 ?應(yīng)該在使用變量之前定義變量
System.out.println("d="+d);
int d = 3;
VarDemo.java:33:錯(cuò)誤:找不到符號
System.out.println("d="+d);
已經(jīng)存在這個(gè)變量
int b = 3;
int b = 3;
VarDemo.java:40:錯(cuò)誤:已在方法main(String[])中定義了變量b
必須聲明變量數(shù)據(jù)類型才可以使用變量
d = 23; ? VarDemo.java:48:錯(cuò)誤:找不到符號
? ? 2、數(shù)據(jù)類型:
可以分為基本數(shù)據(jù)類型(原生數(shù)據(jù)類型)和引用數(shù)據(jù)類型(對象數(shù)據(jù)類型)
基本數(shù)據(jù)類型有八種可分為:
整數(shù)型:byte(1個(gè)字節(jié))涛癌、short(2個(gè)字節(jié))犯戏、int(4個(gè)字節(jié))送火、long(8個(gè)字節(jié))
浮點(diǎn)型:float(4個(gè)字節(jié))、double(8個(gè)字節(jié))
布爾類型(常數(shù)):boolean(1位)(true先匪,false)
字符型:char(2個(gè)字節(jié))
最常用的引用數(shù)據(jù)類型:(String)
字符串類型的數(shù)據(jù)與任意的數(shù)據(jù)相加最終的數(shù)據(jù)類型一定是字符串?dāng)?shù)據(jù)類型
System.out.println(12+23+"努力學(xué)好");
//結(jié)果為:35努力學(xué)好
System.out.println(12+"我要學(xué)好JAVA"+34);
//結(jié)果為:12我要學(xué)好JAVA34
String str = 23+"我要學(xué)好JAVA";
str = (String)12 + "我要學(xué)好JAVA";
不可以強(qiáng)制轉(zhuǎn)換為String類型
//StringDemo.java:15:錯(cuò)誤:不可轉(zhuǎn)換的類型
4种吸、基本數(shù)據(jù)類型轉(zhuǎn)換
1、自動(dòng)數(shù)據(jù)類型轉(zhuǎn)換(boolean不參與數(shù)據(jù)類型轉(zhuǎn)換胚鸯,因?yàn)樗皇菙?shù)值類型)
將范圍小的數(shù)據(jù)類型轉(zhuǎn)換成范圍大的數(shù)據(jù)類型
注意:byte骨稿、char、short之間是不可以轉(zhuǎn)換的并且在定義他們是系統(tǒng)會(huì)
自動(dòng)的對他們進(jìn)行強(qiáng)制轉(zhuǎn)換(在沒有溢出的范圍之內(nèi))
2姜钳、強(qiáng)制數(shù)據(jù)類型轉(zhuǎn)換
格式:范圍小的變量=(范圍小變量對應(yīng)的數(shù)據(jù)類型)范圍大的變量坦冠;
將范圍大的數(shù)據(jù)類型強(qiáng)制轉(zhuǎn)換成范圍小的數(shù)據(jù)類型
注意此過程可能會(huì)是數(shù)據(jù)的精度有所降低或者出現(xiàn)溢出的現(xiàn)象
3、表達(dá)式類型的自動(dòng)提升
在表達(dá)式中計(jì)算時(shí)所有的byte哥桥、short辙浑、char變量都會(huì)自動(dòng)提升為int型的。
兩個(gè)變量在表達(dá)式中做運(yùn)算是拟糕,如果兩個(gè)變量的數(shù)據(jù)類型不一樣判呕,那么表達(dá)式就會(huì)自動(dòng)提升那個(gè)范圍小的變量,使它與那個(gè)范圍大的變量范圍相同也就是說提升到相同的數(shù)據(jù)類型且為那個(gè)范圍大變量的數(shù)據(jù)類型送滞。
范圍大小如下:byte侠草、short、char-->int -->long --> float --> double
5犁嗅、運(yùn)算符
++和--
++在前是先對右邊的表達(dá)式進(jìn)行處理然后再將值賦給左邊的變量
++在后是先對右邊的表達(dá)式進(jìn)行處理然后再將處理之前的數(shù)值賦值給變量
--同理
如題:
int sum = 4;
sum = sum++;
System.out.println(sum); ? ?//輸出結(jié)果為:4
sum = ++sum;
System.out.println(sum);//輸出結(jié)果為: 5
sum++;
System.out.println(sum);//輸出結(jié)果為: 6
++sum;
System.out.println(sum);//輸出結(jié)果為: 7
int a = sum++;
System.out.println(a);//輸出結(jié)果為: 7
System.out.println(sum);//輸出結(jié)果為: 8
a = ++sum;
System.out.println(a);//輸出結(jié)果為: 9
System.out.println(sum);//輸出結(jié)果為: 9
6边涕、賦值運(yùn)算符 (推薦單一賦值,不推薦多個(gè)變量一起賦值)
例如:
int sum = 3;
sum +=4;//等價(jià)于sum = sum + 3;
System.out.println(sum);//結(jié)果為:7
7褂微、比較運(yùn)算符
用于比較兩個(gè)變量或常量之間的關(guān)系功蜓,比較運(yùn)算符的結(jié)果是boolean類型,其操作格式為:
boolean ?result =表達(dá)式A比較運(yùn)算符 ? 表達(dá)式B;
==:等于,若比較的是兩個(gè)操作數(shù)都是數(shù)值類型宠蚂,即使他們的類型不同式撼,只要值相同就返回true。
8求厕、三目運(yùn)算符
格式:比較運(yùn)算的表達(dá)式著隆?返回結(jié)果1:返回結(jié)果2
首先先判定表達(dá)式的真假,如果為真返回結(jié)果1否則返回結(jié)果2
例:int e = 4<5?4:5; ? //利用三目運(yùn)算符找出兩個(gè)數(shù)中較小的一個(gè)
System.out.println(e); ?//結(jié)果為:4
9呀癣、邏輯運(yùn)算符
語法格式為:boolean ?result =表達(dá)式A邏輯運(yùn)算符 ? 表達(dá)式B;
^:判斷A和B是否不同旅东,不同則為true,相同則為false十艾。
!:取反,!true結(jié)果是false腾节,!fasle結(jié)果是true
兩組運(yùn)算符的異同
&與&&和|與||一樣忘嫉,下面就以&與&&為例
相同:都可以用來進(jìn)行邏輯運(yùn)算荤牍,而且計(jì)算的結(jié)果都是相同的。
不同:&的運(yùn)算是必須將所有的表達(dá)式判斷完然后在運(yùn)算的而&&的運(yùn)算時(shí)只要前面的表達(dá)式可以判斷它的真假將就不再進(jìn)行下去直接輸出結(jié)果庆冕。
例:
System.out.println(false&0<(0/0));
//Exception in thread "main" java.lang.ArithmeticException: / by zero,說明在執(zhí)行0<(0/0)時(shí)出現(xiàn)了異常
System.out.println(false&&0<0/0);
//結(jié)果為:false