1. 程式人生 > >java基本數據類型和運算符

java基本數據類型和運算符

賦值運算符 區別 變量 例如 system 檢查 引用類型 mar employee

一、基本數據類型

種類:

  • 內置數據類型
  • 引用數據類型

1.內置數據類型

一共有八種基本類型,六個數字類型(四個整數類型,兩個浮點型),一個布爾型,一個字符類型。

(1)byte:

byte數據類型是8位、有符號的,以二進制補碼表示的整數;

最小值是-128(-2^7);

最大值是127(2^7-1);

默認值是0;

byte 類型用在大型數組中節約空間,可以代替其他整數類型,因為 byte 變量占用的空間只有 int 類型的四分之一(位數);

例子:byte a = 5,byte b = -100。

(2)short:

short數據類型是16位、有符號的以二進制補碼表示的整數

最小值是-32768(-2^15);

最大值是32767(2^15 - 1);

默認值是0;

short 類型也可以像byte那樣節省空間。一個short 變量占用的空間只有int 類型的二分之一(位數);

例子:short a = 30000,short b = -30000.

(3)int:

int數據類型是32位、有符號的以二進制補碼表示的整數

最小值是-2,147,483,648(-2^31);

最大值是2,147,483,647(2^31 - 1);

默認值是0

一般的整型變量默認為int 類型;

例子:int a = 100000,int b = -203982。

(4)long;

long 數據類型是 64 位、有符號的以二進制補碼表示的整數

最小值是 -9,223,372,036,854,775,808(-2^63);

最大值是 9,223,372,036,854,775,807(2^63 -1);

默認值為0L;

這種類型主要使用在需要比較大整數的系統上;

例子: long a = 100000L,Long b = -200000L。
"L"理論上不分大小寫,但是若寫成"l"容易與數字"1"混淆,不容易分辯。所以最好大寫。

解釋為什麽加上L:

example:
long l1 = 10000000000L;
實際上內存中l1只是一個long類型的變量,它存在於向stack(棧)中,數值並不在其中存放,它指向heap(堆)中另一塊真正存放數值的內存,加L的目的就是為了讓heap中也創建一塊long類型所需要的內存,用來來放數值。

所以說=前後兩者其實是在不同的兩塊內存,只不過有個無形的指針將兩者連接起來了。

以下的float和double同理。

(5)float:

float 數據類型是單精度、32位、符合IEEE 754標準的浮點數

float 在儲存大型浮點數組的時候可節省內存空間;

默認值是 0.0f;

浮點數不能用來表示精確的值,如貨幣(有待理解);

例子:float f1 = 234.5f。

(6)double:

double 數據類型是雙精度、64 位、符合IEEE 754標準的浮點數

浮點數的默認類型為double類型;

double類型同樣不能表示精確的值,如貨幣(有待理解);

默認值是 0.0d;

例子:double d1 = 123.4。

(7)boolean:

boolean數據類型表示一位的信息

只有兩個取值:true 和 false;

這種類型只作為一種標誌來記錄 true/false 情況;

默認值是 false;

例子:boolean one = true。

(8)char:

char類型是一個單一的 16 位 Unicode 字符

最小值是 \u0000(即為0);

最大值是 \uffff(即為65,535);

char 數據類型可以儲存任何字符;

例子:char letter = ‘A‘;。


可以用包裝類查看內置數據類型的範圍,它們被包裝在java.lang.內置數據類型裏面,最大值:內置數據類型.MAX_VALUE,最小值:內置數據類型.MIN_VALUE,位數:內置數據類型.SIZE

例如:

1 // char  
2         System.out.println("基本類型:char 二進制位數:" + Character.SIZE);  
3         System.out.println("包裝類:java.lang.Character");  
4         // 以數值形式而不是字符形式將Character.MIN_VALUE輸出到控制臺  
5         System.out.println("最小值:Character.MIN_VALUE="  
6                 + (int) Character.MIN_VALUE);  
7         // 以數值形式而不是字符形式將Character.MAX_VALUE輸出到控制臺  
8         System.out.println("最大值:Character.MAX_VALUE="  
9                 + (int) Character.MAX_VALUE);  

  結果:

