最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java 數(shù)據(jù)類(lèi)型及類(lèi)型轉(zhuǎn)換的互相轉(zhuǎn)換實(shí)例代碼

 更新時(shí)間:2020年10月02日 11:39:13   作者:paradipose  
這篇文章主要介紹了Java 數(shù)據(jù)類(lèi)型及類(lèi)型轉(zhuǎn)換的互相轉(zhuǎn)換實(shí)例代碼,需要的朋友可以參考下

一、基本數(shù)據(jù)類(lèi)型

java的數(shù)據(jù)類(lèi)型可以分為兩大類(lèi):基本類(lèi)型和復(fù)合類(lèi)型。

基本類(lèi)型:整型(int,short,long,byte)、浮點(diǎn)型(float,double)、布爾型(boolean)、和字符型(char)

復(fù)合類(lèi)型:數(shù)組,類(lèi),接口

1.整型

各種整型數(shù)據(jù)所占空間及數(shù)的范圍

數(shù)據(jù)類(lèi)型 所占內(nèi)存空間/位 數(shù)的范圍
byte 8 -128~127
short 16 -32768~32767
int 32 -2^31~2^31-1
long 64 -2^63~2^63-1

整型以補(bǔ)碼的形式存放在內(nèi)存中。

2.浮點(diǎn)型

浮點(diǎn)類(lèi)型所占的位數(shù)及數(shù)值范圍

數(shù)據(jù)類(lèi)型 所占內(nèi)存空間/位 有效數(shù)字 數(shù)值范圍
float 32 7個(gè)十進(jìn)制位 約+-3.4x10^38
double 64 15~16個(gè)十進(jìn)制位 約+-1.8x10^308

3.字符型

用char表示。2字節(jié)(16位)來(lái)存放一個(gè)字符,并且存放的不是ASCII碼是Unicode碼。

4.布爾型

用boolean表示。只有兩個(gè)取值true和false。

二、常量

常量包含整型常量,浮點(diǎn)型常量,字符型常量,字符串常量以及布爾常量,符號(hào)常量(用final來(lái)定義 eg final int MALE = 1;)

1.整型常量

十進(jìn)制(正數(shù),負(fù)數(shù),0),八進(jìn)制(以0開(kāi)頭)和十六進(jìn)制(以0x或0x開(kāi)頭)

2.浮點(diǎn)型常量

浮點(diǎn)型常量有兩種表示形式。

普通的十進(jìn)制數(shù)形式。由數(shù)字和小數(shù)組成。如0.123;123.0;0.0;.123;123.都是合法的

指數(shù)形式。1.5E5表示1.5x10^5;2.9E-7表示2.9x10^-7。注意字母E(也可以是小寫(xiě)e)之前必須有數(shù)字,且E后面的指數(shù)必須是整數(shù)。如E3,2E1.7均不合法。

java規(guī)定浮點(diǎn)數(shù)默認(rèn)雙精度,如果需要指定單精度,需要在末尾加上F或f.比如12.5F,2E5f。

三、變量

java用來(lái)表示變量名、常量名、方法名、類(lèi)名的有效字符序列都成為用戶自定義標(biāo)識(shí)符,簡(jiǎn)稱(chēng)標(biāo)識(shí)符。eg:int a = 1;a就是一個(gè)標(biāo)識(shí)符。

變量包含整型變量,浮點(diǎn)型變量,字符變量,布爾型變量。

1.浮點(diǎn)型變量

浮點(diǎn)數(shù)的采用二進(jìn)制方式存儲(chǔ)的,二進(jìn)制浮點(diǎn)數(shù)往往不能精確表示一個(gè)十進(jìn)制小數(shù),即使這個(gè)小數(shù)是一個(gè)有限小數(shù),比如1.3,它在內(nèi)存中也是一個(gè)無(wú)限小數(shù),即可能是1.299999,也可能是1.300001。所以盡量避免直接比較兩個(gè)浮點(diǎn)數(shù)是否精確相等。通常的方法是比較兩個(gè)兩個(gè)浮點(diǎn)數(shù)的差值是否足夠接近0。

