數(shù)據(jù)類型轉(zhuǎn)換
自動類型轉(zhuǎn)換
存儲容量小的數(shù)據(jù)類型的數(shù)據(jù)可以直接轉(zhuǎn)換成存儲容量大的數(shù)據(jù)類型的數(shù)據(jù)
整數(shù)和整數(shù)之間的轉(zhuǎn)換
byte-->short-->int-->long-->float-->double
字符和整數(shù)之間的轉(zhuǎn)換
char-->int-->long-->float-->double
如:char c = 'c';
int i = c ;
System.out.println(i);
強制類型轉(zhuǎn)換
存儲容量大的數(shù)據(jù)類型轉(zhuǎn)換成存儲容量小的數(shù)據(jù)類型,不能直接轉(zhuǎn)換
注意:強制類型轉(zhuǎn)換可能會造成數(shù)據(jù)精度的損失繁涂,所以在你不確定這個數(shù)是否會大于某種數(shù)據(jù)類型的最大值時州邢,不建議強制轉(zhuǎn)換
如:long l1 = 100 ;
int i1 =(int) l1 ;
System.out.println(i1);
運算符
一種特殊的符號态兴,用于表示數(shù)據(jù)的運算份乒,賦值叛买,比較等
運算符分類
算數(shù)運算符 + - * / ++ --等
賦值運算符 = += -= *= /=
比較運算符 > < == >= <=等
邏輯運算符 && || !
三目運算符 表達式?表達式:表達式
/ 除號
兩數(shù)相除(相乘)時結(jié)果需要用存儲范圍大的那一個數(shù)的數(shù)據(jù)類型
當(dāng)整數(shù)除以整數(shù)時,所得的結(jié)果是整數(shù)
當(dāng)整數(shù)除以小數(shù) 或者小數(shù)除以整數(shù)時 所得的結(jié)果是小數(shù)
% 取模
兩數(shù)相除取余數(shù)
++ 自增
int i= 10 ;
int j = i++ ; //相當(dāng)于 j=i ; i = i+1 ; 先賦值后自增
int i1 = 10 ;
int j1 = ++i1 ; //相當(dāng)于 i1=i1+1 ; j1 = i1 ; 先自增后賦值
賦值運算符
= 是Java語言當(dāng)中優(yōu)先級最低的運算符
而且是唯一一個從右往左進行運算的運算符
表達式
由數(shù)字到忽,運算符,括號等組成的可以得到數(shù)據(jù)的有意義的組合
1
1+1
int a = 10 ;
a++ ;
注意:所有的運算符必須在英文狀態(tài)下輸入
比較運算 運算的結(jié)果都是boolean類型 true false
整數(shù)和浮點型 數(shù)據(jù)類型均可以進行大小的比較清寇,也可以比較是否相等
boolean類型的數(shù)據(jù)不能比較大小喘漏,但是可以比較是否相等
字符類型可以比較大小,也可以比較是否相等
所有的數(shù)據(jù)在計算機中存儲的都是二進制
編碼表:ASCII碼(美國人的)
GB2312(簡體中文)
GBK (有簡體中文也有繁體中文)
Unicode (包含了世界上所有已知的文字的編碼)Java 就是采用的這個編碼表
字符型數(shù)據(jù)比較的其實是其在編碼表中對應(yīng)的編碼值
/**
比較運算符練習(xí)
> < >= <= == !=
比較運算 運算的結(jié)果都是boolean類型 true false
整數(shù)和浮點型 數(shù)據(jù)類型均可以進行大小的比較华烟,也可以比較是否相等
boolean類型的數(shù)據(jù)不能比較大小翩迈,但是可以比較是否相等
字符類型可以比較大小,也可以比較是否相等
所有的數(shù)據(jù)在計算機中存儲的都是二進制
編碼表:ASCII碼(美國人的)
GB2312(簡體中文)
GBK (有簡體中文也有繁體中文)
Unicode (包含了世界上所有已知的文字的編碼)Java 就是采用的這個編碼表
字符型數(shù)據(jù)比較的其實是其在編碼表中對應(yīng)的編碼值
*/
public class BiJiao
{
public static void main(String[] args)
{
//大于>
float i = 10 ;
double j = 20 ;
boolean b = i > j ;//估計這行代碼運行結(jié)束 b=false
System.out.println("b="+b);
//小于 <
b = i < j ; //估計這行代碼運行結(jié)束 b=true
System.out.println("b="+b);
//大于等于 >=
b = i >= j ;
System.out.println("b="+b);
//小于等于 <=
b = i <= j ;
System.out.println("b="+b);
//等于==
b = i == j ;
System.out.println("b="+b);
//不等于 !=
b = i != j ;
System.out.println("b="+b);
//boolean類型的比較
System.out.println("boolean類型比較");
boolean b1 = true ;
boolean b2 = false ;
b = b1 != b2 ;
System.out.println("b="+b);
//字符類型的比較
System.out.println("字符類型比較");
char a = '你';
int a1 = a ;
char c = '我';
int c1 = c ;
b = a > c ;
System.out.println("b="+b+"你="+a1+"我="+c1);
}
}
/**
賦值運算符練習(xí)
= int i = 10 ;
+= i+= 10 ; //相當(dāng)于 i = i+10 ;
-= i -= 10 ; //相當(dāng)于 i = i - 10 ;
*= i *= 10 ; //相當(dāng)于 i = i * 10 ;
/= i /= 10 ; //相當(dāng)于 i = i /10 ;
%= i %= 10 ; //相當(dāng)于 i = i% 10 ;
*/
public class FuZhi
{
public static void main(String[] args)
{
//=賦值
int i = 10 ;
//+=
i += 10 ;//預(yù)計執(zhí)行完這一句之后 i=20 ;
System.out.println("i="+i);
//-=
i -= 10 ;
System.out.println("i="+i);
//*=
i *= 10 ;//語句執(zhí)行完這一句代碼之后 i=100
System.out.println("i="+i);
// /=
i /= 10 ; //預(yù)計執(zhí)行完這一句代碼之后 i = 10 ;
System.out.println("i="+i);
// %=
i %= 10 ; //預(yù)計執(zhí)行完這句代碼之后i = 0 ;
System.out.println("i="+i);
}
}
/**
邏輯運算符練習(xí)
& && | || ! ^ 運算的結(jié)果都是Boolean類型
邏輯運算符兩邊均是Boolean表達式
& && 當(dāng)兩邊的表達式均為true時結(jié)果才為true盔夜,只要有一邊的結(jié)果為false ,那么結(jié)果就為false
| 當(dāng)兩邊的表達式的結(jié)果均為false時才為false负饲,只要有一邊的結(jié)果為true ,那么結(jié)果就是true
&&(短路與) 當(dāng)左邊的表達式為false時比吭,右邊的表達式統(tǒng)統(tǒng)不執(zhí)行
& 無論左邊的表示的結(jié)果是什么绽族,右邊的表達式都依次執(zhí)行
||(短路或) 當(dāng)左邊的表達式結(jié)果為true時,右邊的表達式統(tǒng)統(tǒng)不執(zhí)行
| 無論左邊的表示的結(jié)果是什么衩藤,右邊的表達式都依次執(zhí)行
! 取反 boolean b = true ; !b ; System.out.println(b);
*/
public class LuoJi
{
public static void main(String[] args)
{
//& 與
int i = 10 ;
int b = 20 ;
int c = 15 ;
//如果 i > b 并且 b > c 就能夠推斷出 i > c
//先判斷 i >b 是不是成立,再 b > c是不是成立
boolean b1 = i > b;
boolean b2 = b > c ;
//再判斷b1和b2是不是同時成立
boolean b3 = b1 & b2 ;
System.out.println("b3="+b3);
//| 或 判斷 i > b 或者 b > c
b3 = b1 | b2 ;
System.out.println("b3="+b3);
//&& 短路&&
int k = 10 ;
int j = 20 ;
boolean bb = k > j && k++ >j ;
System.out.println("bb-->"+bb);
System.out.println("k-->"+k);
// || 短路或
bb = j > k || j++ < k ;//估計運行完改行代碼
System.out.println("bb-->"+bb);
System.out.println("j-->"+j);
System.out.println("----------------------------");
boolean sb = true ;
sb = !sb ;
System.out.println(sb);
}
}
/**
三目運算
(boolean表達式)? (如果boolean表達式為true 這執(zhí)行這里的表達式代碼):(如果boolean表達式為false這執(zhí)行這里的表達式代碼)
*/
public class SanMu
{
public static void main(String[] args)
{
/**
有兩個數(shù) i = 20 ; j = 30 ,求最大值?
判斷i 是不是大于 j 如果大于j則k=i 否則 k=j
*/
int i = 20 ;
int j = 30 ;
int k = (i >j)?i:j;
System.out.println("k="+k);
/*
有三個數(shù)
int a = 10 ;
int b = 20 ;
int c = 15 ;
判斷如果 a>b 且 b >c 輸出 a>c 否則 a<=c
*/
int a = 30 ;
int b = 20 ;
int c = 15 ;
boolean b1 = a > b ;
boolean b2 = b > c ;
String m =(b1 && b2)?("a>c"):("a<=c");
System.out.println(m);
}
}