[JAVA] Java 變量、表達式和數據類型詳解

數據類型

1、變量

變量: 表示存儲空間,可用來存放某一類型(整數、小數...)的數據,沒有固定值,變量值是可變的,可重複使用,也能夠用來存儲某種類型的未知數據。數組

變量的特色大數據

① 佔據內存中的一塊存儲區域;編碼

② 該存儲區域有本身的名稱(變量名)和類型(數據類型);spa

③ 能夠被重複使用,能夠在多處使用;3d

④ 該區域的數據能夠在同一類型範圍內不斷變化;code

Java變量的定義對象

1.先聲明,再賦值:blog

int i;
i = 13;

2.聲明的同時賦值:接口

int i = 13;

3.同時聲明多個變量:生命週期

int i = 13,j = 14,k = 15;

變量的分類: 根據變量在類中定義的位置的不一樣,把變量分紅兩大類:

  • 成員變量:直接定義在類裏的變量,又稱爲全局變量或者字段,亦或稱之爲屬性。
  • 局部變量:變量除了成員變量以外,其餘的就是局部變量;局部變量根據定義位置的不一樣有3種表現形式:方法形參,方法內變量,代碼塊變量。

變量做用域: 變量的做用範圍或者可訪問範圍,只有做用域內,變量才能被其餘程序代碼訪問。當一個變量被定義時,它的做用域就肯定了: 從定義開始到定義所在的花括號結束。

變量使用規則:

  1. 變量必須先聲明,而且初始化後才能使用;
  2. 聲明變量必須有數據類型,不一樣的數據類型在內存中有不一樣的存儲空間;
  3. 同一做用域內變量名不能重複定義,且Java對大小寫敏感;

常量:程序中固定不變化的值,在Java中常量的生命週期從建立開始,到JVM關閉結束;

字面值常量: 也稱字面量,或者直接量,表示直接給出的一個值(能夠是整數,小數,true,false等),好比:整數常量1,2,3,小數常量3.14,布爾常量false,true等;

2、表達式

由數字、運算符、數字分組符號(括號)、常量、變量等能表達一個有意義的結果的排列組合;用運算符號鏈接的變量/常量可稱爲表達式。如:

k = i + j;
i - j;

表達式中操做數進行運算獲得的最終結果就是表達式的結果,表達式的運算順序大多和數學同樣。

表達式

3、數據類型

Java 數據類型

分類:在Java中數據類型總體上分紅兩大類:

1.基本數據類型/原生數據類型,共8個:

整數類型 : byte short int long                    
     小數類型 :  float double

2. 引用數據類型/對象數據類型: 類/接口/數組;

3. 在Java中,整數的默認類型是int,小數的默認類型是double

boolean(布爾)類型:一般用於邏輯運算和程序流程控制(條件選擇/循環),該類型的值只能是true 或 false,表示真或假,false和true是boolean的常量;在Java語法中不可使用0或非0的整數來代替false和true,注意區分於C語言,C語言是容許這樣的;

(特別說明:其實在JVM(Java虛擬機)中對boolean的處理是用0表示false,非0表示true的,但在語法中不容許的。)

默認狀況下,布爾類型的值是false;

整數類型: 有byte、short、int、long 這4種類型;

整型常量的四種表示形式:

① 二進制整數:0B或0b開頭(Java7的新特性),如:int a = 0B110;

② 八進制整數:要求以0開頭,如 int a = 012;

③ 十進制整數:如:int a = 17;

④ 十六進制整數:要求0X或0x開頭,如int a = 0x12;

Java語言的整型常量默認是int型,聲明long型變量須要在其後加上‘l’或‘L,因小寫的l容易和數字1相混淆,建議使用大寫L。

小數類型: 有float、double兩種類型;小數類型又稱爲浮點類型,float表示單精度類型,double表示雙精度類型,可是兩者都不能表示精確的小數。在精度要求高的系統好比:銀行系統,計費系統的高精度計算中,一般會使用BigDecimal類型。