2.字符變量

將一個(gè)字符存放到字符變量中,實(shí)際上并不是把該字符本身存放到內(nèi)存單元內(nèi),而是將該字符的Unicode碼存放到內(nèi)存單元中。比如字符‘A'的Unicode嗎是0x0041,它會(huì)以二進(jìn)制存儲(chǔ)在內(nèi)存中。

它的存儲(chǔ)類(lèi)型和short很相似,其實(shí)Java確實(shí)將字符變量作為無(wú)符號(hào)的短整型數(shù)據(jù)來(lái)處理的,這就決定了Java中的字符數(shù)據(jù)和整型數(shù)據(jù)之間可以通用。用戶對(duì)可以對(duì)字符型數(shù)據(jù)進(jìn)行算數(shù)運(yùn)算,此時(shí)相當(dāng)于將它的Unicode碼看成一個(gè)整數(shù)進(jìn)行運(yùn)算。

Java規(guī)定一個(gè)局部變量在使用之前必須要初始化,否則無(wú)法通過(guò)編譯。局部變量指的是定義在方法里的變量,它只有在方法里有效,在方法外無(wú)法使用。

四、數(shù)據(jù)類(lèi)型轉(zhuǎn)換

轉(zhuǎn)換基本規(guī)則:范圍小的轉(zhuǎn)為范圍大的,精度小的轉(zhuǎn)為精度大的。按照數(shù)據(jù)轉(zhuǎn)換時(shí)是否有會(huì)損失精度,Java中的轉(zhuǎn)換分為擴(kuò)展轉(zhuǎn)換和縮減轉(zhuǎn)換。

1.擴(kuò)展轉(zhuǎn)換

原類(lèi)型 目的類(lèi)型
byte short,int,long,float,double
short int,long,float,double
char int,long,float,double
int long,float,,double
long float,double
float double

eg:byte+int —— int+int;int+double —— double+double

Java規(guī)定,如果兩個(gè)數(shù)據(jù)類(lèi)型沒(méi)出現(xiàn)在同一行的兩列,則兩個(gè)數(shù)據(jù)都必須轉(zhuǎn)換成同一類(lèi)型,若這個(gè)目的類(lèi)型有多個(gè)可以選擇,則選精度,范圍最小的那個(gè)。

eg: byte+char —— int+int。

擴(kuò)展轉(zhuǎn)換是系統(tǒng)自動(dòng)進(jìn)行的,又稱(chēng)自動(dòng)類(lèi)型轉(zhuǎn)換,不會(huì)損失精度。

2.縮減轉(zhuǎn)換

Java規(guī)定凡是符合下表的轉(zhuǎn)換,稱(chēng)為縮減轉(zhuǎn)換。這種轉(zhuǎn)換會(huì)損失精度,系統(tǒng)不會(huì)自動(dòng)進(jìn)行,需要程序員顯示地指定。

原類(lèi)型 目的類(lèi)型
short byte
char byte,short
int byte,short,char
long byte,short,char,int
float byte,short,char,int,long
double byte,short,char,int,long,float

要將第一列的數(shù)據(jù)轉(zhuǎn)換成第二列的數(shù)據(jù)類(lèi)型,必須使用強(qiáng)制類(lèi)型轉(zhuǎn)化?;靖袷剑海〝?shù)據(jù)類(lèi)型)數(shù)據(jù)

eg: int a —— (byte)a

強(qiáng)制類(lèi)型轉(zhuǎn)換也可用在擴(kuò)展轉(zhuǎn)換中,使閱讀更清晰。

eg: long+int+byte —— long+(long)int+(long)byte

注意:無(wú)論擴(kuò)展轉(zhuǎn)換還是縮減轉(zhuǎn)換,只是產(chǎn)生元數(shù)據(jù)的一個(gè)副本,轉(zhuǎn)換結(jié)果對(duì)元數(shù)據(jù)沒(méi)有影響。

五、JAVA數(shù)據(jù)類(lèi)型轉(zhuǎn)換大全

1)將字符串轉(zhuǎn)化為整型;

