[Java入門筆記] Java語言基礎(二):常量、變量與數據類型

常量與變量

什麼是常量和變量

常量與變量都是程序在運行時用來存儲數據一塊內存空間java

常量:

常量的值在程序運行時不能被改變,Java中聲明常量必須使用final關鍵字。常量還能夠分爲兩種意思:數組

第1種意思,就是一個值,這個值自己,咱們能夠叫它常量,舉幾個例子:編碼

整型常量: 123spa

實型常量:3.14code

字符常量: 'a'對象

邏輯常量:true、false排序

字符串常量:"helloworld"接口

這只是說法的問題,好比7這個數,咱們就能夠說「一個int類型的常量7 」內存

第2種意思,表示不可變的變量,這種也叫常量,從語法上來說也就是,加上final,使用final關鍵字來修飾某個變量,而後只要賦值以後,就不能改變了,就不能再次被賦值了ci

//聲明一個int類型的常量i
final int i = 1;
//聲明一個String對象類型的常量s,"Hello"字符串也是一個常量
final String s = "Hello";

須要注意的是:常量在聲明時必需要給這個常量賦一個值。

變量:

是程序運行時用來存儲數據的一塊內存空間,是程序中最基本的存儲單元,咱們可使用變量名訪問變量。

Java變量的分類:

按聲明位置分:

  局部變量

  成員變量

方法的參數是局部變量。

public class Test{
  int i1 = 1;  //成員變量
    public class static main(String[] args){  //args是方法的參數,因此也是局部變量
    int i2 = 2;  //局部變量
  }
}

按數據類型分:

  基本數據類型變量

  引用數據類型變量

public class Test{
  int i = 1;  //基本數據類型變量
  String s = new String();  //引用數據類型
}

 

使用變量的步驟:

第一步:聲明一個變量——根據類型在內存中開闢空間

第二步:賦值——將數據存入空間        

第三步:使用變量——獲得內存中的數據使用

咱們使用變量前必需要先聲明和賦值,聲明和賦值能夠分開,也能夠結合爲一步;

成員變量在聲明時若是沒有爲其顯式賦值,則會爲其分配一個默認值。

複製代碼

public class Test{

  int i3;  //若是是成員變量,系統會爲其默認分配一個值0

  public static void main(String[] args){
    int i1;  //聲明
    i1 = 1;  //賦值
    int i2 = 2;  //聲明的同時爲其賦值,2這個值也叫「直接量」
    System.out.println(i1);  //使用,將變量的值輸出到Java控制檯
  }
}

複製代碼

 

基本數據類型

Java是一種強類型語言,所謂強類型,就是每一個變量表達式在編譯時就必需要有一個肯定的數據類型。Java數據類型分爲兩大類:基本類型和引用類型。

引用數據類型爲:類、接口、數組。

Java中的基本數據類型分爲四類八種,分別爲:

基本數據類型

數值型

字符類型char

 

佔用空間:2字節

布爾類型boolean

 

佔用空間:1位

整數類型

浮點類型

字節byte

短整型short

整型int

長整型long

單精度型long

雙精度型double

1字節

2字節

4字節

8字節

4字節

8字節

-128~127

-32768~32767

-2147483648

~2147483647

-9223372036854774808

~9223372036854774807

-3.403E38

~3.403E38

-1.798E308

~1.798E308

整數類型

  • Java整形常量默認爲int類型,聲明long類型常量須要在後面加上L
  • Java語言整形常量的3種表現形式
    • 十進制整數:如12,-15,0
    • 八進制整數:要求以0開頭,如012
    • 十六進制數:要求以0x或0X開頭,如0x12
    • 注:由於Java中可使用十六進制方式賦值,所以相似於十進制10與十六進制A在內存中沒有區別。
    • Java7以後Java中也可使用二進制的方式爲整形賦值。

     

複製代碼

byte b1 = 127;  //正確
byte b2 = 128; //錯誤,超出範圍
short = b1;  //正確,將另一個變量的值賦給該變量,而且沒有超出範圍
int i1 = 12;//正確
int i2 = 012;  //正確
int i3 = 0x12;  //正確
System.out.println(i2);  //輸出10,由於i2是以8進制方式賦值的
System.out.println(i3);  //輸出18,由於i3是以16進制方式賦值的
long lo = 2147483648L;  //long類型聲明須要加上L

複製代碼

 

 

浮點類型

  • Java浮點類型常量有兩種表現形式:
    • 十進制數形式:例如3.14   314.0   .314
    • 科學計數法形式:如3.14e2   3.14E2   3.14E-2
  • Java浮點類型常量默認double,若是要聲明一個常量爲float則須要在後面加F
  • 由於精度問題,所以不要用浮點類型作等於比較
float f1 = 123;
float f2 = 123.4F;
double d1 = 1234.5;
double d = 3.141_592_65_36  //正確,java7後爲了使比較長的數據較有可讀性,能夠在數字之間使用下劃線

 

 

 字符類型

  • 字符類型是單引號括起來的單個字符
  • Java字符采用Unicode編碼,每一個字符佔兩個字節,於是能夠用十六進制編碼形式表示,如 char c = '\u0061';
  • 容許使用轉義字符'\'將其後字符轉爲其餘含義,如 char c = '\n';換行
  • Java 中經常使用的轉義字符
char c1 = '你';  //正確
char c2 = '你好';  //錯誤
char c3 = '\u9999';  //正確
System.out.println(c3);  //輸出'香'

 

 布爾類型

用來存儲"真","假"的類型,只有true和false兩種值。

boolean b = true;

 

 數據類型的轉換

  •  精度排序:(由低到高)  
    • Byte < short < int < long < float < double
  • 由低到高轉換時系統會自動轉換;高精度轉換爲低精度時,會有精度損失,須強制轉換;運算時,不一樣類型會自動轉換爲高精度類型。
    • byte b = 127;
      short s = b;  //會自動轉換爲short
      b = (byte)s;  //不會自動轉換,須要強制轉換
  • double常量轉換爲float常量產生溢出時不能轉換
    • 複製代碼

      public class Test {
          
          public static void main(String[] args) throws Exception {
              double d = 12222222222222222222222222222222222222222222222222222.3;
              float f = (float) d;  //d的值已經超出了float的範圍,因此轉換會「溢出」,可是編譯不會報錯
              System.out.println(f);  //由於產生了溢出,因此輸出「Infinity」
          }
      
      }

      複製代碼

  • 系統在運算時會將數值自動轉換爲int型,將運算結果賦給原來的類型時須要進行強制轉換。
    • byte b1 = 1;
      byte b2 = (byte) (b1 + 2);  //數值運算時會自動轉換爲int,因此計算出結果後將值再賦給byte類型變量b2時須要強制轉換
  • 若是常量值超出了默認類型時,必須在後面加大於該默認類型的數值類型開頭字母,如 long num=30000000000L; 由於整型類型默認爲int,但30000000000在int中放不下,因此要在後面加小寫l或大寫L,轉換爲long型。
  • (數據類型名)要轉換的變量或值  與  要轉換的變量或值+轉換符  這兩種轉換方式有本質上的區別,前一種表示它在計算機中是他原來的類型,再把它強制轉換成如今的類型,後一種表示它一開始在計算機裏就已是轉換完成了的這種類型。
    • long lo = (long)2;
      long lo2 = 2L;     //這兩種聲明或轉換有本質區別
相關文章
相關標籤/搜索