您当前的位置:首页 > 建站知识 > 编程知识

Java中long赋值加L

发布时间: 2014-06-05 │ 浏览:3749 

在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;
 
 
 
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;
 }
 }
 
这样这个Long就是一个包装类,他包装了一个整数值,然后可以在里面写一些运算符重载的方法使它支持某些运算。这个时候可以赋值:
 Long it=new Long(10);
 现在变量it就是一个对象,不是一个数字。
 
long l1 = 10000000000L;(内存机制)
 实际上内存中l1只是一个long类型的变量,它存在于向stack(栈)中,数值并不在其中存放,它指向heap(堆)中另一块真正存放数值的内存,加L的目的就是为了让heap中也创建一块long类型所需要的内存,用来来放数值。
 所以说=前后两者其实是在不同的两块内存,只不过有个无形的指针将两者连接起来了。
 
java程序 long l1=12345678,l2=8888888888L; 这里12345678后面不需要加L,为什么?
 
类型自动转换

来自:www.workneed.com