int i = Integer.parseInt(String str);
int i = Integer.valueOf(String str).intValue();

注:Integer.parseInt和 Integer.valueOf 不同,前者生成的是整型,而后者是一個(gè)對(duì)象,所以要通過(guò)intValue()來(lái)獲得對(duì)象的值;
字串轉(zhuǎn)成 Double, Float, Long 的方法大同小異.

2) 整型轉(zhuǎn)化為字符串:

String str = String.valueOf(int i);
String str = Integer.toString(int i);
String str = “” + i ;

注: Double, Float, Long 的方法大同小異.

3) Long轉(zhuǎn)化為date:

SimpleDateFormat sf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
//tieml,timef是long,前面轉(zhuǎn)化過(guò)來(lái)的
Date date = new Date(timel - timef);
String time = sf.parse(date);

1、float型轉(zhuǎn)換為double型:

float f1=100.00f;
Float F1=new Float(f1);
//F1.doubleValue()為Float類(lèi)的返回double值型的方法
double d1=F1.doubleValue();

2、double型轉(zhuǎn)換為int型:

double d1=100.00;
Double D1=new Double(d1);
int i1=D1.intValue();

3、int型轉(zhuǎn)換為double型:

int i1=200;
double d1=i1;

(2). 字符串與其它數(shù)據(jù)類(lèi)型的轉(zhuǎn)換

4、字符串與其它類(lèi)型間的轉(zhuǎn)換:

⑴其它類(lèi)型向字符串的轉(zhuǎn)換

①調(diào)用類(lèi)的串轉(zhuǎn)換方法:X.toString();
②自動(dòng)轉(zhuǎn)換:X+“”;
③使用String的方法:String.valueOf(X);

⑵字符串作為值,向其它類(lèi)型的轉(zhuǎn)換

①先轉(zhuǎn)換成相應(yīng)的封裝器實(shí)例,再調(diào)用對(duì)應(yīng)的方法轉(zhuǎn)換成其它類(lèi)型

例如,字符中“32.1”轉(zhuǎn)換double型的值的格式為:new Float(“32.1”).doubleValue()。
也可以用:Double.valueOf(“32.1”).doubleValue()

②靜態(tài)parseXXX方法

String s = "1";
byte b = Byte.parseByte( s );
short t = Short.parseShort( s );
int i = Integer.parseInt( s );
long l = Long.parseLong( s );
Float f = Float.parseFloat( s );
Double d = Double.parseDouble( s );

③Character的getNumericValue(char ch)方法

返回指定的 Unicode 字符表示的 int 值。

(3). 其它實(shí)用數(shù)據(jù)類(lèi)型轉(zhuǎn)換

5.Date類(lèi)與其它數(shù)據(jù)類(lèi)型的相互轉(zhuǎn)換

整型和Date類(lèi)之間并不存在直接的對(duì)應(yīng)關(guān)系,只是你可以使用int型為分別表示年、月、日、時(shí)、分、秒,這樣就在兩者之間建立了一個(gè)對(duì)應(yīng)關(guān)系,在作這種轉(zhuǎn)換時(shí),你可以使用Date類(lèi)構(gòu)造函數(shù)的三種形式:

①Date(int year, int month, int date):以int型表示年、月、日
②Date(int year, int month, int date, int hrs, int min):以int型表示年、月、日、時(shí)、分
③Date(int year, int month, int date, int hrs, int min, int sec):以int型表示年、月、日、時(shí)、
分、秒

