Java语言基本数据类型转换及其封装.docx
- 文档编号:30747804
- 上传时间:2023-08-20
- 格式:DOCX
- 页数:14
- 大小:22.89KB
Java语言基本数据类型转换及其封装.docx
《Java语言基本数据类型转换及其封装.docx》由会员分享,可在线阅读,更多相关《Java语言基本数据类型转换及其封装.docx(14页珍藏版)》请在冰豆网上搜索。
Java语言基本数据类型转换及其封装
Java语言基本数据类型、转换及其封装
Java语言基本数据类型、转换及其封装
1.逻辑类型
·常量true,false。
·变量的定义
使用关键字boolean来定义逻辑变量:
booleanx;booleantom_12;
也可以一次定义几个:
booleanx,tom,jiafei,漂亮
x,tom,jiafei,漂亮都是变量的名字。
定义时也可以赋给初值:
booleanx=true,tom=false,漂亮=true,jiafei
2.整数类型
·常量123,6000(十进制),077(八进制),0x3ABC(十六进制)。
·整型变量的定义分为4种:
1.int型
使用关键字int来定义int型整形变量
intx
inttom_12
也可以定义几个:
intx,tom,jiafei,漂亮
x,tom,jiafei,漂亮都是名字。
定义时也可以赋给初值:
intx=12,tom=-1230,漂亮=9898,jiafei
对于int型变量,分配给4个字节byte,一个字节由8位(bit)组成,4个字节占32位(bit)。
bit有两状态,分别用来表示0,1。
这样计算机就可以使用2进制数来存储信息了。
内存是一种特殊的电子元件,如果把内存条放大到摩天大楼那么大,那么它的基本单位——字节,就好比是大楼的房间,每个房间的结构都是完全相同的,一个字节由8个能显示两种状态的bit组成,就好比每个房间里有8个灯泡,每个灯泡有两种状态——亮灯灭灯。
对于
intx=7;
内存存储状态如下:
00000000 00000000 00000000 00000111
最高位:
左边的第一位,是符号位,用来区分正数或负数,正数使用原码表示,最高位是0,负数用补码表示,最高位是1。
例如:
intx=-8;
内存的存储状态如下:
11111111 11111111 11111111 11111000
要得到-8的补码,首先得到7的原码,然后将7的原码中的0变成1,1变成0,就是-8的补码。
因此,int型变量的取值范围是-2^31~2^31-1。
2.byte型
使用关键字byte来定义byte型整型变量
bytex;bytetom_12;
也可以一次定义几个:
bytex,tom,jiafei,漂亮
x,tom,jiafei,漂亮都是名字。
定义时也可以赋给初值:
bytex=-12,tom=28,漂亮=98,jiafei
注:
对于byte型变量,内存分配给1个字节,占8位,因此byte型变量的取值范围是:
-2^7~2^7-1。
3.short型
使用关键字short来定义short型整型变量:
shortx;shorttom_12;
也可以一次定义几个:
shortx,tom,jafei,漂亮
x,tom,jafei,漂亮都是名字,定义时也可以赋给初值:
shortx=12,tom=1234,漂亮=9876,jafei
注:
对于short型变量,内存分配给2个字节,占16位,因此short型变量的取值范围是-2^15~2^15-1。
4.long型
使用关键字long来定义long型整型变量
longx;longtom_12;
也可以一次定义几个
longx,tom,jiafei,漂亮
x,tom,jiafei,漂亮都是名字。
定义时也可以赋给初值:
longx=12,tom=1234,漂亮=9876,jiafei
注:
对于long型变量,内存分配给8个字节,占64位,因此long型变量的取值范围是-2^63~2^63-1。
3. 字符类型
·常量Ab?
!
9 好\t ,
Java使用unicode字符集,所以常量共65535个。
·变量的定义
使用关键字char来定义字符变量
charx,chartom_12
也可以一次定义几个:
charx,tom,jafei,漂亮
x,tom,jafei,漂亮都是变量名字,定义时也可以赋给初值:
charx=A,tom=家,漂亮=假,jiafei
char型变量,内存分配给2个字节,占16位,最高位不用来表示符号,没有负数的char.char型变量的取值范围是0~65535.
对于charx='a';
那么内存x中存储的是97,97是字符a在unicode表中的排序位置,因此,允许将上面的语句写成
charx=97;
要观察一个字符在unicode表中的顺序位置,必须使用int型显示转换,如(int)'a',不可以使用short型转换,因为char的最高位不是符号位,如果要得到一个0~65535之间的数乴代表的unicode表中相应位置上的字符也必须使用char型显示转换。
在下面的例子中,分别用显示转换来显示一些字符在unicode表中的位置,以及某些位置上的字符。
例子:
publicclassExample2_1
{
publicstaticvoidmain(Stringargs[])
{
charchinaWord='你',japanWord='';
int p1=20328,p2=12358;
System.out.println("汉字\'你\'在unicode表中的顺序位置:
"+(int)chinaWord);
System.out.println("日语\'\'字在unicode表中的顺序位置:
"+(int)japanWord);
System.out.println("unicode表中第20328位置上的字符是:
"+(char)p1);
System.out.println("unicode表中第12358位置上的字符是:
"+(char)p2);
}
}
4. 浮点类型 实型
浮点型分两种:
1.float型
·常量123.5439f,12389.987F,123.0f,2e40f 2乘10的40次方,科学计数法
·变量的定义
使用关键字float来定义float型变量:
floatx;floattom_12;
也可以一次定义几个:
floatx,tom,jiafei,漂亮
x,tom,jiafei,漂亮都是名字,定义时也可以赋给初值:
floatx=12.76f,tom=1234.987f,漂亮=9876.0f,jiafei
注:
对于float型变量,内存分配给4个字节,占32位,float型变量的取值范围大约是10^-38~10^38,-10^38~10^-38。
2. double型
·常量12389.5439d ,d可以省略,12389908.987,123.0,6e-140(6乘10的-140次方,科学计数法)
·变量的定义
使用关键字double来定义double型变量:
doublex;doubletom_12;
也可以一次定义几个:
doublex,tom,jiafei,漂亮
x,tom,jiafei,漂亮都是名字,定义时也可以赋给初值:
doublex=12.76,tom=1234098.987,漂亮=9876.098d,jiafei
注:
double型变量,内存分配给8个字节,占64位,double型变量的取值范围大约是10^-308~10^308。
5.基本数据类型的转换
当我们把一种基本数据类型变量的值赋给另一种基本类型变量时,就涉及到数据转换。
基本类型数据的下列类型会涉及到数据转换,不包括逻辑类型和字符类型。
我们将这些类型按精度从“低”到“高”排列了顺序。
byte short int long float double
当把在级别低的变量的值赋给级别高的变量时,系统自动完成数据类型的转换。
例如:
floatx=100;
如果输出x的值,结果将是100.0
例如:
intx=50;
floaty;
y=x;
如果输出y的值,结果将是50.0。
当把在级别高的变量值赋给级别低的变量时,必须使用显示类型转换运算,
显示转换的格式:
类型名 要转换的值
例如:
intx=(int)23.89;
longy=(long)34.98F;
如果输出x,y的值将是23和34,强制转换运算可能导致精度的损失。
例子:
publicclassExample2_2
{
publicstaticvoidmain(Stringargs[])
{
bytea=120;shortb=255;
intc=2200; longd=8000;
float f;
doubleg=12346789.123456789;
b=a;
c=(int)d;
f=(float)g; //导致精度的损失。
System.out.print("a="+a);System.out.println("b="+b);
System.out.print("c="+c);System.out.println("d="+d);
System.out.print("f="+f);System.out.println("g="+g);
}
}
----------------------------------------------
java基本数据类型之间的转换
一些初学JAVA的朋友可能会遇到JAVA的数据类型之间转换的苦恼,例如,整数和float,double型之间的转换,整数和String类型之间的转换,以及处理、显示时间方面的问题等。
下面笔者就开发中的一些体会介绍给大家。
我们知道,Java的数据类型分为三大类,即布尔型、字符型和数值型,而其中数值型又分为整型和浮点型;相对于数据类型,Java的变量类型为布尔型boolean;字符型char;整型byte、short、int、long;浮点型float、double。
其中四种整型变量和两种浮点型变量分别对应于不同的精度和范围。
此外,我们还经常用到两种类变量,即String和Date。
对于这些变量类型之间的相互转换在我们编程中经常要用到,在下面的论述中,我们将阐述如何实现这些转换。
1数据类型转换的种类
java数据类型的转换一般分三种,分别是:
(1).简单数据类型之间的转换
(2).字符串与其它数据类型的转换
(3).其它实用数据类型转换
下面我们对这三种类型转换分别进行论述。
2简单数据类型之间的转换
在Java中整型、实型、字符型被视为简单数据类型,这些类型由低级到高级分别为(byte,short,char)--int--long--float--double
简单数据类型之间的转换又可以分为:
●低级到高级的自动类型转换
●高级到低级的强制类型转换
●包装类过渡类型能够转换
2.1自动类型转换
低级变量可以直接转换为高级变量,笔者称之为自动类型转换,例如,下面的语句可以在Java中直接通过:
byteb;
inti=b;
longl=b;
floatf=b;
doubled=b;
如果低级类型为char型,向高级类型(整型)转换时,会转换为对应ASCII码值,例如r
charc='c';
inti=c;
System.out.println("output:
"i);
输出:
output:
99;
对于byte,short,char三种类型而言,他们是平级的,因此不能相互自动转换,可以使用下述的强制类型转换。
shorti=99;charc=(char)i;System.out.println("output:
"c);
输出:
output:
c;
但根据笔者的经验,byte,short,int三种类型都是整型,因此如果操作整型数据时,最好统一使用int型。
2.2强制类型转换
将高级变量转换为低级变量时,情况会复杂一些,你可以使用强制类型转换。
即你必须采用下面这种语句格式:
inti=99;byteb=(byte)i;charc=(char)i;floatf=(float)i;
可以想象,这种转换肯定可能会导致溢出或精度的下降,因此笔者并不推荐使用这种转换。
2.3包装类过渡类型转换
在我们讨论其它变量类型之间的相互转换时,我们需要了解一下Java的包装类,所谓包装类,就是可以直接将简单类型的变量表示为一个类,在执行变量类型的相互转换时,我们会大量使用这些包装类。
Java共有六个包装类,分别是Boolean、Character、Integer、Long、Float和Double,从字面上我们就可以看出它们分别对应于boolean、char、int、long、float和double。
而String和Date本身就是类。
所以也就不存在什么包装类的概念了。
在进行简单数据类型之间的转换(自动转换或强制转换)时,我们总是可以利用包装类进行中间过渡。
一般情况下,我们首先声明一个变量,然后生成一个对应的包装类,就可以利用包装类的各种方法进行类型转换了。
例如:
例1,当希望把float型转换为double型时:
floatf1=100.00f;
FloatF1=newfloat(f1);
Doubled1=F1.doubleValue();
//F1.doubleValue()为Float类的返回double值型的方法
当希望把double型转换为int型时:
doubled1=100.00;
DoubleD1=newDouble(d1);
inti1=D1.intValue();
当希望把int型转换为double型时,自动转换:
inti1=200;
doubled1=i1;
简单类型的变量转换为相应的包装类,可以利用包装类的构造函数。
即:
Boolean(booleanvalue)、Character(charvalue)、Integer(intvalue)、Long(longvalue)、Float(floatvalue)、Double(doublevalue)
而在各个包装类中,总有形为××Value()的方法,来得到其对应的简单类型数据。
利用这种方法,也可以实现不同数值型变量间的转换,例如,对于一个双精度实型类,intValue()可以得到其对应的整型变量,而doubleValue()可以得到其对应的双精度实型变量。
3字符串型与其它数据类型的转换
通过查阅类库中各个类提供的成员方法可以看到,几乎从java.lang.Object类派生的所有类提供了toString()方法,即将该类转换为字符串。
例如:
Characrer,Integer,Float,Double,Boolean,Short等类的toString()方法toString()方法用于将字符、整数、浮点数、双精度数、逻辑数、短整型等类转换为字符串。
如下所示:
inti1=10;
floatf1=3.14f;
doubled1=3.1415926;
IntegerI1=newInteger(i1);
//生成Integer类r
FloatF1=newFloat(f1);
//生成Float类r
DoubleD1=newDouble(d1);
//生成Double类r
//分别调用包装类的toString()方法转换为字符串
Stringsi1=I1.toString();
Stringsf1=F1.toString();
Stringsd1=D1.toString();
Sysytem.out.println("si1"si1);
Sysytem.out.println("sf1"sf1);
Sysytem.out.println("sd1"sd1);
4、将字符型直接做为数值转换为其它数据类型
将字符型变量转换为数值型变量实际上有两种对应关系,在我们在第一部分所说的那种转换中,实际上是将其转换成对应的ASCII码,但是我们有时还需要另一种转换关系,例如,'1'就是指的数值1,而不是其ASCII码,对于这种转换,我们可以使用Character的getNumericValue(charch)方法。
5、Date类与其它数据类型的相互转换
整型和Date类之间并不存在直接的对应关系,只是你可以使用int型为分别表示年、月、日、时、分、秒,这样就在两者之间建立了一个对应关系,在作这种转换时,你可以使用Date类构造函数的三种形式:
Date(intyear,intmonth,intdate):
以int型表示年、月、日
Date(intyear,intmonth,intdate,inthrs,intmin):
以int型表示年、月、日、时、分
Date(intyear,intmonth,intdate,inthrs,intmin,intsec):
以int型表示年、月、日、时、分、秒r
在长整型和Date类之间有一个很有趣的对应关系,就是将一个时间表示为距离格林尼治标准时间1970年1月1日0时0分0秒的毫秒数。
对于这种对应关系,Date类也有其相应的构造函数:
Date(longdate)
获取Date类中的年、月、日、时、分、秒以及星期你可以使用Date类的getYear()、getMonth()、getDate()、getHours()、getMinutes()、getSeconds()、getDay()方法,你也可以将其理解为将Date类转换成int。
而Date类的getTime()方法可以得到我们前面所说的一个时间对应的长整型数,与包装类一样,Date类也有一个toString()方法可以将其转换为String类。
有时我们希望得到Date的特定格式,例如20020324,我们可以使用以下方法,首先在文件开始引入,
importjava.text.SimpleDateFormat;
importjava.util.*;
java.util.Datedate=newjava.util.Date();/
/如果希望得到YYYYMMDD的格式
SimpleDateFormatsy1=newSimpleDateFormat("yyyyMMDD");
StringdateFormat=sy1.format(date);
//如果希望分开得到年,月,日
SimpleDateFormatsy=newSimpleDateFormat("yyyy");
SimpleDateFormatsm=newSimpleDateFormat("MM");
SimpleDateFormatsd=newSimpleDateFormat("dd");
Stringsyear=sy.format(date);
Stringsmon=sm.format(date);
Stringsday=sd.format(date);
附加:
在java中除了这些转换之外基本数据类型还可以被隐式的转换成String,例如:
System.out.print(转换100);//如果在数据前面有字符串用连接//就会隐式的转换成
String
1.字符型转时间型:
2005-10-1
reportdate_str=“2005-10-01”;
reportdate_str=reportdate_str+“00:
00:
00.0”
reportdate=java.sql.Timestamp.valueOf(reportdate_str);
2.时间型转字符型:
V_DATE=reportdate.toString();
3.将long型转化为String型
longAPP_UNIT=(long)userview.getDEPT_ID();
StringS_APP_UNIT=String.valeOf(APP_UNIT);
基本类型s都可以通过String.valeOf(s)来转化为String型。
----------------------------------------------
java基本数据类型与其封装类
2008年12月21日星期日10:
04
java基本数据类型与其封装类
1 BooleanVSboolean
publicfinalclassBooleanextends[url=file:
///G:
/html_zh_CN/html/zh_CN/api/java/lang/Object.html]Object[/url]implements[url=file:
///G:
/html_zh_CN/html/zh_CN/api/java/io/Serializable.html]Serializable[/url],[url=file:
///G:
/html_zh_CN/html/zh_CN/api/java/lang/Comparable.html]Comparable[/url]<[url=file:
///G:
/html_zh_CN/html/zh_CN/api/java/lang/Boolean.html]Boolean[/url]>
Boolean类将基本类型为boolean的值包装在一个对象中。
一个Boolean类型的对象只包含一个类型为boolean的字段。
此外,此类还为boolean和String的相互转换提供了许多方法,并提供了处理boolean时非常有用的其他一些常量和方法。
2 Byte VSbyte
publicfinalclassByteextends[url=file:
///G:
/html_zh_CN/html/zh_CN/api/java/lang/Number.html]Number[/url]implements[url=file:
///G:
/html_zh_CN/html/zh_CN/api/java/lang/Comparable.html]Comparable[/url]<[url=file:
///G:
/html_zh_CN/html/zh_CN/api/java/lang/Byte.html]Byte[/url]>
Byte类将基本类型byte的值包装在一个对象中。
一个Byte类型的对象只包含一个类型为byte的字段。
此外,该类还为byte和String的相互转换提供了几
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 语言 基本 数据类型 转换 及其 封装
