java数据类型.docx
《java数据类型.docx》由会员分享,可在线阅读,更多相关《java数据类型.docx(23页珍藏版)》请在冰豆网上搜索。
java数据类型
Java基本数据类型转换
编程开发2006-12-1916:
55
1字符串转换成数据
字符串转换成整数:
StringMyNumber="1234";
intMyInt=Integer.parseInt(MyNumber);
字符串转换成byte,short,int,float,double,long等数据类型,可以分别参考Byte,Short,Integer,Float,Double,Long类的parseXXX方法。
2数据转换成字符串
整数转换成字符串:
intMyInt=1234;
StringMyString=""+MyInt;
其它数据类型可以利用同样的方法转换成字符串。
3十进制到其他进制的转换
十进制整数转换成二进制整数,返回结果是一个字符串:
Integer.toBinaryString(inti);
Integer和Long提供了toBinaryString,toHexString和toOctalString方法,可以方便的将数据转换成二进制、十六进制和八进制字符串。
功能更加强大的是其toString(int/longi,intradix)方法,可以将一个十进制数转换成任意进制的字符串形式。
byte,short,float和double等数据类型,可以利用Integer或者是Long的toBinaryString,toHexString,toOctalString和toString方法转换成其他进制的字符串形式。
4其它进制到十进制的转换
五进制字符串14414转换成十进制整数,结果是1234:
System.out.println(Integer.valueOf("14414",5);
Integer和Long提供的valueOf(Stringsource,intradix)方法,可以将任意进制的字符串转换成十进制数据。
5整数到字节数组的转换
publicstaticbyte[]toByteArray(intnumber)
{
inttemp=number;
byte[]b=newbyte[4];
for(inti=b.length-1;i>-1;i--)
{
b[i]=newInteger(temp&0xff).byteValue();
temp=temp>>8;
}
returnb;
}
6字节数组到整数的转换
publicstaticinttoInteger(byte[]b)
{
ints=0;
for(inti=0;i<3;i++)
{
if(b[i]>0)
s=s+b[i];
else
s=s+256+b[i];
s=s*256;
}
if(b[3]>0)
s=s+b[3];
else
s=s+256+b[3];
returns;
}
7短整数与字节数组之间的相互转换
short与int之间的区别在于short是两个字节的,而int是四个字节的。
因此,只需要将5与6中的范例程序小做改动,即可实现短整数与字节数组之间的相互转换。
8字节数组转换成双精度浮点数
publicdoubletoDouble(byte[]b)
{
longl=0;
DoubleD=newDouble(0.0);
l=b[0];
l|=((long)b[1]<<8);
l|=((long)b[2]<<16);
l|=((long)b[3]<<24);
l|=((long)b[4]<<32);
l|=((long)b[5]<<40);
l|=((long)b[6]<<48);
l|=((long)b[7]<<56);
returnD.longBitsToDouble(l);
}
9布尔类型转换成字符串
第一种方法是:
booleanbool=true;
Strings=newBoolean(bool).toString();//将bool利用对象封装器转化为对象
s.equals("true");
/*其中,toString方法是一个继承方法。
java中所有的类都是object的继承,object的一个重要方法就是toString,用于将对象转化为字符串。
*/
第二种方法是:
booleanbool=true;
Strings=String.valueOf(bool);
首先,从代码长度上讲第二种方法明显要比第一种方法简洁;其次,第一种方法在转化过程中多引入了一个完全没有必要的对象,因此,相对第二种方法来说这就造成了内存空间的浪费,大大减慢了运行速度。
所以,推荐使用第二种方法。
10数字类型与数字类对象之间的转换
byteb=169;
Bytebo=newByte(b);
b=bo.byteValue();
shortt=169;
Shortto=newShort(t);
t=to.shortValue();
inti=169;
Integerio=newInteger(i);
i=io.intValue();
longl=169;
Longlo=newLong(l);
l=lo.longValue();
floatf=169f;
Floatfo=newFloat(f);
f=fo.floatValue();
doubled=169f;
DoubledObj=newDouble(d);
d=dObj.doubleValue();
标签集:
TAGS:
===============================================================================================================================================================================================================
1.short-->int
exp:
shortshortvar=0;
intintvar=0;
shortvar=(short)intvar
2.int-->short
exp:
shortshortvar=0;
intintvar=0;
intvar=shortvar;
3.int->String
exp:
intintvar=1;
Stringstringvar;
Stringvar=string.valueOf(intvar);
4.float->String
exp:
floatfloatvar=9.99f;
Stringstringvar;
Stringvar=String.valueOf(floatvar);
5.double->String
expdoubledoublevar=99999999.99;
Stringstringvar;
Stringvar=String.valueOf(doublevar);
6.char->String
expcharcharvar=’a’;
Stringstringvar;
Stringvar=String.valueOf(charvar);
7String->int、float、long、double
ExpStringintstring=”10”;
Stringfloatstring=”10.1f”;
Stringlongstring=”99999999”;
StringdoubleString=”99999999.9”;
IntI=Integer.parseInt(intstring);
Floatf=Integer.parseInt(floatstring);
Longlo=long.parseInt(longstring);
Doubled=double.parseInt(doublestring);
8String->byte、short
ExpStrings=”0”;
Byteb=Integer.intValue(s);
Shortsh=Integer.intValue(s);
9String->char
ExpStrings=”abc”;
Chara=s.charAt(0);
返回字符a
10String-->boolean
Strings=”true”;
Booleanflag=Boolean.valueOf(“s”);
============================================================================================================================================================================================================================================
Java的简单数据类型
作者:
ken日期:
2007-04-02
字体大小:
小中大
数据类型
数据类型就是对内存位置的抽象表达。
Java的内置数据类型也称为基本数据类型。
Java共有八种基本数据类型,其中包括四种整数类型、两种浮点数据类型、一种字符类型和一种布尔类型。
简单数据类型
简单数据类型是不能再简化的、内置的数据类型,由编程语言定义,表示真实的数字、字符和整数。
更大、更复杂的数据类型可以采用简单数据类型的组合来定义。
在大多数情况下,简单数据类型都具有其硬件等价物。
比方说,int简单类型有时存放在32位硬件寄存器内。
Java提供了几类简单数据类型表示数字和字符。
简单数据类型划分为 " 实数、整数、字符和布尔值 " 四种类别。
这些类别中又包含了多种简单类型。
例如:
float 、double 都属于实数类别;而 byte、short、int 和 long 则都属于整数类别。
此外还有一种简单类型 char 则归于字符类型。
布尔值类别只有一种简单类型:
boolean。
下面详细列出了Java的简单数据类型:
Java的简单数据类型
Java中的所有数字变量都是有符号的,Java不允许数据类型之间随意的转换。
只有数字变量之间可以进行类型转换。
比如,boolean就不能转换为其他数据类型,而且其他数据类型也不能转换为boolean。
因为Java的简单数据类型都经过准确定义,而且直接内存访问也是不允许的,所以在Java语言中取消了sizeof运算符。
Java的简单数据类型并不是对象。
为了采用面向对象方式对待Java简单数据类型,你需要首先用类封装它们。
封装类
Java还提供了Byte、Short、Boolean、Character、Integer、Double、Float和Long等内置的封装类。
这些封装(wrapper)类提供了很直观的实用方法。
比如,Byte、Float, Integer、Long和Double类都具有doubleValue()方法,通过它可以把存储在类的实例中的值转换为Double类型。
还有,所有的封装类都提供了静态的valueOf(String s)方法把给定的String转换为对应的简单类型。
简单数据类型作为类成员和作为方法成员初始化要注意的问题
在Java语言中,简单数据类型作为类的成员变量声明时自动初始化为默认值,除非显式地声明。
简单数据类型为某一方法声明局部变量时不会自动地初始化而且会导致编译器扔出类似以下的错误消息“Variable x may not have been initialized.(x变量没有初始化)”。
注:
在方法中声明变量时,变量前面不能添加修饰符。
[本日志由ken于2007-04-0210:
35PM编辑]
文章来自:
本站原创
引用通告地址:
查看引用地址
Tags:
Java的简单数据类型Java的简单数据类型
评论:
3|引用:
0|查看次数:
210
∙1
ken[2007-04-0205:
45PM]
Java的整常数有三种形式 :
十进制整数,如 123,-456,0
八进制整数,以0开头,如 0123(十进制数为83),-011(十进制数为-9)
十六进制整数,以 0x 或 0X 开 头 ,如 0x123 (十进制数为291),-0X12 (十进制数为-18)
整型常量在机器中占32位,具有int型的值,对于long型值,则要在数字后加L或l,如123L表示一个长整数,它在机器中占64位
ken[2007-04-0205:
40PM]
Java的实常数有两种表示形式:
十进制数形式 ,由数字和小数点组成 ,且必有小数点 ,如 0.123, .123, 123.,123.0
科学计数法形式。
如 :
123e3 或 123E3,其 中 e 或 E 之前必须有数字 ,且 e 或 E 后面的指数必须为整数。
实常数在机器中占64位,具有 double 型的值。
对于float型的值 ,则要在数字后加 f 或 F,如12.3F,它在机器中占32位,且 表示精度较低
ken[2007-04-0205:
33PM]
转义字符 描述
\ddd 1到3位8进制数据所表示的字符(ddd)
\uxxxx 1到4位16进制数所表示的字符(xxxx)
\' 单引号字符
\\ 反斜杠字符
\r 回车
\n 换行
\f 走纸换页
\t 横向跳格
\b 退格
========================================================================================================================================================================================
枚举
Tiger中的一个重要新特性是枚举构造,它是一种新的类型,允许用常量来表示特定的数据片断,而且全部都以类型安全的形式来表示。
Tiger专家、developerWorks的多产作者BrettMcLaughlin将解释枚举的定义,介绍如何在应用程序中运用枚举,以及它为什么能够让您抛弃所有旧的
publicstaticfinal代码。
您已经知道,Java代码的两个基本的构造块是类和接口。
现在Tiger又引入了枚举,一般简称它为enum。
这个新类型允许您表示特定的数据点,这些数据点只接受分配时预先定义的值集合。
当然,熟练的程序员可以用静态常量实现这项功能,如清单1所示:
|
清单1.publicstaticfinal的常量
publicclassOldGrade{
publicstaticfinalintA=1;
publicstaticfinalintB=2;
publicstaticfinalintC=3;
publicstaticfinalintD=4;
publicstaticfinalintF=5;
publicstaticfinalintINCOMPLETE=6;
}
说明:
我要感谢O'Reilly媒体公司,该公司允许在本文中使用我撰写的Java1.5Tiger:
ADeveloper'sNotebook一书中“枚举”这一章中的代码示例(请参阅参考资料)。
然后您就可以让类接受像OldGrade.B这样的常量,但是在这样做的时候,请记住这类常量
是Java中int类型的常量,这意味着该方法可以接受任何int类型的值,即使它和
OldGrade中定的所有级别都不对应。
因此,您需要检测上界和下界,在出现无效值的时候,可能还
要包含一个IllegalArgumentException。
而且,如果后来又添加另外一个级别(例如
OldGrade.WITHDREW_PASSING),那么必须改变所有代码中的上界,才能接受这个新值。
换句话说,在使用这类带有整型常量的类时,该解决方案也许可行,但并不是非常有效。
幸
运的是,枚举提供了更好的方法。
定义枚举
清单2使用了一个可以提供与清单1相似的功能的枚举:
清单2.简单的枚举类型
packagecom.oreilly.tiger.ch03;
publicenumGrade{
A,B,C,D,F,INCOMPLETE
};
在这里,我使用了新的关键字enum,为enum提供了一个名称,并指定了允许的值。
然后
,Grade就变成了一个枚举类型,您可以按清单3所示的方法使用它:
清单3.使用枚举类型
packagecom.oreilly.tiger.ch03;
publicclassStudent{
privateStringfirstName;
privateStringlastName;
privateGradegrade;
publicStudent(StringfirstName,StringlastName){
this.firstName=firstName;
this.lastName=lastName;
}
publicvoidsetFirstName(StringfirstName){
this.firstName=firstName;
}
publicStringgetFirstName(){
returnfirstName;
}
publicvoidsetLastName(StringlastName){
this.lastName=lastName;
}
publicStringgetLastName(){
returnlastName;
}
publicStringgetFullName(){
returnnewStringBuffer(firstName)
.append("")
.append(lastName)
.toString();
}
publicvoidassignGrade(Gradegrade){
this.grade=grade;
}
publicGradegetGrade(){
returngrade;
}
}
用以前定义过的类型建立一个新的枚举(grade)之后,您就可以像使用其他成员变量一样
使用它了。
当然,枚举只能分配枚举值中的一个(例如,A、C或INCOMPLETE)。
而且,在
assignGrade()中是没有进行错误检测的代码,也没有考虑边界情况,请注意这是如何做到
。
使用枚举值
迄今为止,您所看到的示例都相当简单,但是枚举类型提供的东西远不止这些。
您可以逐个
遍历枚举值,也可以在switch语句中使用枚举值,枚举是非常有价值的。
遍历枚举值
下面我们用一个示例显示如何遍历枚举类型的值。
清单4所示的这项技术,适用于调试、
快速打印任务以及把枚举加载到集合(我很快将谈到)中的工具:
清单4.遍历枚举值
publicvoidlistGradeValues(PrintStreamout)throwsIOException{
for(Gradeg:
Grade.values()){
out.println("Allowedvalue:
'"+g+"'");
}
}
运行这段代码,将得到清单5所示的输出:
清单5.迭代操作的输出
AllowedValue:
'A'
AllowedValue:
'B'
AllowedValue:
'C'
AllowedValue:
'D'
AllowedValue:
'F'
AllowedValue:
'INCOMPLETE'
这里有许多东西。
首先,我使用了Tiger的新的for/in循环(也叫作foreach或增强
的for)。
另外,您可以看到values()方法返回了一个由独立的Grade实例构成的数组
,每个数组都有一个枚举类型的值。
换句话说,values()的返回值是Grade[]。
在枚举间切换
能够在枚举的值之间移动很好,但是更重要的是根据枚举的值进行决策。
您当然可以写一堆
if(grade.equals(Grade.A))类型的语句,但那是在浪费时间。
Tiger能够很方便地把枚
举支持添加到过去的好东西switch语句上,所以它很容易使用,而且适合您已知的内容。
清单6
向将展示如何解决这个难题:
清单6.在枚举之间切换
publicvoidtestSwitchStatement(PrintStreamout)throwsIOException{
StringBufferoutputText=newStringBuffer(student1.getFullName());
switch(student1.getGrade()){
caseA:
outputText.append("excelledwithagradeofA");
break;
caseB:
//fallthroughtoC
caseC:
outputText.append("passedwithagradeof")
.append(student1.g
展开阅读全文
相关搜索
|
|