在Java中执行如下的代码:
long number = 26012402244;
编译的时候会出现一个错误,提示“过大的整数: 32322355744”,如果在Eclipse中书写上面的代码,提示的是“The literal 26012402244 of type int is out of range”。可以看出,在Java代码中直接书写的数字是int类型的,就是说数字的范围在 -2^31 到 2^31 - 1 这个范围之中,无论将这个数字赋值给什么类型。
不过有的时候需要直接赋值大的数字,比如在测试的时候。这个时候可以使用Long.parseLong()转换下就可以啦。这个时候可以这样赋值:
long number = 26012402244L;
long l1 = 10000000000L;(内存机制)
java程序 long l1=12345678,l2=8888888888L; 这里12345678后面不需要加L,为什么?
类型自动转换,实际上是一个int
Java的数据类型分两种:
1.基本类型:long,int,byte,float,double,char
2. 对象类型(类): Long,Integer,Byte,Float,Double,Char,String,其它一切java提供的,或者你自己创建的类。
其中Long又叫 long的包装类。
什么叫包装类?
在java中有时候的运算必须是两个类对象之间进行的,不充许对象与数字之间进行运算。所以需要有一个对象,这个对象把数字进行了一下包装,这样这个对象就可以和另一个对象进行运算了。
比如我们也可以定义一个类:
class Long {
int i=0;
public Long (int i){
this.i=i;
}
}
这样这个Integer就是一个包装类,他包装了一个整数值,然后可以在里面写一些运算符重载的方法使它支持某些运算。这个时候可以赋值:
Long it=new Long(10);
现在变量it就是一个对象,不是一个数字。
long 是长整型,在怎么长本身也是整型,12.10的整形部分是12,当然结果是12,
byte: 八位整数 -128——127,可用来节省内存的使用。
short: 16位整数 -32768——32,767,也比较省内存。
int: 32位整数 -2,147,483,648——2,147,483,647,一般来说整数都够用了
long: 64位整数 -9,223,372,036,854,775,808—— 9,223,372,036,854,775,807,一般不需要用
float: 32位浮点,如果浮点需要节省内存用这个。
Double: 64位浮点,一般非整数浮点可用这个。
但是要记住float和double都不是精确的,如果要储存钱一类的必须精确的,用java.math.BigDecimal