2012-01-19 21 views
16

Niçin uzun ve min. javaJava uzun numaralı büyük hata mı?

/* 
long: The long data type is a 64-bit signed two's complement integer. 
It has a minimum value of -9,223,372,036,854,775,808 and a maximum value of   9,223,372,036,854,775,807 (inclusive). 
Use this data type when you need a range of values wider than those provided by int. 
*/ 
package Literals; 

public class Literal_Long { 
    public static void main(String[] args) { 
     long a = 1; 
     long b = 2; 
     long min = -9223372036854775808; 
     long max = 9223372036854775807;//Inclusive 

     System.out.println(a); 
     System.out.println(b); 
     System.out.println(a + b); 
     System.out.println(min); 
     System.out.println(max); 
    } 
} 
+1

Sen 'Long.MIN_VALUE' ve' Long.MAX_VALUE' veya '1L << -1' ve kullanabilirsiniz' -1L >>> 1' –

cevap

54

Tüm sabit sayılar -2147483648 dahil 2147483647 değişir vardır varsayılan ints tarafından bulunmaktadır.

Kişisel değişmezleri nedenle bu onlar (yani eki L ile) long değişmezleri olduğunuzu belirtmek gerekir derlemek yapmak, bu aralığın dışındaki şunlardır:

java büyük harf L ve l küçük destekler Not olduğunu
long min = -9223372036854775808L; 
long max = 9223372036854775807L; 

, ama göründüğü için değilküçük l kullanmanızı tavsiye 1 bir benzeri:

long min = -9223372036854775808l; // confusing: looks like the last digit is a 1 
long max = 9223372036854775807l; // confusing: looks like the last digit is a 1 
bu, bir ASCII harfi L veya (Eli), L ile ekli olduğu takdirde değişmez, aynı

bir tamsayı içinJava Language Specification tür uzun olduğu; Aksi takdirde int türü (§4.2.1) 'dir.

+0

bilgiçlik taslayan olmak: Ayrıca küçük 'l kullanabilirsiniz '. – helpermethod

+8

@OliverWeiler söyleyebilirim, pedantic olmak için, ** olabilir ama ** bir küçük __l__ 'kullanabilirsiniz çünkü bir __1__ gibi görünüyor. – TC1

+0

Sadece kötü bir yazı tipi kullanırsanız 1 gibi görünür, ancak emin olun, neden karışıklık riski vardır. – Bladt

17

Derleyiciye uzun bir literal olduğunu bildirmek için L kullanmanız gerekir.

long min = -9223372036854775808L; 
long max = 9223372036854775807L;//Inclusive