在長(zhǎng)整型和Date類(lèi)之間有一個(gè)很有趣的對(duì)應(yīng)關(guān)系,就是將一個(gè)時(shí)間表示為距離格林尼治標(biāo)準(zhǔn)時(shí)間1970年1月1日0時(shí)0分0秒的毫秒數(shù)。對(duì)于這種對(duì)應(yīng)關(guān)系,Date類(lèi)也有其相應(yīng)的構(gòu)造函數(shù):Date(long date)。
獲取Date類(lèi)中的年、月、日、時(shí)、分、秒以及
星期你可以使用Date類(lèi)的getYear()、getMonth()、getDate()、getHours()、getMinutes()、getSeconds()、getDay()方法,你也可以將其理解為將Date類(lèi)轉(zhuǎn)換成int。
而Date類(lèi)的getTime()方法可以得到我們前面所說(shuō)的一個(gè)時(shí)間對(duì)應(yīng)的長(zhǎng)整型數(shù),與包裝類(lèi)一樣,Date類(lèi)也有一個(gè)toString()方法可以將其轉(zhuǎn)換為String類(lèi)。
有時(shí)我們希望得到Date的特定格式,例如20020324,我們可以使用以下方法,首先在文件開(kāi)始引入,

import java.text.SimpleDateFormat;
import java.util.*;
java.util.Date date = new java.util.Date();
//如果希望得到Y(jié)YYYMMDD的格式
SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMDD");
String dateFormat=sdf.format(date);
//如果希望分開(kāi)得到年,月,日
SimpleDateFormat sy=newSimpleDateFormat("yyyy");
SimpleDateFormat sm=new SimpleDateFormat("MM");
SimpleDateFormat sd=new SimpleDateFormat("dd");
String syear=sy.format(date);
String smon=sm.format(date);
String sday=sd.format(date);
//js中將Data轉(zhuǎn)換成String類(lèi)型
* 對(duì)Date的擴(kuò)展,將 Date轉(zhuǎn)化為指定格式的String
* 月(M)、日(d)、12小時(shí)(h)、24小時(shí)(H)、分(m)、秒(s)、周(E)、季度(q) 可以用 1-2個(gè)占位符
* 年(y)可以用 1-4 個(gè)占位符,毫秒(S)只能用 1 個(gè)占位符(是 1-3位的數(shù)字)
*eg:
* (new Date()).pattern("yyyy-MM-dd hh:mm:ss.S") ==>2006-07-0208:09:04.423
* (new Date()).pattern("yyyy-MM-dd E HH:mm:ss") ==>2009-03-10 二20:09:04
* (new Date()).pattern("yyyy-MM-dd EE hh:mm:ss") ==>2009-03-10 周二08:09:04
* (new Date()).pattern("yyyy-MM-dd EEE hh:mm:ss")==> 2009-03-10 星期二08:09:04
* (new Date()).pattern("yyyy-M-d h:m:s.S") ==>2006-7-2 8:9:4.

6.字符型轉(zhuǎn)時(shí)間型:(2005-10-1)

reportdate_str = “2005-10-01”;
reportdate_str = reportdate_str + “ 00:00:00.0”
reportdate = java.sql.Timestamp.valueOf(reportdate_str);

7.時(shí)間型轉(zhuǎn)字符型:

V_DATE = reportdate.toString();

8.將long型轉(zhuǎn)化為String型

long APP_UNIT = (long)userview.getDEPT_ID();
String S_APP_UNIT = String.valeOf(APP_UNIT);

基本類(lèi)型s都可以通過(guò)String.valueof(s)來(lái)轉(zhuǎn)化為String型。

JAVA中常用數(shù)據(jù)類(lèi)型轉(zhuǎn)換函數(shù)

雖然都能在JAVA API中找到,整理一下做個(gè)備份。string->byte
Byte static byte parseByte(String s) byte->string
Byte static String toString(byte b)char->string
Character static String to String (char c)string->Short
Short static Short parseShort(String s)Short->String
Short static String toString(Short s)String->Integer
Integer static int parseInt(String s)Integer->String
Integer static String tostring(int i)String->Long
Long static long parseLong(String s)Long->String
Long static String toString(Long i)String->Float
Float static float parseFloat(String s)Float->String
Float static String toString(float f)String->Double
Double static double parseDouble(String s)Double->String
Double static String toString(Double)

數(shù)據(jù)類(lèi)型

