1、常量:故名思意,就是在整個程序中不會改變的量值
注意:boolean類型也是常量,它只有兩個值(true,false)。
2、變量:用來存儲數據的存儲空間,它沒有固定的值,可以重復使用,用來存儲一某一類常量。當變量確定了數據類型時,它就只能存儲這一個類型的常量。
? ? ? 特點:1、在內存中有自己的一片存儲空間
? ? ? ? ? ? ? ? 2、可以重復使用
? ? ? ? ? ? ? ? 3、有自己特有的名稱(變量名)和數據類型
? ? ? ? ? ? ? ? 4、沒有固定的數據,可以不斷改變
? ? ? ? 定義變量:(格式都是固定的)
? ? ? ? 第一種方法:
? ? ? ? ? ? ? ? ? ? ? 數據類型變量名;
? ? ? ? ? ? ? ? ? ? ? 變量名=數值;
? ? ? ?第二種方法:(推薦)
? ? ? ? ? ? ? ? ? ? ? ? 數據類型變量名=數值;
? ? ? 注意:為了提高代碼的可閱讀性,要避免多個變量一起定義
? ? ?分類:全局變量和局部變量
? ? ? ? ? ? ? 全局變量:(成員變量)定義在方法體之外,類體之內的變量
局部變量:除去全局變量,都是局部變量
變量作用域:
? ? ? ? ?1、指變量的存在范圍,只有在這個范圍內,程序代碼才能訪問它。當一個變量被定義時,它的作用域就確定了:
? ? ? ? ?2、作用域是定義開始到定義所在結構體結束就不再有作用了(final,static定義的變量除外)
? ? ? ? 3、當方法體中定義的變量(局部變量)與它所在的類中定義的變量(成員變量)(方法體外)名稱相同時,方法中調用這個變量,會覆蓋掉成員變量選擇調用局部變量。
? ? ? ?4、Main方法中無法調用他所在的類的非靜態方法。
變量的使用規則:
? ? ? 1、 ?應該在使用變量之前定義變量
System.out.println("d="+d);
int d = 3;
VarDemo.java:33:錯誤:找不到符號
System.out.println("d="+d);
已經存在這個變量
int b = 3;
int b = 3;
VarDemo.java:40:錯誤:已在方法main(String[])中定義了變量b
必須聲明變量數據類型才可以使用變量
d = 23; ? VarDemo.java:48:錯誤:找不到符號
? ? 2、數據類型:
可以分為基本數據類型(原生數據類型)和引用數據類型(對象數據類型)
基本數據類型有八種可分為:
整數型:byte(1個字節)、short(2個字節)、int(4個字節)、long(8個字節)
浮點型:float(4個字節)、double(8個字節)
布爾類型(常數):boolean(1位)(true,false)
字符型:char(2個字節)
最常用的引用數據類型:(String)
字符串類型的數據與任意的數據相加最終的數據類型一定是字符串數據類型
System.out.println(12+23+"努力學好");
//結果為:35努力學好
System.out.println(12+"我要學好JAVA"+34);
//結果為:12我要學好JAVA34
String str = 23+"我要學好JAVA";
str = (String)12 + "我要學好JAVA";
不可以強制轉換為String類型
//StringDemo.java:15:錯誤:不可轉換的類型
4、基本數據類型轉換
1、自動數據類型轉換(boolean不參與數據類型轉換,因為它不是數值類型)
將范圍小的數據類型轉換成范圍大的數據類型
注意:byte、char、short之間是不可以轉換的并且在定義他們是系統會
自動的對他們進行強制轉換(在沒有溢出的范圍之內)
2、強制數據類型轉換
格式:范圍小的變量=(范圍小變量對應的數據類型)范圍大的變量;
將范圍大的數據類型強制轉換成范圍小的數據類型
注意此過程可能會是數據的精度有所降低或者出現溢出的現象
3、表達式類型的自動提升
在表達式中計算時所有的byte、short、char變量都會自動提升為int型的。
兩個變量在表達式中做運算是,如果兩個變量的數據類型不一樣,那么表達式就會自動提升那個范圍小的變量,使它與那個范圍大的變量范圍相同也就是說提升到相同的數據類型且為那個范圍大變量的數據類型。
范圍大小如下:byte、short、char-->int -->long --> float --> double
5、運算符
++和--
++在前是先對右邊的表達式進行處理然后再將值賦給左邊的變量
++在后是先對右邊的表達式進行處理然后再將處理之前的數值賦值給變量
--同理
如題:
int sum = 4;
sum = sum++;
System.out.println(sum); ? ?//輸出結果為:4
sum = ++sum;
System.out.println(sum);//輸出結果為: 5
sum++;
System.out.println(sum);//輸出結果為: 6
++sum;
System.out.println(sum);//輸出結果為: 7
int a = sum++;
System.out.println(a);//輸出結果為: 7
System.out.println(sum);//輸出結果為: 8
a = ++sum;
System.out.println(a);//輸出結果為: 9
System.out.println(sum);//輸出結果為: 9
6、賦值運算符 (推薦單一賦值,不推薦多個變量一起賦值)
例如:
int sum = 3;
sum +=4;//等價于sum = sum + 3;
System.out.println(sum);//結果為:7
7、比較運算符
用于比較兩個變量或常量之間的關系,比較運算符的結果是boolean類型,其操作格式為:
boolean ?result =表達式A比較運算符 ? 表達式B;
==:等于,若比較的是兩個操作數都是數值類型,即使他們的類型不同,只要值相同就返回true。
8、三目運算符
格式:比較運算的表達式?返回結果1:返回結果2
首先先判定表達式的真假,如果為真返回結果1否則返回結果2
例:int e = 4<5?4:5; ? //利用三目運算符找出兩個數中較小的一個
System.out.println(e); ?//結果為:4
9、邏輯運算符
語法格式為:boolean ?result =表達式A邏輯運算符 ? 表達式B;
^:判斷A和B是否不同,不同則為true,相同則為false。
!:取反,!true結果是false,!fasle結果是true
兩組運算符的異同
&與&&和|與||一樣,下面就以&與&&為例
相同:都可以用來進行邏輯運算,而且計算的結果都是相同的。
不同:&的運算是必須將所有的表達式判斷完然后在運算的而&&的運算時只要前面的表達式可以判斷它的真假將就不再進行下去直接輸出結果。
例:
System.out.println(false&0<(0/0));
//Exception in thread "main" java.lang.ArithmeticException: / by zero,說明在執行0<(0/0)時出現了異常
System.out.println(false&&0<0/0);
//結果為:false