3,4楼看清楚,是 Long a = 1; 另外 long a = 1; 也完全可以,只有大于 2147483647 的常量才必须加后缀 L。 真正原因是 Long 只有一个 Long Long.valueOf(long l) 方法,而没有 Long Long.valueOf(int l)。
Long l = 123l; //自动装箱 long l2 = 123; //隐式类型转换 Long l3 = new Long(2); //引用类型
long a = 1 ; Long c = new Long(1) ; Long b = 1 ; Long d = 1l ; 测试过了,在java中前两个是可以的,后两个是不允许的。
Long a=1; 你这里的是Long,而不是long。Long a只是产生了一个对象变量,而没有进行实例化啊。 当然你可以使用Long a=1L;此处实际上就是Long a=new Long(1);
Long l = 1L; 装箱。
Long a=1; java的自动装箱功能,1是int,所以能装箱成Integer,但是Long不是Integer的父类,所以不能将一个Integer对象赋给一个Long的引用 如果Number a=1;这样就可以,因为Number类是Integer的父类. 再举个例子 Integer i=new Integer(2); long l=i;可以 因为Integer自动解箱为int,再转为long Long l2=i;不可以 Long不是Integer的父类
另外 long a = 1; 也完全可以,只有大于 2147483647 的常量才必须加后缀 L。
真正原因是 Long 只有一个 Long Long.valueOf(long l) 方法,而没有 Long Long.valueOf(int l)。
long l2 = 123; //隐式类型转换
Long l3 = new Long(2); //引用类型
Long c = new Long(1) ;
Long b = 1 ;
Long d = 1l ;
测试过了,在java中前两个是可以的,后两个是不允许的。
你这里的是Long,而不是long。Long a只是产生了一个对象变量,而没有进行实例化啊。
当然你可以使用Long a=1L;此处实际上就是Long a=new Long(1);
装箱。
java的自动装箱功能,1是int,所以能装箱成Integer,但是Long不是Integer的父类,所以不能将一个Integer对象赋给一个Long的引用
如果Number a=1;这样就可以,因为Number类是Integer的父类.
再举个例子
Integer i=new Integer(2);
long l=i;可以 因为Integer自动解箱为int,再转为long
Long l2=i;不可以 Long不是Integer的父类
对象用之前要实例化了