基本類(lèi)型有以下四種:
int長(zhǎng)度數(shù)據(jù)類(lèi)型有:byte(8bits)、short(16bits)、int(32bits)、long(64bits)、
float長(zhǎng)度數(shù)據(jù)類(lèi)型有:?jiǎn)尉龋?2bits float)、雙精度(64bits double)
boolean類(lèi)型變量的取值有:ture、false
char數(shù)據(jù)類(lèi)型有:unicode字符,16位
對(duì)應(yīng)的類(lèi)類(lèi)型:Integer、Float、Boolean、Character、Double、Short、Byte、Long

轉(zhuǎn)換原則

從低精度向高精度轉(zhuǎn)換
byte 、short、int、long、float、double、char

注:兩個(gè)char型運(yùn)算時(shí),自動(dòng)轉(zhuǎn)換為int型;當(dāng)char與別的類(lèi)型運(yùn)算時(shí),也會(huì)先自動(dòng)轉(zhuǎn)換為int型的,再做其它類(lèi)型的自動(dòng)轉(zhuǎn)換

基本類(lèi)型向類(lèi)類(lèi)型轉(zhuǎn)換

正向轉(zhuǎn)換:通過(guò)類(lèi)包裝器來(lái)new出一個(gè)新的類(lèi)類(lèi)型的變量

Integer a= new Integer(2);

反向轉(zhuǎn)換:通過(guò)類(lèi)包裝器來(lái)轉(zhuǎn)換

int b=a.intValue();

類(lèi)類(lèi)型向字符串轉(zhuǎn)換

正向轉(zhuǎn)換:因?yàn)槊總€(gè)類(lèi)都是object類(lèi)的子類(lèi),而所有的object類(lèi)都有一個(gè)toString()函數(shù),所以通過(guò)toString()函數(shù)來(lái)轉(zhuǎn)換即可
反向轉(zhuǎn)換:通過(guò)類(lèi)包裝器new出一個(gè)新的類(lèi)類(lèi)型的變量

eg1: int i=Integer.valueOf(“123”).intValue()

說(shuō)明:上例是將一個(gè)字符串轉(zhuǎn)化成一個(gè)Integer對(duì)象,然后再調(diào)用這個(gè)對(duì)象的intValue()方法返回其對(duì)應(yīng)的int數(shù)值。

eg2: float f=Float.valueOf(“123”).floatValue()

說(shuō)明:上例是將一個(gè)字符串轉(zhuǎn)化成一個(gè)Float對(duì)象,然后再調(diào)用這個(gè)對(duì)象的floatValue()方法返回其對(duì)應(yīng)的float數(shù)值。

eg3: boolean b=Boolean.valueOf(“123”).booleanValue()

說(shuō)明:上例是將一個(gè)字符串轉(zhuǎn)化成一個(gè)Boolean對(duì)象,然后再調(diào)用這個(gè)對(duì)象的booleanValue()方法返回其對(duì)應(yīng)的boolean數(shù)值。

eg4:double d=Double.valueOf(“123”).doubleValue()

說(shuō)明:上例是將一個(gè)字符串轉(zhuǎn)化成一個(gè)Double對(duì)象,然后再調(diào)用這個(gè)對(duì)象的doubleValue()方法返回其對(duì)應(yīng)的double數(shù)值。

eg5: long l=Long.valueOf(“123”).longValue()

說(shuō)明:上例是將一個(gè)字符串轉(zhuǎn)化成一個(gè)Long對(duì)象,然后再調(diào)用這個(gè)對(duì)象的longValue()方法返回其對(duì)應(yīng)的long數(shù)值。

eg6: char=Character.valueOf(“123”).charValue()

說(shuō)明:上例是將一個(gè)字符串轉(zhuǎn)化成一個(gè)Character對(duì)象,然后再調(diào)用這個(gè)對(duì)象的charValue()方法返回其對(duì)應(yīng)的char數(shù)值。

基本類(lèi)型向字符串的轉(zhuǎn)換

正向轉(zhuǎn)換:

如:

int a=12;
String b;b=a+””;

反向轉(zhuǎn)換:

通過(guò)類(lèi)包裝器

eg1:int i=Integer.parseInt("123")

說(shuō)明:此方法只能適用于字符串轉(zhuǎn)化成整型變量

eg2: float f=Float.valueOf(“123”).floatValue()

