首页天道酬勤float和int,float变int

float和int,float变int

张世龙 05-06 00:37 64次浏览

1.Java的简单类型及其包装类

Java简单类型和包类

我们知道Java语言是典型的支持面向对象的程序语言,但考虑到一些基本数据类型具有结构简单、占用内存、访问速度快等优点,Java仍然不是这些面向对象的当然,Java在提供大量其他类时,也会提供与简单数据类型相对应的封装类。 因此,Java有不同的数据类型,如int和integer (浮动和浮动、双精度和双精度…)。

Java语言的数据类型有两种:简单类型、主类型和引用类型。 简单类型的变量包含特定值,而引用类型的变量包含对对象的引用。

Java为每个简单的类型确定大小。 这些大小并不随机器结构的变化而变化。 此大小的不可更改性是Java程序具有很好的可移植性的原因之一。

下表介绍了Java中定义的简单类型、占用的二进制位数以及相应的软件包类列表。

表Java的简单类型

简单型booleanbytecharshortintlongfloatdoublevoid

二进制1 8 16 16 32 64 32 64 --

封装类booleanbytecharactershortintegerlongfloatdoublevoid

为什么要使用包装类

以int和Integer为例,它们本质上都表示32位整数,但数据类型不同。 实际上,Java中直接使用的所有整数都是int,对于int和Integer,只有在数据必须显示为对象时,才需要在启用了int的包装器Intege中将整数值封装到对象中。

例如,要使3360将整数添加到java.util包中的向量中,必须将整数值封装到Integer实例中的:中,如下所示

Vector v=new Vector (;

int k=121;

v.addelemt (新integer ) k );

另外,Integer作为支持int的封装类,提供了:Integer的构建方法、从Integer向其他各种数值型的转换方法等int型数据中没有的很多方法。

2 .简单数据类型之间的转换

简单类型数据之间的转换有两种方法:自动转换和强制转换。 通常在传递表达式或方法的参数时发生。

自动转换

具体而言,将“小”数据和“大”数据一起运算时,“小”数据会自动转换为“大”数据后进行运算。 另一方面,在方法调用时,实际参数为“小”,而在调用的方法的形式参数数据为“大”的情况下(如果有匹配的,则当然直接调用匹配的方法),系统自动当然,对于具有相同名称的多个重载方法,将其转换为“最近”“较大”方法

这些类型从“小”到“大”分别为(字节、短、字符) (int----long----float )双精度)。 这里的“大”和“小”表示值范围的大小,而不是占用多少字节。

看看下面的例子。

以下语句可以直接通过Java。

字节b;

int i=b;

龙格l=b;

float f=b;

双精度d=b;

下位型为char型时,变换为上位型(整数型)后,将变换为对应的ASCII码值。 范例

char c='c ';

int i=c;

system.out.println(output: ) I;

输出: output:99;

对于byte、short和char这三种类型,它们是平整级别的,不能相互自动转换。 可以使用以下强制类型转换。

短整型=99;

charc=(char ) I;

system.out.println(output: ) c;

输出: output:c;

如果对象多态性有方法:

f(bytex(… (. );

f(shortx(…);

f(intx(…);

f(longx(… (. );

f(floatx(…});

f (双精度(…);

另外: chary=’a’; 那么,语句f(y )调用哪个方法? 答案是:f(intx )……)方法。 因为形参比实参“大”,最“近”。

关于方法:

f(floatx(…});

f (双精度(…);

另外,long y=123L; 那么,语句f(y )调用的方法是f ) f(float x )…}。

强制转换

“大”数据转换为“小”数据时,你可以使用强制类型转换。即你必须采用下面这种语句格式:

int n=(int)3.14159/2;

可以想象,这种转换肯定可能会导致溢出或精度的下降。

注:

①当字节类型变量参与运算,java作自动数据运算类型的提升,将其转换为int类型。

byte b;

b=3;

b=(byte)(b*3);//必须声明byte。

②带小数的变量默认为double类型。

float f;

f=1.3f;//必须声明f。

⑶包装类过渡类型转换

一般情况下,我们首先声明一个变量,然后生成一个对应的包装类,就可以利用包装类的各种方法进行类型转换了。例如:

①当希望把float型转换为double型时:

float f1=100.00f;

Float F1=new Float(f1);

double d1=F1.doubleValue();//F1.doubleValue()为Float类的返回double值型的方法

②当希望把double型转换为int型时:

double d1=100.00;

Double D1=new Double(d1);

int i1=D1.intValue();

简单类型的变量转换为相应的包装类,可以利用包装类的构造函数。即:Boolean(boolean value)、Character(char value)、Integer(int value)、Long(long value)、Float(float value)、Double(double value)

而在各个包装类中,总有形为××Value()的方法,来得到其对应的简单类型数据。利用这种方法,也可以实现不同数值型变量间的转换,例如,对于一个双精度实型类,intValue()可以得到其对应的整型变量,而doubleValue()可以得到其对应的双精度实型变量。

3.字符串与其它类型间的转换

⑴其它类型向字符串的转换

①调用类的串转换方法:X.toString();

②自动转换:X+“”;

③使用String的方法:String.volueOf(X);

⑵字符串作为值,向其它类型的转换

①先转换成相应的封装器实例,再调用对应的方法转换成其它类型

例如,字符中“32.1”转换double型的值的格式为:new Float(“32.1”).doubleValue()。也可以用:Double.valueOf(“32.1”).doubleValue()

②静态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)方法

具体可查阅api。

再分享 java.lang.math 中的几个函数:

四舍五入:

static   long   round(double   a)

Returns   the   closest   long   to   the   argument.

static   int   round(float   a)

Returns   the   closest   int   to   the   argument.

下取整:

static   double   ceil(double   a)

Returns   the   smallest   (closest   to   negative   infinity)   double   value   that   is   not   less   than   the   argument   and   is   equal   to   a   mathematical   integer.

上取整:

static   double   floor(double   a)

Returns   the   largest   (closest   to   positive   infinity)   double   value   that   is   not   greater   than   the   argument   and   is   equal   to   a   mathematical   integer.

例如:

import   java.lang.*;

public   class   quzheng{

public   static   void   main(String   args[]){

//四舍五入

System.out.println(Math.round(3.40d));

System.out.println(Math.round(3.60d));

System.out.println(Math.round(3.40f));

System.out.println(Math.round(3.60f));

//上取整

System.out.println(Math.ceil(3.4));

System.out.println(Math.ceil(3.6));

//下取整

System.out.println(Math.floor(3.40));

System.out.println(Math.floor(3.60));

}

}

结果为:

3

4

3

4

4.0

4.0

3.0

3.0

java字符串转float,float自动转化为double