Java基礎(二)★進制-變量-數據類型

進制

二進制:0~1,滿二進一,0b00011,0b10011,在JDK1.7之前程序中無法直接書寫一個二進制數字,JDK1.7之後要求是以0b開頭作爲標識

八進制:0~7,滿八進一,07,015,要求以0開頭作爲標識

十進制:0~9,滿十進一

十六進制:0~9,A~F,滿十六進一,0x20,0xA要求以0x開頭作爲標識,F+1 =10

進制之間的轉換

十進制轉換成二進制:不斷除以2取餘,然後將餘數倒排

二進制轉換成十進制:從低位次起,按位次乘以2的位次次冪,然後求和。

十進制向那個進制轉換就除以那個進制,然後取餘倒排

二進制向八進制轉換:從低位次起,每三位化爲一組,產生一位八進制數字,最高位不足三位,補0,三位以內,按照二進制向十進制的轉化規則進行運算,產生的八進制數字按順序排列---三變一

八進制轉換成二進制:一變三的過程--每一位八進制轉換成三位二進制數字,然後將這些二進制數字按順序排列

二進制轉換成十六進制:四變一的過程---類比二進制轉換成八進制

 

常量

不可改變的量:整數、小數、字符、字符串、布爾、null

整數常量:所有的整數,0,1,100,209

小數常量:所有的小數,0.9,100.1,1000.77

字符常量:將一個字母、數字、符號用 ‘’標識起來的量 ‘a’, ‘2’, ‘*’,(‘’, '  ' 不合法)

字符串常量:將一個或者多個字符用 “”標識起來的量, “a”, “bbb” , “”, “”

布爾常量:true和false---用於表示邏輯值    

空常量:只有一個值null

2,2.0, ‘2’, “2”分別是什麼常量?

2--整數 2.0--小數

變量

變量名、數據類型、數據

public class A{
public static void main(String[] a){
//變量必須先聲明再使用
i = 5;
int i;
}
//變量在哪兒定義在哪兒使用
i = 10;
}

擴展:1byte=8bit  1B = 8b, 1KB=1024B MB, GB,TB,PB

數據類型

基本數據類型

數值型

整型

byte---字節型---1個字節--8位-- -2^7 ~ 2^7-1--- -128~127

byte b = -128;

默認值是0

short---短整型---2個字節--- -2^15 ~ 2^15-1 --- -32768~32767

默認值是0
int---整型---4個字節--- -2^31 ~2^31-1

int i = 0b0011;

int i = 0x23;
//從JDK1.7開始,允許數字中間插入_分隔數字,在編譯的時候,會自動省略_

int i = 100_000_000;

Java中整數默認就是int類型

默認值是0

long---長整型---8個字節

long l = 4L;

默認值是0L

浮點型

float---單精度---4個字節

float f = 3.2f;

默認值是0.0f

double---雙精度---8個字節

Java中的小數默認就是double類型

double d = 4.5;

double d = 3.8D;

double d = 3e4;-> double d = 30000.0;

double d = 0x3p2;---十六進制的科學計數法的表示形式

默認值是0.0

注意:Java中的數值型類型都是有符號的。

字符型---char---2個字節--- 0-65535

編碼:阿斯科瑪表---ASCII 0-127  西歐碼錶---ISO8859-1 0-255  GB2312---2個字節表示一個漢字  ---GBK  Unicode編碼體系---UTF-8---3個字節表示一個字符---萬國碼表

char c = ‘f’;

char c = ‘中;

轉義字符

\t  製表符  \r 回車  \n 換行 \\ 反斜槓  \’單引號  \”雙引號

默認值: ‘\u0000’---以\u開頭表示這個字符是它對應的UTF-8的編碼

布爾型---boolean---大小根據操作系統和JDK版本不同而定---true/false

默認值:false

 包裝類數據

Java中的基本類型不是面向對象的,它們只是純粹的數據,除了數值本身的信息之外,基本類型數據不帶有其他信息或者可操作方法。這在實際使用中存在很多不足,爲了解決這個不足,* 對每個基本類型都對應了一個引用的類型*,稱爲裝箱基本類型。 

 

 

引用數據類型

類---class 接口---interface 數組---[]

數據類型的轉換

隱式轉換/自動類型轉換

byte b = 3;

int i = b;

轉換規律一:byte->short->int->long

long l = 34;//34默認是int類型,int類型的值可以賦值給long類型---在int類型的而取值範圍內,將值直接賦值給long類型,可以不加L

float f = 3.2f;

double d = f;

轉換規律二:float->double

int i = 3;

float f = i;

轉換規律三:int->float,可能會產生精度損失

float f = -25;//true

float f = 25.0;//false

long l = 34;

float f = l ;---->true

轉換規律四:任何一個整型都可以賦值給浮點型的變量,但是可能產生精度損失
int->double--->會產生精度損失

char c = ‘e’;

int i = c;

轉換規律五:char -> int

//這兩種寫法在編譯時期就已經轉換成了對應的形式了

char c = 98;--true--> char c = ‘b’;

short s = ‘b’;--true---> short s = 98;

char c = -1; //編譯報錯

//分開編譯的,編譯完了char c = ‘b’; ‘b’已經以字符形式存在了內存中

//由於兩句話是分開編譯的,所以現在JVM已經不確定c變量所表示表示的字符是否在short類型的取值範圍內了。

char c = ‘b’;

short s = c;--false

//編譯完成之後s的取值已經存入內存中了,再次使用s的時候,不能按照對應的碼錶轉換成字符,能確定這個數字是否在碼錶的範圍內嗎?

short s = 100;

char c = s;

因爲兩句話是分開編譯的,所以無法確定範圍。

 

各個基本類型之間是平等的,不存在大小或者說是父子關係。

顯示轉換/強制類型轉換

int i = 5;

byte b = (byte)i;

當把大的類型轉換爲小的類型的時候,需要強制轉換

float f = 3;->3.0f

int i = (int)f;

double d = 3.8;

int i = (int)d;-> i = 3;

當把浮點型數據轉換爲整型變量的時候,需要強制類型的轉換。小數轉換成整數的時候,不是四捨五入,而是捨棄掉小數部分。因此,小數轉換整數的時候,也會產生精度損失。

注意:在計算機中,絕大部分小數是沒有辦法精確表示的

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章