說(shuō)明:上例是將一個(gè)字符串轉(zhuǎn)化成一個(gè)Float對(duì)象,然后再調(diào)用這個(gè)對(duì)象的floatValue()方法返回其對(duì)應(yīng)的float數(shù)值。

eg3: boolean b=Boolean.valueOf(“123”).booleanValue()

說(shuō)明:上例是將一個(gè)字符串轉(zhuǎn)化成一個(gè)Boolean對(duì)象,然后再調(diào)用這個(gè)對(duì)象的booleanValue()方法返回其對(duì)應(yīng)
的boolean數(shù)值。

eg4:double d=Double.valueOf(“123”).doubleValue()

說(shuō)明:上例是將一個(gè)字符串轉(zhuǎn)化成一個(gè)Double對(duì)象,然后再調(diào)用這個(gè)對(duì)象的doubleValue()方法返回其對(duì)應(yīng)的double數(shù)值。

eg5: long l=Long.valueOf(“123”).longValue()

說(shuō)明:上例是將一個(gè)字符串轉(zhuǎn)化成一個(gè)Long對(duì)象,然后再調(diào)用這個(gè)對(duì)象的longValue()方法返回其對(duì)應(yīng)的long數(shù)值。

eg6: char=Character.valueOf(“123”).charValue()

說(shuō)明:上例是將一個(gè)字符串轉(zhuǎn)化成一個(gè)Character對(duì)象,然后再調(diào)用這個(gè)對(duì)象的charValue()方法返回其對(duì)應(yīng)的char數(shù)值。

六、java 數(shù)據(jù)類(lèi)型轉(zhuǎn)換的陷阱

本文通過(guò)時(shí)間數(shù)值的處理來(lái)研究一下數(shù)據(jù)類(lèi)型的自動(dòng)轉(zhuǎn)換。我們知道:System.currentTimeMillis();返回的是long類(lèi)型的數(shù)值。當(dāng)計(jì)算時(shí)間相加的時(shí)候,如果不注意數(shù)據(jù)類(lèi)型的自動(dòng)轉(zhuǎn)換,則很容易出現(xiàn)問(wèn)題,如下所示:

Date expiration = new Date(System.currentTimeMillis() + 1000 * 60 * 60 * 24 * 365 * 5);

上面例子本意是求5年后的過(guò)期時(shí)間,而實(shí)際輸出的結(jié)果卻比當(dāng)前時(shí)間還早的時(shí)間值。究其原因是java數(shù)值計(jì)算過(guò)程中發(fā)生的溢出。為什么會(huì)出現(xiàn)溢出呢?java不是存在數(shù)據(jù)類(lèi)型自動(dòng)轉(zhuǎn)換嗎?轉(zhuǎn)換規(guī)則如下所示:

低————————————–>高
byte,short,char->int->long->float->double

在運(yùn)算中,不同類(lèi)型的數(shù)據(jù)先轉(zhuǎn)化為同一類(lèi)型,然后進(jìn)行運(yùn)算。雖然java中存在數(shù)據(jù)類(lèi)型自動(dòng)轉(zhuǎn)換,但是需要注意的是:各運(yùn)算符是有優(yōu)先級(jí)的,乘法的運(yùn)算優(yōu)先級(jí)要高于加法,因此,java會(huì)執(zhí)行完乘法運(yùn)算后再執(zhí)行加法運(yùn)行。而執(zhí)行乘法運(yùn)算時(shí),所有的操作數(shù)都是int型,因此沒(méi)有觸發(fā)自動(dòng)類(lèi)型轉(zhuǎn)換,運(yùn)算的結(jié)果自然是int型的,所以導(dǎo)致1000 * 60 * 60 * 24 * 365 * 5在計(jì)算過(guò)程中發(fā)生溢出。知道了原因就好辦了,可以在乘法運(yùn)算時(shí)進(jìn)行一次強(qiáng)制類(lèi)型轉(zhuǎn)換:

Date expiration = new Date(System.currentTimeMillis() + 1000L * 60 * 60 * 24 * 365 * 5);

從而可以獲得正確的過(guò)期時(shí)間。

