1.Java數據類型

Java數據類型是最基礎的部分,也是最容易忽視的重要部分。Java是強類型語言,因而對數據類型的掌握也提出了很高的要求。本文主要內容包括:

  • Java數據類型構成
  • 基本數據類型
  • 基本數據類型之間的類型轉換
  • String不是基本數據類型

1.Java數據類型構成

Java數據類型分爲兩大類:基本數據類型引用數據類型
基本數據類型包括:

  • 整型: byte \ short \ int \ long
  • 浮點型: float \ double
  • 字符型: char
  • 布爾型: boolean
    引用數據類型包括:
  • 類(class)
  • 接口(interface)
  • 數組(array)

Java數據類型

2.基本數據類型

2.1整型數據

類型 佔用存儲空間 表數範圍
byte 1字節=8bit位 -128~127
short 2字節 -215~215-1
int 4字節 -231~231-1(約21億)
long 8字節 -263~263-1

基本要求:

  1. Java中的整型常量默認爲int型,聲明long型常量必須加"L"或"l"結尾。
  2. Java中程序變量通常聲明爲int型,除非不足以表示爲較大的數,才使用long型。
  3. byte很容易超出範圍。
byte b1=12;
byte b2=128;//超出範圍,出錯
long num=22412414L;//聲明long型常量必須加"L"或"l"結尾

2.2浮點型

通常帶有小數點的數字稱爲浮點型。

類型 佔用存儲空間 表數範圍
float 4字節 -3.403E38~3.403E38
double 8字節 -1.798E308~1.798E308

注意:

1. float:

  • 單精度,尾數可以精確到7位有效數字,很多情況下,難以滿足要求
  • 聲明float常量,必須加"F"或"f"結尾
  • float表示的數值範圍比long型還要大。

2.double

  • 雙精度,精度是float的兩倍,通常採用此類型
double d1=123.3;
float f1=12.3f;//必須加"F"或"f"結尾

2.3字符類型 char

char 使用注意事項

  1. char 1字符=2個字節
  2. 定義char型變量,通常使用一對單引號—— ''
  3. char的三種表現形式
  • 單個字符
  • 轉義字符: \n \t
  • 直接使用Unicode值來表示字符型常量;’\uXXXX’,其中XXXX表示一個十六進制的整數,例如,\u000a表示\n;
char c1='a';
char c2='1';
char c3='中';
char c4='の';
char c5='\n';//換行
char c6='\t';//製表符
char c7='\u0043';//Unicode中表示  c

2.4布爾型 boolean

只有兩個值:true和false,常常使用在循環和條件判斷當中。

3.基本數據類型之間的類型轉換

前提:這裏討論的是7種基本數據類型之間的運算,不包括boolean類型。

3.1自動類型提升

提升規則
當容量小(表數範圍而不是字節大小)的數據類型的變量與容量大的數據類型的變量做運算的時候,結果自動提升爲容量大的數據類型。
byte /char/ short --> int --> long --> float --> double
特別地,當byte/char/short 三種變量做運算(包括同類型之間運算)時,結果爲int型。

byte b1=2;
int i1=129;
int i2=b1+i1;//相加提升到int
System.out.println();
float f1=b1+i1;
//******************************
char c1='a';
int i3=10;
int i4=c1+i3;
//******************************
short s2=10;
int i5=s2+c1;
//******************************
byte b2=10;
int i6=b2+c1;
//******************************
int i7=b1+b2;

3.2強制類型轉換

概念:自動提升運算的逆運算,即將容量大的數據類型轉換爲容量小的數據類型。
實現方法:使用強轉符號(),內部添加目標類型。
可能會導致精度損失。

double d1=12.9;
int i1=(int)d1;//12
//**************
long l1=123L;
int i2=(int) l1;
//**************
int i3=128;
byte b=(byte)i3;//-128

3.3兩種常見的編碼情況

  1. 可以不加L的long,不可以不加F的float
  • long型變量位數小時,可以不加L,原因是默認int,自動提升爲long型;位數大,已經超出int範圍,必須加L;
  • float型必須加F。
//不報錯,原因是默認int,自動提升爲long;
long l1=123;
//不加L會編譯失敗,已經超出int範圍
long l2=21323827747174712710990031L;
//編譯失敗,不加f默認double,需要強轉到float
//float f1=12.3
  1. 整型常量默認爲int,浮點型常量默認爲double
byte b1=12;
//報錯
//byte b2=b1+1;
//報錯
//float f1= b1+12.3;

4.String不是基本數據類型!!

4.1基本知識

  1. String屬於是引用數據類型;
  2. 聲明String類型變量,使用一對"";
  3. String可以和8種基本數據類型做運算,但是連接運算+,先運算的加數中有String類型則爲連接符號。運算結果爲String。
String s1="Hello World!";
String s2="a";
String s3="";
//char c1='';編譯不通過
char c2=' ';
//******************
int i=24;
String s1="科比的號碼:"
String info=s1+i;//連接運算

4.2測試

//*******測試1**********
char c='a';
int num=10;
String str="hello";
//*******計算一下的值**********
System.out.println(c+num+str);//107hello
System.out.println(c+str+num);//ahello10
System.out.println(c+(num+str));//a10hello
System.out.println((c+num)+str);//107hello
System.out.println(str+num+c);//hello10a
//*******測試2,判斷一下輸出結果**********
System.out.println("*	*");//*		*
System.out.println('*'+'\t'+'*');//93
System.out.println('*'+"\t"+'*');//*		*
System.out.println('*'+'\t'+"*");//51*
System.out.println('*'+('\t'+"*"));//*		*
//*******測試3,易錯題辨析,判斷對錯**********
String str1=4;//報錯
String str2 =3.5f+"";//
System.out.println(str2);//"3.5"
System.out.println(3+4+"Hello");//7Hello
System.out.println("Hello"+3+4);//Hello34
System.out.println('a'+1+"Hello"+3+4);//98Hello
System.out.println("Hello"+'a'+1);//Helloa1
//*******測試4,判斷能否通過編譯**********
//******1
short s=5;
s=s-2;//不能
//******2
byte b=3;
b=b+4;//no
b=(byte)(b+4)//yes
//******3
char c='a';
int i=5;
float d=.314F
double result = c+i+d;//yes
//******4
byte b=5;
short s=3;
short t=s+b;//no ,int

4.3 String和int轉換

1.int—>String

String str1=123+"";//”123“

2.String–>int

//使用基本數據類型包裝類的方法來實現
int num= Integer.parseInt(str1);//123
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章