Java的浮點類型常量有兩種表現形式:

  • 十進制形式: 例如:3.14 ,168.0, 0.618
  • 科學計數法形式: 例如:3.14e2, 3.14E2, 1000E-2 ,科學計數法表達式返回的結果是double類型;這裏的e/E 表示10,即 3.14e2 = 3.14 x 10^2。

默認狀況下,一個浮點類型的字面量默認是double類型.若要聲明一個常量爲float型,則需在常量後加上f 或 F,double常量後面的D或d可省略。

注意:Java裏只有浮點型的變量才能夠接受科學計算式結果。

字符類型(char): 字符,字母和符號;char類型:表示16位的無符號整數或者Unicode字符,Java對字符采用Unicode字符編碼。

Unicode收集了世界上全部語言文字中的符號,是一種跨平臺的編碼方式,Java的字符佔兩個字節,能夠表示一個漢字。

什麼是編碼呢?因爲計算機只能表示0和1兩個數,因而人們作規定使用一個數字去表示一個特定的字符,好比a使用97表示。因而誕生了ASCII(美國信息交互標準編碼)、Unicode這樣的字符編碼;char數據類型前256個字符和ASCII(美國信息交互標準編碼)碼中的字符重複。

ascii 對照表

char常量有3種表示形式:

① 使用單個字符來指定字符常量,用單引號括起來,格式如:'◆'、'A','a';

char c = 'A';

② 做爲十進制整數數值使用,可是數據範圍在[0,65535],格式如:97,不過打印出來的值是ASCII碼錶中對應的的符號:a。

char c = 97;

③ 和②同樣,但這裏表示的是16進制的數值,格式如:'\\uX',X表示16進制整數;如:97的16進制是61。那麼表示爲‘\\u0061’打印出來也是a。

char c = '\\u0061';

因此能夠說char本質上也是整型,但數據範圍在0 ~ 65535.

引用類型:除了8種基本數據類型,其餘全部類型都是引用數據類型,包括類、接口、數組。引用數據類型默認初始值都是null;字符串String實際上是一個類,不屬於基本數據類型,就不在這裏講了,後期會單獨爲String單獨介紹。

4、數據類型轉換

溢出:當要表示的數據超出數據類型的臨界範圍時,稱爲溢出。溢出狀況發生時程序並無作數據範圍檢查處理,此時會出現數據紊亂狀況。看以下的:演示

int最大值是:2147483647,若是對 2147483647 + 1 結果會是多少呢?

int 最大值

計算結果變成了最小值-2147483648,不是咱們預料中的2147483648;,能夠把數據類型看作一個容器,把數據看作要往容器中存放的物品,好比水,水裝滿了就會溢出,想裝更多的水,就得使用更大的容器,這樣就比較好理解了;因此在使用中,要爲數據選擇合適的數據類型,發生避免溢出這樣的錯誤。

數據類型轉換:把數據從一種類型轉換到另外一種類型,好比:從int到long,在8大基本數據類型中,boolean不參與轉換,由於boolean不屬於數值類型。轉換規則以下:

數據類型轉換

自動類型轉換,也稱爲「隱式類型轉換, 當把小數據範圍類型的數值或變量賦給另外一個大數據範圍類型變量,系統能夠完成自動類型轉型。這比如把裝一斤水容器裏的水倒進能夠裝兩斤水的容器裏同樣。通常的,咱們會直接把byte,short,char直接賦值給int類型。

當一個算術表達式中包含多個基本數據類型(boolean除外)的值時,整個算術表達式的數據類型將在數據運算時出現類型自動提高,其規則是:全部的byte、short、char類型被自動提高到int類型;整個表達式的最終結果類型被提高到表達式中類型最高的類型;

已有變量以下:
short s = 10;
byte a = 2;
int i = 5;
float f = 10.0F;
double d = 35.0;
判斷該表達式的結果類型:  (s / a) -(f / s) - (d + i)

下圖即是詳細運行過程:

表達式結果類型

完結。老夫雖不正經,但老夫一身的才華

相關文章
相關標籤/搜索