java避開(kāi)基本數(shù)據(jù)類(lèi)型轉(zhuǎn)換列表陷阱

在開(kāi)發(fā)過(guò)程中經(jīng)常會(huì)使用Arrays和Collections這兩個(gè)工具類(lèi)在數(shù)組和列表之間進(jìn)行轉(zhuǎn)換,使用起來(lái)非常方便,但有時(shí)候會(huì)不小心陷入陷阱里面,看代碼

public static void main(String[] args) {
     int[] data = {1,2,3,4,5};
     List list = Arrays.asList(data);
     System.out.println(list.size());
   }

答案為5 是不是?但是運(yùn)行代碼看看然而 結(jié)果為 1;是不是很意外?很吃驚?

別急,慢慢回答你的疑惑,先看下 Arrays.asList 的底層實(shí)現(xiàn)代碼,

 public static <T> List<T> asList(T... a) {
  return new ArrayList<>(a);
 }

通過(guò)看底層源碼,我們知道這個(gè)功能是通過(guò)泛型實(shí)現(xiàn)的,我們也知道java8個(gè)基本數(shù)據(jù)類(lèi)型是不能泛型化的,在上面的代碼中 Arrays.asList 將數(shù)組當(dāng)做一個(gè)整體進(jìn)行處理了,

為了解決這個(gè)問(wèn)題我們將 代碼稍稍改下就好,將基本數(shù)據(jù)類(lèi)型變?yōu)榘b類(lèi)型就解決了

public static void main(String[] args) {
     Integer[] data = {1,2,3,4,5};
     List list = Arrays.asList(data);
     System.out.println(list.size());
   }

下面附送兩個(gè)面試陷阱題

面試陷阱1:

byte b1 = 10;
byte b2 = 20;
//錯(cuò)誤: 不兼容的類(lèi)型: 從int轉(zhuǎn)換到byte可能會(huì)有損失
//否則,兩個(gè)操作數(shù)都將轉(zhuǎn)換為int類(lèi)型。
byte b3 = b1 + b2 //錯(cuò)誤,b1+b2是int類(lèi)型,java的整數(shù)默認(rèn)類(lèi)型為int,b3是byte類(lèi)型,二者類(lèi)型不同,所以出錯(cuò)
byte b3 = (byte)(b1 + b2); //正確

面試陷阱2:

short s1 = 10; 
s1 = s1 + 12; //錯(cuò)誤: 不兼容的類(lèi)型: 從int轉(zhuǎn)換到short可能會(huì)有損失
 
short s2 = 10; 
s2 += 12; // 等同于short s2 = (short)(s2 + (short)1); //正確