基本類型:char 二進制位數:16
包裝類:java.lang.Character
最小值:Character.MIN_VALUE=0
最大值:Character.MAX_VALUE=65535
 2.引用數據類型
  • 在Java中,引用類型的變量非常類似於C/C++的指針。引用類型指向一個對象,指向對象的變量是引用變量。這些變量在聲明時被指定為一個特定的類型,比如 Employee、Puppy 等。變量一旦聲明後,類型就不能被改變了。
  • 對象、數組都是引用數據類型。
  • 所有引用類型的默認值都是null。
  • 一個引用變量可以用來引用任何與之兼容的類型。
  • 例子:Site site = new Site("Runoob")、int[]、String s1=new String(”punkll”)。

二、運算符

java運算符分成這幾種:

  • 算術運算符
  • 關系運算符
  • 位運算符
  • 邏輯運算符
  • 賦值運算符
  • 其他運算符

1、先說運算符的優先級

優先級運算符 簡介 結合性
1 [ ] . ( ) 方法調用,屬性獲取 從左向右
2 !、~、 ++、 -- 一元運算符 從右向左
3 * 、/ 、% 乘、除、取模(余數) 從左向右
4 + 、 - 加減法 從左向右
5 <<、 >>、 >>> 左位移、右位移、無符號右移 從左向右
6 < 、<= 、>、 >=、 instanceof 小於、小於等於、大於、大於等於,
對象類型判斷是否屬於同類型
從左向右
7 == 、!= 2個值是否相等,2個值是否不等於。
下面有詳細的解釋
從左向右
8 & 按位與 從左向右
9 ^ 按位異或 從左向右
10 | 按位或 從左向右
11 && 短路與 從左向右
12 || 短路或 從左向右
13 ?: 條件運算符 從右向左
14 =、 += 、-= 、*= 、/=、 %=、 &=、 |=、 ^=、 <、<= 、>、>= 、>>= 混合賦值運算符 從右向左

2、算術運算符

假設A=10,B=20。

操作符描述例子
+ 加法 - 相加運算符兩側的值 A + B 等於 30
- 減法 - 左操作數減去右操作數 A – B 等於 -10
* 乘法 - 相乘操作符兩側的值 A * B等於200
/ 除法 - 左操作數除以右操作數 B / A等於2
取余 - 左操作數除以右操作數的余數 B%A等於0
++ 自增: 操作數的值增加1 B++ 或 ++B 等於 21
-- 自減: 操作數的值減少1 B-- 或 --B 等於 19

++a和a++的區別在於++a是先運算後賦值(或是進行a表達式的運算),而a++是先賦值(或是進行a表達式的運算)後運算,這個和--a、a--一個道理,切記。

3、關系運算符

假設A=10,B=20。

運算符描述例子
== 檢查如果兩個操作數的值是否相等,如果相等則條件為真。 (A == B)為假。
!= 檢查如果兩個操作數的值是否相等,如果值不相等則條件為真。 (A != B) 為真。
> 檢查左操作數的值是否大於右操作數的值,如果是那麽條件為真。 (A> B)為假。
< 檢查左操作數的值是否小於右操作數的值,如果是那麽條件為真。 (A <B)為真。
>= 檢查左操作數的值是否大於或等於右操作數的值,如果是那麽條件為真。 (A> = B)為假。
<= 檢查左操作數的值是否小於或等於右操作數的值,如果是那麽條件為真。 (A <= B)為真。

4、位運算符

Java定義了位運算符,應用於整數類型(int),長整型(long),短整型(short),字符型(char),和字節型(byte)等類型。

位運算符作用在所有的位上,並且按位運算。假設a = 60,b = 13;它們的二進制格式表示將如下:

A = 0011 1100
B = 0000 1101
-----------------
A&b = 0000 1100
A | B = 0011 1101
A ^ B = 0011 0001
~A= 1100 0011

