Java中long和Long赋值加L

  • Post author:
  • Post category:java



在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;

}

}

这样这个Integer就是一个包装类,他包装了一个整数值,然后可以在里面写一些运算符重载的方法使它支持某些运算。这个时候可以赋值:

Long it=new Long(10);

现在变量it就是一个对象,不是一个数字。

long l1 = 10000000000L;(

内存机制

)

实际上内存中l1只是一个long类型的变量,它存在于向stack(栈)中,数值并不在其中存放,它指向heap(堆)中另一块真正存放数值的内存,加L的目的就是为了让heap中也创建一块long类型所需要的内存,用来来放数值。

所以说=前后两者其实是在不同的两块内存,只不过有个无形的指针将两者连接起来了。



java程序 long l1=12345678,l2=8888888888L; 这里12345678后面不需要加L,为什么?


类型自动转换



版权声明:本文为haining711原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。