java基礎複習第二天——基本資料型別,引用資料型別,資料型別轉換,運算子
目錄
----------------------------------------------------------------------我是分割線-----------------------------------------------------------------------------------
Java中一共有兩大類資料型別:
1.基本資料型別(4類八種)
整型:
所佔記憶體 取值範圍
位元組型 byte 1個位元組 -128-127
短整型 short 2個位元組 +-30000左右
整型 int 4個位元組 +-21億
長整型 long 8個位元組 不得了
浮點型:
單精度浮點型 float 4個位元組 詳細取值範圍見下圖
雙精度浮點型 double 8個位元組
字元型:
字元型 char 2位元組
布林型:
布林型 boolean 1位元組 true/false
tip:1.8E20 代表 1.8*10的20次方
2.引用資料型別
String (字串)、類、介面等
提到String,便想起了 == 和 equals的區別,有時間專門整一下子,其實這些度娘那有一大把,我這就是用最簡單的語言表述一下
3.基本型別和引用型別的區別
引用型別的儲存原理:
基本資料型別 都是直接儲存在記憶體中的記憶體棧上的,資料本身的值就是儲存在棧空間裡面
引用型別 繼承於Object類(也是引用型別)都是按照Java裡面儲存物件的記憶體模型來進行資料儲存的,使用Java記憶體堆和記憶體棧來進行這種型別的資料儲存,簡單地講,“引用”是儲存在有序的記憶體棧上的,而物件本身的值儲存在記憶體堆上的;
4.資料型別轉換
public static void main(String[] args) {
//自動型別轉換,小範圍--->大範圍
long c =5;//int 5自動轉換成long型別
System.out.println(c); //5
//強制轉換型別 大範圍--->小範圍 ,精度可能損失
long c1=10L;
int b =(int)c1;
//double和float的經度範圍不同
double d =3.12345678999999999;
float f =(float)d;
System.out.println(f); //3.1234567
int a2 =(int)1000000000000000L;
System.out.println(a2);//-1530494976 精度損失
char b2 ='中';
int b3=b2;
System.out.println(b2);//中
System.out.println(b3);//20013
}
5.運算子
1.算術運算子
+: 加
a.求2個數的和
i.如果是兩個型別一樣的資料,直接求和
ii.如果兩個型別不一樣的資料.先轉成一樣,在求和
a.如果是byte,char,short 那麼無條件先轉成int
b.如果是多個型別相加,那麼最後的結果是最寬的型別
c.所有小數相加,得到都是近似值
b.連線一個字串和另外一個任意資料,得到連線後的新字串
-: 減
求兩個數差
*: 乘
求兩個數積
/: 除
求兩個數的商
如果兩個數都是整數,那麼結果肯定是整數
%: 取模/求餘數
10 % 3 結果是 1
++:自增
自增運算子只能用於變數
格式:
++變數名;
變數名++;
作用: 都是讓該變數的值增加1
++在前和在後的區別:
a.如果 變數名++ 或者 ++變數名 是單獨一個式子 那麼沒有任何區別
b. 如果 變數名++ 或者 ++變數名 不是單獨一個式子
口訣: ++在前,先加後用
++在後,先用後加
--:自減
自減運算子只能用於變數
格式:
--變數名;
變數名--;
作用:讓變數的值減少1
--在前和在後的區別:
a.如果 變數名-- 或者 --變數名 是單獨一個式子 那麼沒有任何區別
b. 如果 變數名-- 或者 --變數名 不是單獨一個式子
口訣:--在前,先減後用
--在後,先用後減
擴充套件:編譯器的優化
a.對byte short 賦值時,編譯器會優化,只要數值沒有超過範圍 那麼沒有問題
byte b = 10;
short s = 11;
b.如果是常量相加,編譯器階段直接計算
byte b = 1 + 2; // 編譯器會直接計算出 3
c.如果是變數相加,編譯器不會優化
byte b1 = 1;
byte b2 = 2;
int b3 = b1 + b2; //變數相加不優化,所以結果是int型別
int b4 = b1 + 2; //變數相加不優化,所以結果是int型別
int b5 = 1 + b2; //變數相加不優化,所以結果是int型別
2.賦值運算子
=: 最簡單的賦值運算子
int a = 10;
一個變數可以無數次賦值,但是該變數最終只能儲存一個值,最後一次賦的值
int a = 10;
+=:
a+=10; ====> a = a+10
注意: += 具有強轉功能
比如 byte b = 10;
b+=1;
// b = (byte)(b + 1);
tip: short、char、byte進行運算是自動轉化成了int型別
3.比較運算子
比較運算子 最後結果是 boolean類的值
>
<
>=
<=
==
!=
4.邏輯運算子
使用邏輯運算子 只能計算兩個boolean型別資料,其結果還是boolean
&&: 短路與 口訣:全真為真(一假則假)
||: 短路或 口訣:全假為假(一真則真)
! : 非 單目運算子, 口訣: 取反
^ : 異或 口訣:相同為假(不同為真)
短路與 和 短路或 中 "短路"的含義
false && 後面編譯器是不看的
true || 後面編譯器是不看的
5.三目/元運算子
符號: ? :
格式:
boolean型別值?值1:值2
結果: 如果boolean型別的值是true ,那麼結果就是值1
如果boolean型別的值是false,那麼結果就是值2
這個三元運算很簡單,但是等到用的時候總是想不起來,還是一直再用if..else 藍廋!