到此這篇關(guān)于Java 數(shù)據(jù)類(lèi)型及類(lèi)型轉(zhuǎn)換的互相轉(zhuǎn)換實(shí)例代碼的文章就介紹到這了,更多相關(guān)java數(shù)據(jù)類(lèi)型互相轉(zhuǎn)換內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringMVC核心技術(shù)

    SpringMVC核心技術(shù)

    這篇文章主要介紹了SpringMVC入門(mén)實(shí)例,在springmvc入門(mén)教程里算是比較不錯(cuò)的,結(jié)構(gòu)也比較完整,需要的朋友可以參考。希望可以幫助到你
    2021-07-07
  • Spring?AI?+?混元帶你實(shí)現(xiàn)企業(yè)級(jí)穩(wěn)定可部署的AI業(yè)務(wù)智能體

    Spring?AI?+?混元帶你實(shí)現(xiàn)企業(yè)級(jí)穩(wěn)定可部署的AI業(yè)務(wù)智能體

    我們深入探討了Spring?AI在智能體構(gòu)建中的實(shí)際應(yīng)用,特別是在企業(yè)環(huán)境中的價(jià)值與效能,通過(guò)逐步實(shí)現(xiàn)一個(gè)本地部署的智能體解決方案,我們不僅展示了Spring?AI的靈活性與易用性,還強(qiáng)調(diào)了它在推動(dòng)AI技術(shù)與業(yè)務(wù)深度融合方面的潛力,感興趣的朋友一起看看吧
    2024-11-11
  • Java設(shè)計(jì)模式之外觀模式的實(shí)現(xiàn)方式

    Java設(shè)計(jì)模式之外觀模式的實(shí)現(xiàn)方式

    這篇文章主要介紹了Java設(shè)計(jì)模式之外觀模式的實(shí)現(xiàn)方式,外觀模式隱藏系統(tǒng)的復(fù)雜性,并向客戶端提供了一個(gè)客戶端可以訪問(wèn)系統(tǒng)的接口,這種類(lèi)型的設(shè)計(jì)模式屬于結(jié)構(gòu)型模式,它向現(xiàn)有的系統(tǒng)添加一個(gè)接口,來(lái)隱藏系統(tǒng)的復(fù)雜性,需要的朋友可以參考下
    2023-11-11
  • MyBatis批量插入/修改/刪除MySql數(shù)據(jù)

    MyBatis批量插入/修改/刪除MySql數(shù)據(jù)

    這篇文章主要給大家介紹了關(guān)于MyBatis批量插入/修改/刪除MySql數(shù)據(jù)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • SpringBoot結(jié)合Redis實(shí)現(xiàn)會(huì)話管理功能

    SpringBoot結(jié)合Redis實(shí)現(xiàn)會(huì)話管理功能

    在Web應(yīng)用程序中,會(huì)話管理是一項(xiàng)重要的任務(wù),它涉及跟蹤用戶的身份驗(yàn)證狀態(tài)和其他相關(guān)信息,以確保用戶在與應(yīng)用程序交互時(shí)的連續(xù)性和安全性,在本文中,我們將探討如何使用Spring Boot和Redis實(shí)現(xiàn)高效的會(huì)話管理
    2023-06-06
  • Java Hibernate對(duì)象(瞬時(shí)態(tài),持久態(tài),脫管態(tài))詳解

    Java Hibernate對(duì)象(瞬時(shí)態(tài),持久態(tài),脫管態(tài))詳解

    這篇文章主要介紹了Java Hibernate對(duì)象(瞬時(shí)態(tài),持久態(tài),脫管態(tài))詳解的相關(guān)資料,這里對(duì)Java Hibernate對(duì)象進(jìn)行了介紹及總結(jié),需要的朋友可以參考下
    2016-11-11
  • 淺談java什么時(shí)候需要用序列化?

    淺談java什么時(shí)候需要用序列化?

    本文主要介紹了淺談java什么時(shí)候需要用序列化,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • Java中的main函數(shù)的詳細(xì)介紹

    Java中的main函數(shù)的詳細(xì)介紹

    這篇文章主要介紹了Java中的main函數(shù)的詳細(xì)介紹的相關(guān)資料,main()函數(shù)在java程序中必出現(xiàn)的函數(shù),這里就講解下使用方法,需要的朋友可以參考下
    2017-09-09
  • Java8默認(rèn)方法Default Methods原理及實(shí)例詳解

    Java8默認(rèn)方法Default Methods原理及實(shí)例詳解

    這篇文章主要介紹了Java8默認(rèn)方法Default Methods原理及實(shí)例詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • SpringBoot起步依賴(lài)和自動(dòng)配置基本介紹

    SpringBoot起步依賴(lài)和自動(dòng)配置基本介紹

    這篇文章主要介紹了SpringBoot起步依賴(lài)和自動(dòng)配置,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-04-04

最新評(píng)論

海安县| 大邑县| 普兰县| 长子县| 从化市| 汝阳县| 颍上县| 阳曲县| 贵阳市| 资溪县| 家居| 昔阳县| 大姚县| 军事| 方山县| 绥棱县| 合阳县| 涪陵区| 德阳市| 黔江区| 炉霍县| 富顺县| 松溪县| 康定县| 凤凰县| 凤庆县| 雅安市| 长兴县| 万安县| 石楼县| 桃源县| 湖南省| 开封市| 佛教| 台前县| 赤城县| 迁安市| 东光县| 斗六市| 高雄市| 安西县|