Java基礎知識-基本資料型別相互轉型
這是我第一次系統性的總結java這門語言的基礎知識用法,因本人經驗有限,所以在總結的過程中如果有錯誤或者有歧義等等之類的問題,都可以聯絡我QQ:208017534 不甚感激.
今天給大家介紹的是java中基本資料型別是如何進行相互轉換的。在介紹基本資料型別轉換之前,先給大家介紹一下什麼叫做基本資料型別:
java中資料型別分為兩種:1.基本資料型別、2.引用資料型別
基本資料型別大致可以分為4種八類
4種:整型、浮點型、字元型和布林型
八類:整型(byte、short、int、long)預設型別為int型別、浮點型(float、double) 預設型別為double型別、字元型(char)、布林型(boolean)
基本資料型別各個型別的取值範圍(其中大小指在儲存過程中需要佔的二進位制位)
這一章節先不討論什麼是陣列,類,介面,封裝等等之類的,我會在後面幾個章節中著重介紹的。引用資料型別:引用資料型別包括陣列、類和介面
1.首先先來介紹一下byte的轉型方法,下面看程式碼:
//byte注意事項 byte欄位在進行運算的時候發生轉型,
// 這個時候不能再將byte運算結果直接賦值給byte欄位了,需要強制型別轉換才可以。
byte b1=1;
byte b2=2;
// byte b3=b1+b2;//編譯不通過
byte b4=(byte)(b1+b2);
int i1=10;
// byte b5=i1;//編譯不通過
byte b6=20;
int i2=b6;
System.out.println("i2:"+i2);
2.short型別的轉換方法和byte類似,如果直接在short型別上進行相互運算就會發生編譯不通過的情形了。下面看具體例子: //short注意事項 short欄位在進行運算的時候發生轉型,
// 這個時候不能再將short運算結果直接賦值給short欄位了,需要強制型別轉換才可以。
short s1=1;
short s2=2;
// short s3=s1+s2;//編譯不通過
short s4=(short)(s1+s2);
3.long型別的轉換就完全可以互相運算了,下面看具體例子: long l1=1;
long l2=2;
long l3=l1+l2;
long l4=1+2;
4.並不是所有的型別都可以互相轉換的,有些型別差別太大轉換會編譯不通過或者執行出錯的。下面看看具體案例: //範圍大的轉為範圍小的可以不需要強制型別轉換就可以完成,
//反之範圍小的轉換為範圍大,因為會發生精度損失,所以必須要強制型別轉換才可以,否則編譯不通過。
//但是型別之間轉換也是要看欄位屬性是否相同,例如:int和double就可以進行互相轉換,可是int和String就不可以了。
String str="str";
// int i=(int)str;//編譯不通過
//這裡有個特例就是Object的強制型別轉換,因為Object是一個高度抽象的型別,所以可以強制轉換為各種型別,
//編譯都可以通過的,可是如果型別不符合,在執行的時候會發生錯誤。
Object o="str";
int i=(int)o;
5.數字字串又該如何轉型為相應的資料型別呢,下面看具體案例的介紹: //如果字串是數字型別的資料,又該怎麼進行轉換呢?
int i=Integer.valueOf("1");
float f=Float.valueOf("1.1");
double d=Double.valueOf("1.23");
//如果數字型別想轉為字串,又改如何進行轉換呢?
String strI=String.valueOf(1);
String strf=String.valueOf(1.0f);
String strd=String.valueOf(1.22d);
//還有一種更加堅簡單的方法是
String strIi=1+"";
String strff=1.0f+"";
String strDd=1.23d+"";
6.型別轉換過程中精度損失具體是損失哪些?下面看具體案例介紹: //強制型別轉換的過程中,精度是如何進行損失的?小的資料量型別往大的轉型又是如何擴大精度的呀?
int i = 1;
float f1 = 1.3f;
float f2 = 1.7f;
double d1 = 1.4d;
double d2 = 1.8d;
double d3 = 2.0;
int i1 = (int) f1;
int i2 = (int) f2;
int i3 = (int) d1;
int i4 = (int) d2;
int i5 = (int) d3;
float ff1 = i;
float ff2 = (float) d1;
double dd1 = i;
double dd2 = f1;
System.out.println("i1:" + i1);
System.out.println("i2:" + i2);
System.out.println("i3:" + i3);
System.out.println("i4:" + i4);
System.out.println("i4:" + i4);
System.out.println("ff1:" + ff1);
System.out.println("ff2:" + ff2);
System.out.println("dd1:" + dd1);
System.out.println("dd2:" + dd2);
//從結果可以看出在轉型的過程中如果是int型別的話,在轉化為float或者double都是變成(數值.0)的存在。
//如果是float或者double轉換為int的時候都是浮點型前面的整數部分給int,浮點型小樹後面的精度損失掉了。
//如果是float和double進行互相轉換的話就會發生很奇怪的事情,就是例如1.3f變成1.2999999523162842d了
//所有最好不要再float和double型別上面直接進行互相轉換,如果想要原值轉換最好是利用字串來進行轉換。
//例如下面將給出的這個例子:
float f=1.23f;
double dd11,dd22;
String strF=f+"";
dd11=Double.valueOf(strF);
dd22=f;
System.out.println("f:"+f);
System.out.println("dd11:"+dd11);
System.out.println("dd22:"+dd22);
7.字元和其他資料型別轉換過程是如何進行的呢?下面看看具體案例介紹: //型別轉換時有字元型參與運算
// 當有字元參與運算時,系統首先回去找對應的ASCII碼值,然後在參與運算 如 ‘a’ + 6 = 103
// 注意:int型別是可以賦值給char型別的 如 char a = (char) 97;
char c=(char)97;
int i='a';
System.out.println("c:"+c);
System.out.println("i"+i);
ASCII碼錶:
今天關於基本型別的轉換問題就介紹到這裡,因為本人經驗有限,沒辦法介紹的很完全,所以只能挑我日常經常使用的部分給大家做介紹。
如果大家對文章有什麼問題或者疑意之類的,可以加我訂閱號在上面留言,訂閱號上面我會定期更新最新部落格。如果嫌麻煩可以直接加我wechat:lzqcode
相關文章
- java基礎知識--資料型別Java資料型別
- Java基礎知識(變數、資料型別、運算子)Java變數資料型別
- java基礎之java的基本資料型別Java資料型別
- java基礎之一:基本資料型別Java資料型別
- JAVA基礎:Java變數型別間的相互轉換(轉)Java變數型別
- javascript基礎(基本資料型別轉換)(六)JavaScript資料型別
- Java基礎-基本型別和包裝型別Java型別
- java資料型別基礎Java資料型別
- [Java基礎]之 資料型別轉換Java資料型別
- String和基本資料型別的相互轉換資料型別
- JavaScript 基礎 (一) - 基本資料型別JavaScript資料型別
- Go 基礎之基本資料型別Go資料型別
- python的基礎資料型別有哪些知識Python資料型別
- [java基礎]之資料型別Java資料型別
- 重識JavaScript 之 資料型別的相互轉換JavaScript資料型別
- Python基礎02 基本資料型別Python資料型別
- Java 基本資料型別Java資料型別
- Java -基本資料型別Java資料型別
- Java基本資料型別Java資料型別
- java基礎(一) 深入解析基本型別Java型別
- 第二章 java基礎(基本資料型別介紹)Java資料型別
- JAVA中基本資料型別和引用資料型別Java資料型別
- 談談Java基礎資料型別Java資料型別
- Python基礎教程02 - 基本資料型別Python資料型別
- Java的基本資料型別Java資料型別
- Java註釋,識別符號,資料型別,型別轉換Java符號資料型別
- 基礎資料型別資料型別
- 基本資料型別轉化資料型別
- JavaScript 基本資料型別(轉)JavaScript資料型別
- Java中的基本資料型別與引用資料型別Java資料型別
- java基礎一:基本型別,運算子號Java型別
- java基礎:型別轉換castJava型別AST
- JAVA基礎--資料型別和運算子Java資料型別
- Java基礎語法之資料型別Java資料型別
- Java基礎知識掃盲(四)——泛型Java泛型
- C++基本資料型別及型別轉換C++資料型別
- java基本資料型別與自動轉換Java資料型別
- go語言資料型別-基礎型別Go資料型別