Java變量
1敛滋、java中的變量
?? 1.變量先定義,后使用奈惑。
?? 2.定義:①聲明蚁廓,②賦值
?? 3.定義的三要素:數(shù)據(jù)類型 變量名 初始化值
2雷激、變量有以下兩種定義方式:
方式一:數(shù)據(jù)類型 變量名 //聲明
變量名 = 初始化值//賦值
int myInt1;// 聲明
System.out.println(myInt1);//使用
myInt1 = 2;// 賦值
System.out.println(myInt1);//
使用int myInt2, myInt3;// 聲明:
一次聲明多個(gè)myInt2 = 3;// 賦值myInt3 = 4;// 賦值
System.out.println(myInt2);//
使用int myInt4, myInt5;// 聲明
myInt4 = myInt5 = 7;// 連續(xù)賦值替蔬,使用不多
方式二:數(shù)據(jù)類型 變量名 = 初始化值;
int myInt6 = 9;int myInt7 = 9, myInt8 = 10;// 一次定義多個(gè)
3、變量的類型:基本數(shù)據(jù)類型(8種byte short int long float double char boolean)屎暇、引用數(shù)據(jù)類型(String)
1承桥、整數(shù)類型:byte(1字節(jié)) short(2字節(jié)) int(4字節(jié)) long(8字節(jié))
byte b = 12;
short s = 12;
int i = 12;
long l = 12l;//long類型變量,值得末尾加L或l
2根悼、浮點(diǎn)類型(帶小數(shù)):float單精度(4) double雙精度(8)
float f = 12.3f;//聲明float類型凶异,末尾要加F或f
?double d = 12.3;
3、字符型:char(2)挤巡,
有3中表現(xiàn)形式①剩彬、用''單引號(hào)括起來的單個(gè)字符char c = 'a';c = '中';
②轉(zhuǎn)義字符\c = '\n'; //轉(zhuǎn)義字符,/把n轉(zhuǎn)義為換行c = '\t';//代表制表符Tabc = '\"';
③直接使用 Unicode 值來表示字符型常量c = '\u4e2d';//Unicode字符做運(yùn)算
char c2 = 'A';//65
System.out.println(c2 + 1);
c2 = 'a';//97
System.out.println(c2 + 1);
引用數(shù)據(jù)類型:String矿卑,可以取值null
String str = "中國";
str = null;
基本數(shù)據(jù)類型和引用數(shù)據(jù)類型的區(qū)別:基本數(shù)據(jù)類型 內(nèi)存中存儲(chǔ)的是值
引用數(shù)據(jù)類型 內(nèi)存中存儲(chǔ)的是地址喉恋,此地址指向?qū)ο螅?/p>
4、類型轉(zhuǎn)換
1)基本數(shù)據(jù)類型之間的轉(zhuǎn)換:boolean不可以轉(zhuǎn)換為其它
基本數(shù)據(jù)類型容量從小到大(參考圖)char-->int-->long-->float-->doublebyte-->short-->
①自動(dòng)類型轉(zhuǎn)換(隱式轉(zhuǎn)換)定義:容量小的數(shù)據(jù)類型自動(dòng)轉(zhuǎn)換為容量大的數(shù)據(jù)類型
②強(qiáng)制類型轉(zhuǎn)換定義:自動(dòng)類型轉(zhuǎn)換的逆過程粪摘,將容量大的數(shù)據(jù)類型轉(zhuǎn)換為容量小的數(shù)據(jù)類型瀑晒。使用時(shí)要加上強(qiáng)制轉(zhuǎn)換符()
2)字符串與基本數(shù)據(jù)類型之間的轉(zhuǎn)換
①基本數(shù)據(jù)類型==>字符串:通過連接運(yùn)算符+,基本類型的值將自動(dòng)轉(zhuǎn)化為字符串類型
②字符串==>基本數(shù)據(jù)類型:通常徘意,字符串不能直接轉(zhuǎn)換為基本類型,但通過基本類型對(duì)應(yīng)的包裝類則可以實(shí)現(xiàn)把字符串轉(zhuǎn)換成基本類型如:
?String a = “43”; int i = Integer.parseInt(a);
容量從小到大char-->int-->long-->float-->doublebyte-->short-->
?*///自動(dòng)類型轉(zhuǎn)換:容量小的轉(zhuǎn)換為容量大的數(shù)據(jù)類型//
1)賦值運(yùn)算int i = 2;byte b = 1;i = b;System.out.println(i);short s = 3;i = s;System.out.println(i);char c = 'a';
i = c;
System.out.println(i);//
2)算術(shù)運(yùn)算:有多種類型的數(shù)據(jù)混合運(yùn)算時(shí)轩褐,系統(tǒng)首先自動(dòng)將所有數(shù)據(jù)轉(zhuǎn)換成容量最大的數(shù)據(jù)類型椎咧,然后再進(jìn)行計(jì)算。
?int i2 = 1;
byte b2 = 2;
i2 = b2 + i2;
char c2 = 'b';
i2 = c2 + i2;//注意:byte把介、short勤讽、char之間不會(huì)相互轉(zhuǎn)換,他們?nèi)咴谟?jì)算時(shí)首先轉(zhuǎn)換為int類型
??? i2 = b2 + c2;//強(qiáng)制類型轉(zhuǎn)換:容量大的轉(zhuǎn)換為容量小的
long l = 12345L;
int i3 = (int)l;
byte b3 = (byte)i3;
System.out.println(Byte.MAX_VALUE);
System.out.println(Byte.MIN_VALUE);
System.out.println(b3);//注意:可能造成精度降低或溢出//-------------------------//
基本數(shù)據(jù)類型===>字符串
int i4 = 3;
String str = i4 + "";
字符串===>基本數(shù)據(jù)類型
str = "2";i4 = Integer.valueOf(str);
System.out.println(i4);}
5拗踢、運(yùn)算符1)算數(shù)運(yùn)算符:+(正號(hào)脚牍、加、字符串相加)-(負(fù)號(hào)巢墅、減)*(乘)/(除)%(取模)++ --
//除/int i = 12;
int j = 5;
int k = i / j;
System.out.println(k);//整數(shù)之間做除法時(shí)诸狭,只保留整數(shù)部分而舍棄小數(shù)部分
double d = i / j; //i / j 結(jié)果為2 int券膀,把int賦值給double,自動(dòng)類型轉(zhuǎn)換System.out.println(d);//2.0
d = (double)i / j; //(double)i強(qiáng)制類型轉(zhuǎn)換為double驯遇,double和int做運(yùn)算System.out.println(d);//2.4
d = i / 5.0;System.out.println(d);//2.4
//取模%(取余數(shù))
k = 13 % 5;
System.out.println(k);
//++
i = 1;
i++;//i = i + 1;
System.out.println(i);
++i;//i = i + 1;
System.out.println(i);
i = 1;
k = i++;//k=i;i=i+1;
System.out.println(k);
i = 1;
k = ++i;//i=i+1;k=i;
System.out.println(k);
//--
i = 2;
i--;
System.out.println(i);
i = 2;
--i;
System.out.println(i);
i = 2;
k = i--;//k=i;i=i-1;
System.out.println(k);//2
i = 2;
k = --i;//i=i-1;k=i;
System.out.println(k);//1
//字符串相加+
String str = "hel" + "lo";
System.out.println(str);
2)賦值運(yùn)算符
=:當(dāng)“=”兩側(cè)數(shù)據(jù)類型不一致時(shí)芹彬,可以使用自動(dòng)類型轉(zhuǎn)換或使用強(qiáng)制類型轉(zhuǎn)換原則進(jìn)行處理。
支持連續(xù)賦值叉庐。例如int i; int j; i=j=1;
擴(kuò)展賦值運(yùn)算符: +=, -=, *=, /=, %=
public class TestAssign
?{public static void main(String[] args) {
int i,j;
i = j = 1;
int a = 10;
a?= a + 3;
System.out.println(a);
a = 10;
a += 3;
System.out.println(a);
i = 13;
i = i % 5;
i = 13;
i %= 5;
boolean b = false;
if(b = true) { //b = true;if(b)
System.out.println("b是true");
} else {
System.out.println("b是false");}}}
3)比較運(yùn)算符(關(guān)系運(yùn)算符)
運(yùn)算符????? ? 運(yùn)算? ????? 范例??????? 結(jié)果
==?????????? 相等于??????? 4==3????? false
!=?????????????不等于????? 4!=3????? ?true
<??????????????? 小于??????? 4<3?????????false
>????????????????? 大于????? 4>3??????? ? true
<=????????????? 小于等于?? 4<=3(4<3或4==3) false
?>=??????????? 大于等于??? 4>=3(4>3或4==3) true
instanceof檢查是否是類的對(duì)象"Hello" instanceof? String true
說明:比較運(yùn)算符的結(jié)果都是boolean型;比較運(yùn)算符“==”不能誤寫成賦值運(yùn)算符“=”
public class TestCompare {
public static void main(String[] args) {
boolean b;b = (4 == 3);
System.out.println(b);
System.out.println(4 == 3);
b = (4 != 3);
b = 4 < 3;
?b = 4 > 3;
?b = 4 <= 3;
?? b = 4 >= 3;
System.out.println(b);
b = "hello" instanceof String;
System.out.println(b);
int i = 13;
//判斷i是否是偶數(shù)
b = (i % 2) == 0;b = (i % 2) != 1;
//判斷i是否是奇數(shù)
b = (i % 2) != 0;b = (i % 2) == 1;
//判斷i是否能被3整除
b = (i % 3) == 0;/
/判斷i是否能被7整除
b = (i % 7) == 0;
int s = 10;int t = 5;
//判斷s是否能被t整除
b = (s % t) == 0;
4)邏輯運(yùn)算符
&邏輯與????? |邏輯或???????? !邏輯非
&&短路與?????? ||短路或??? ? ^邏輯異或
說明:邏輯運(yùn)算符用于連接布爾表達(dá)式舒帮,結(jié)果都是boolean型,也就是要么是true陡叠,要么是false
運(yùn)算結(jié)果:
a???? ?? b??????? ? ? a&b???????? ? ? a&&b???????? ?? a|b ????????????? ?? a||b????????? ? !a????????? ? a^b
?true??? true???????? true?????????????? true??????????? true???????????? ? true?????????????false???? ? false
true???? false????? false??????????? ? false?????????? ? true????????????? true???????????? false??????? true
false???? true??????? false?????????????false??????????? true???????????? true???????????? true????????? true
false??????false?????? false??????????? false????????? ? false????????? ? false???????? ? true???????? false
?public class TestLogic {
public static void main(String[] args) {
boolean a = false, b = true;
System.out.println(a && b);//&&玩郊、 &結(jié)果相同
System.out.println(a || b);//|| 、|結(jié)果相同
System.out.println(!a);
System.out.println(a^b);
int x = 5;//x> 3) && (x < 6);
System.out.println(result);
System.out.println((x == 3) || (x == 5));//true
?System.out.println((x == 3) && (x == 5));
System.out.println(!(x == 3));
System.out.println(x <= 3);//x<3 || x==3
System.out.println((x == 3) ^ (x == 5));
?//&& &區(qū)別
/* * &&當(dāng)左邊表達(dá)式為false時(shí)枉阵,右邊表達(dá)式不再進(jìn)行運(yùn)算
?* &兩邊表達(dá)式都要進(jìn)行運(yùn)算 *
a = true; b = true;
if((a = false) && (b = false)) {//a=false;if(a&&(b=false))
System.out.println("1:" + a + b);
?} else {
System.out.println("2:" + a + b);
}
if((a = false) & (b = false)) {//a=false;b=false;if(a&b)
System.out.println("1:" + a + b);
?} else {
System.out.println("2:" + a + b); }
//|| |區(qū)別 } }
?5)三元運(yùn)算符
?public class TestSanYuan {
public static void main(String[] args) {
int x = 20; int y = 21; int max = (x>y)?x:y;
System.out.println(max);
/* 格式:(條件表達(dá)式)?表達(dá)式1:表達(dá)式2;
如果條件表達(dá)式結(jié)果為true瓦宜,運(yùn)算后的結(jié)果是表達(dá)式1;
?如果條件表達(dá)式結(jié)果為false岭妖,運(yùn)算后的結(jié)果是表達(dá)式2临庇;
?說明: 三元運(yùn)算符要求必須返回一個(gè)結(jié)果,結(jié)果的數(shù)據(jù)類型昵慌、表達(dá)式1的數(shù)據(jù)類型假夺、表達(dá)式2的數(shù)據(jù)類型要相同
*/ // max = (x>y)?"20":y; //三元運(yùn)算符可改寫為if-else語句,反之不行(if后的代碼塊可有多個(gè)語句)
?if(x>y) { max = x;
} else {
max = y;
}
//下面if語句無法改寫為三元運(yùn)算符
if(x > y) {
max = x;
System.out.println("x是大于y");
} else {
?max = y;
?}
?6)運(yùn)算符的優(yōu)先級(jí) 運(yùn)算符有不同的優(yōu)先級(jí)斋攀,所謂優(yōu)先級(jí)就是表達(dá)式運(yùn)算中的運(yùn)算順序已卷。上一行運(yùn)算符總優(yōu)先于下一行。 只有單目運(yùn)算符淳蔼、三元運(yùn)算符侧蘸、賦值運(yùn)算符是從右向左運(yùn)算的。