下表列出了位運算符的基本運算,假設整數變量A的值為60和變量B的值為13:

操作符描述例子
如果相對應位都是1,則結果為1,否則為0 (A&B),得到12,即0000 1100
| 如果相對應位都是0,則結果為0,否則為1 (A | B)得到61,即 0011 1101
^ 如果相對應位值相同,則結果為0,否則為1 (A ^ B)得到49,即 0011 0001
? 按位取反運算符翻轉操作數的每一位,即0變成1,1變成0。 (?A)得到-61,即1100 0011
<< 按位左移運算符。左操作數按位左移右操作數指定的位數。 A << 2得到240,即 1111 0000
>> 按位右移運算符。左操作數按位右移右操作數指定的位數。 A >> 2得到15即 1111
>>> 按位右移補零操作符。左操作數的值按右操作數指定的位數右移,移動得到的空位以零填充。 A>>>2得到15即0000 1111

5、邏輯運算符

下表列出了邏輯運算符的基本運算,假設布爾變量A為真,變量B為假。

操作符描述例子
&& 稱為邏輯與運算符。當且僅當兩個操作數都為真,條件才為真。 (A && B)為假。
| | 稱為邏輯或操作符。如果任何兩個操作數任何一個為真,條件為真。 (A | | B)為真。
稱為邏輯非運算符。用來反轉操作數的邏輯狀態。如果條件為true,則邏輯非運算符將得到false。 !(A && B)為真。

短路邏輯運算符

當使用與邏輯運算符時,在兩個操作數都為true時,結果才為true,但是當得到第一個操作為false時,其結果就必定是false,這時候就不會再判斷第二個操作了,即使第二個判斷它是ture,第一個判斷為false時,結果就是false。

6、賦值運算符

操作符描述例子
= 簡單的賦值運算符,將右操作數的值賦給左側操作數 C = A + B將把A + B得到的值賦給C
+ = 加和賦值操作符,它把左操作數和右操作數相加賦值給左操作數 C + = A等價於C = C + A
- = 減和賦值操作符,它把左操作數和右操作數相減賦值給左操作數 C - = A等價於C = C -
A
* = 乘和賦值操作符,它把左操作數和右操作數相乘賦值給左操作數 C * = A等價於C = C * A
/ = 除和賦值操作符,它把左操作數和右操作數相除賦值給左操作數 C / = A等價於C = C / A
(%)= 取模和賦值操作符,它把左操作數和右操作數取模後賦值給左操作數 C%= A等價於C = C%A
<< = 左移位賦值運算符 C << = 2等價於C = C << 2
>> = 右移位賦值運算符 C >> = 2等價於C = C >> 2
&= 按位與賦值運算符 C&= 2等價於C = C&2
^ = 按位異或賦值操作符 C ^ = 2等價於C = C ^ 2
| = 按位或賦值操作符 C | = 2等價於C = C | 2

7、條件運算符(?:)

條件運算符也被稱為三元運算符。該運算符有3個操作數,並且需要判斷布爾表達式的值。該運算符的主要是決定哪個值應該賦值給變量。

variable x = (expression) ? value if true : value if false
變量 x = (表達式) ? 值1 : 值2;
如果表達式為true就輸出值1,表達式為false就輸出值2。
8、instanceof運算符
該運算符用於操作對象實例,檢查該對象是否是一個特定類型(類類型或接口類型)。

instanceof運算符使用格式如下:

( Object reference variable ) instanceof  (class/interface type)
(對象引用變量) instanceof (類/接口)

如果運算符左側變量所指的對象,是操作符右側類或接口(class/interface)的一個對象,那麽結果為真。

例如:
String name = "James";
boolean result = name instanceof String; // 由於 name 是 String 類型,所以返回真
特別的,如果被比較的對象兼容於右側類型,該運算符仍然返回true。比如繼承了基類的子類。
取材於菜鳥教程和百度百科。
整數 [Zhěngshù] 技術分享圖片 Integer

java基本數據類型和運算符